aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/tst-set_ppr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/tst-set_ppr.c')
-rw-r--r--sysdeps/powerpc/tst-set_ppr.c102
1 files changed, 0 insertions, 102 deletions
diff --git a/sysdeps/powerpc/tst-set_ppr.c b/sysdeps/powerpc/tst-set_ppr.c
deleted file mode 100644
index df8dda78e8..0000000000
--- a/sysdeps/powerpc/tst-set_ppr.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Test the implementation of __ppc_set_ppr_* functions.
- Copyright (C) 2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <sys/auxv.h>
-
-#include <sys/platform/ppc.h>
-
-#include <support/test-driver.h>
-
-#ifdef __powerpc64__
- typedef uint64_t ppr_t;
-# define MFPPR "mfppr"
- /* The thread priority value is obtained from bits 11:13. */
-# define EXTRACT_THREAD_PRIORITY(x) ((x >> 50) & 7)
-#else
- typedef uint32_t ppr_t;
-# define MFPPR "mfppr32"
- /* For 32-bit, the upper 32 bits of the Program Priority Register (PPR)
- are used, so the thread priority value is obtained from bits 43:46. */
-# define EXTRACT_THREAD_PRIORITY(x) ((x >> 18) & 7)
-#endif /* !__powerpc64__ */
-
-/* Read the thread priority value set in the PPR. */
-static __inline__ ppr_t
-get_thread_priority (void)
-{
- /* Read the PPR. */
- ppr_t ppr;
- asm volatile (MFPPR" %0" : "=r"(ppr));
- /* Return the thread priority value. */
- return EXTRACT_THREAD_PRIORITY (ppr);
-}
-
-/* Check the thread priority bits of PPR are set as expected. */
-uint8_t
-check_thread_priority (uint8_t expected)
-{
- ppr_t actual = get_thread_priority ();
-
- if (actual != expected)
- {
- printf ("FAIL: Expected %"PRIu8" got %"PRIuMAX".\n", expected,
- (uintmax_t) actual);
- return 1;
- }
- printf ("PASS: Thread priority set to %"PRIu8" correctly.\n", expected);
- return 0;
-}
-
-/* The Power ISA 2.06 allows the following thread priorities for any
- problem state program: low (2), medium low (3), and medium (4).
- Power ISA 2.07b added very low (1).
- Check whether the values set by __ppc_set_ppr_* are correct. */
-static int
-do_test (void)
-{
- /* Check for the minimum required Power ISA to run these tests. */
- if ((getauxval (AT_HWCAP) & PPC_FEATURE_ARCH_2_06) == 0)
- {
- printf ("Requires an environment that implements the Power ISA version"
- " 2.06 or greater.\n");
- return EXIT_UNSUPPORTED;
- }
-
- uint8_t rc = 0;
-
-#ifdef _ARCH_PWR8
- __ppc_set_ppr_very_low ();
- rc |= check_thread_priority (1);
-#endif /* _ARCH_PWR8 */
-
- __ppc_set_ppr_low ();
- rc |= check_thread_priority (2);
-
- __ppc_set_ppr_med_low ();
- rc |= check_thread_priority (3);
-
- __ppc_set_ppr_med ();
- rc |= check_thread_priority (4);
-
- return rc;
-}
-
-#include <support/test-driver.c>