mirror of git://sourceware.org/git/glibc.git
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.
This commit is contained in:
parent
1f3be1988b
commit
1747fcda49
|
@ -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>
|
2015-08-19 Wilco Dijkstra <wdijkstr@arm.com>
|
||||||
|
|
||||||
* string/stpncpy.c (stpncpy): Improve performance using
|
* string/stpncpy.c (stpncpy): Improve performance using
|
||||||
|
|
|
@ -97,3 +97,21 @@ Set the Program Priority Register to low value.
|
||||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||||
Set the Program Priority Register to medium low value.
|
Set the Program Priority Register to medium low value.
|
||||||
@end deftypefun
|
@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
|
||||||
|
|
|
@ -112,4 +112,35 @@ __ppc_set_ppr_low (void)
|
||||||
__asm__ volatile ("or 1,1,1");
|
__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 */
|
#endif /* sys/platform/ppc.h */
|
||||||
|
|
Loading…
Reference in New Issue