diff options
author | Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com> | 2015-08-10 10:58:12 -0300 |
---|---|---|
committer | Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> | 2015-08-19 17:43:26 -0300 |
commit | 1747fcda4902a3b46183d93fb16ed9b436b2608b (patch) | |
tree | ae11b87990c3cdd3e25b2533dd60a2a2dac16bb0 | |
parent | 1f3be1988bce6756ad8cd37386eedef95aa0f2ed (diff) | |
download | glibc-1747fcda4902a3b46183d93fb16ed9b436b2608b.tar glibc-1747fcda4902a3b46183d93fb16ed9b436b2608b.tar.gz glibc-1747fcda4902a3b46183d93fb16ed9b436b2608b.tar.bz2 glibc-1747fcda4902a3b46183d93fb16ed9b436b2608b.zip |
PowerPC: Extend Program Priority Register support
This patch adds extra inline functions to change the Program Priority
Register from ISA 2.07.
2015-08-19 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
* sysdeps/powerpc/sys/platform/ppc.h (__ppc_set_ppr_med_high,
__ppc_set_ppr_very_low): New functions.
* manual/platform.texi: Add documentation about
__ppc_set_ppr_med_high and __ppc_set_ppr_very_low.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | manual/platform.texi | 18 | ||||
-rw-r--r-- | sysdeps/powerpc/sys/platform/ppc.h | 31 |
3 files changed, 56 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2015-08-19 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com> + + * sysdeps/powerpc/sys/platform/ppc.h (__ppc_set_ppr_med_high, + __ppc_set_ppr_very_low): New functions. + * manual/platform.texi: Add documentation about + __ppc_set_ppr_med_high and __ppc_set_ppr_very_low. + 2015-08-19 Wilco Dijkstra <wdijkstr@arm.com> * string/stpncpy.c (stpncpy): Improve performance using diff --git a/manual/platform.texi b/manual/platform.texi index 872e32ecb3..cb166641fb 100644 --- a/manual/platform.texi +++ b/manual/platform.texi @@ -97,3 +97,21 @@ Set the Program Priority Register to low value. @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} Set the Program Priority Register to medium low value. @end deftypefun + +Power ISA 2.07 extends the priorities that can be set to the Program Priority +Register (PPR). The following functions implement the new priority levels: +very low and medium high. + +@deftypefun {void} __ppc_set_ppr_very_low (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to very low value. +@end deftypefun + +@deftypefun {void} __ppc_set_ppr_med_high (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to medium high value. The medium high +priority is privileged and may only be set during certain time intervals by +problem-state programs. If the program priority is medium high when the time +interval expires or if an attempt is made to set the priority to medium high +when it is not allowed, the priority is set to medium. +@end deftypefun diff --git a/sysdeps/powerpc/sys/platform/ppc.h b/sysdeps/powerpc/sys/platform/ppc.h index 3febb61e61..2594606504 100644 --- a/sysdeps/powerpc/sys/platform/ppc.h +++ b/sysdeps/powerpc/sys/platform/ppc.h @@ -112,4 +112,35 @@ __ppc_set_ppr_low (void) __asm__ volatile ("or 1,1,1"); } +/* Power ISA 2.07 (Book II, Chapter 3) extends the priorities that can be set + to the Program Priority Register (PPR). The form 'or Rx,Rx,Rx' is used to + modify the PRI field of the PPR, the same way as described above. + The new priority levels are: + Rx = 31 (very low) + Rx = 5 (medium high) + Any program can set the priority to very low, low, medium low, and medium, + as these are unprivileged. + The medium high priority, on the other hand, is privileged, and may only be + set during certain time intervals by problem-state programs. If the program + priority is medium high when the time interval expires or if an attempt is + made to set the priority to medium high when it is not allowed, the PRI + field is set to medium. + */ + +#ifdef _ARCH_PWR8 + +static inline void +__ppc_set_ppr_very_low (void) +{ + __asm__ volatile ("or 31,31,31"); +} + +static inline void +__ppc_set_ppr_med_high (void) +{ + __asm__ volatile ("or 5,5,5"); +} + +#endif + #endif /* sys/platform/ppc.h */ |