diff options
author | Edjunior Machado <emachado@linux.vnet.ibm.com> | 2013-05-23 10:06:24 -0500 |
---|---|---|
committer | Ryan S. Arnold <rsa@linux.vnet.ibm.com> | 2013-07-26 09:06:49 -0500 |
commit | 42b373ad467ba426610a358d90034bcf68abb15f (patch) | |
tree | 33da82702afb6a6a225a4eeab1fbdfa77c28df96 | |
parent | e934fb28368b5a36546c7faafab141fcd71172db (diff) | |
download | glibc-42b373ad467ba426610a358d90034bcf68abb15f.tar.gz glibc-42b373ad467ba426610a358d90034bcf68abb15f.tar.xz glibc-42b373ad467ba426610a358d90034bcf68abb15f.zip |
PowerPC: Add functions for shared resources hints.
(cherry picked from commit 9323d39baea2fb0cca3735136abe263eff405133)
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | manual/platform.texi | 24 | ||||
-rw-r--r-- | sysdeps/powerpc/sys/platform/ppc.h | 32 |
3 files changed, 63 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index a5e0b230c3..422a02d286 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-05-23 Edjunior Machado <emachado@linux.vnet.ibm.com> + + * sysdeps/powerpc/sys/platform/ppc.h: Add __ppc_yield, + __ppc_mdoio and __ppc_mdoom. + * manual/platform.texi: Document new functions __ppc_yield, + __ppc_mdoio and __ppc_mdoom. + 2013-05-22 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com> * sysdeps/unix/sysv/linux/bits/siginfo.h (siginfo_t): Add si_addr_lsb diff --git a/manual/platform.texi b/manual/platform.texi index e387ff4cc9..316b1f1f2d 100644 --- a/manual/platform.texi +++ b/manual/platform.texi @@ -34,3 +34,27 @@ This frequency is not related to the processor clock or the bus clock. It is also possible that this frequency is not constant. More information is available in @cite{Power ISA 2.06b - Book II - Section 5.2}. @end deftypefun + +The following functions provide hints about the usage of resources that are +shared with other processors. They can be used, for example, if a program +waiting on a lock intends to divert the shared resources to be used by other +processors. More information is available in @cite{Power ISA 2.06b - Book II - +Section 3.2}. + +@deftypefun {void} __ppc_yield (void) +Provide a hint that performance will probably be improved if shared resources +dedicated to the executing processor are released for use by other processors. +@end deftypefun + +@deftypefun {void} __ppc_mdoio (void) +Provide a hint that performance will probably be improved if shared resources +dedicated to the executing processor are released until all outstanding storage +accesses to caching-inhibited storage have been completed. +@end deftypefun + +@deftypefun {void} __ppc_mdoom (void) +Provide a hint that performance will probably be improved if shared resources +dedicated to the executing processor are released until all outstanding storage +accesses to cacheable storage for which the data is not in the cache have been +completed. +@end deftypefun diff --git a/sysdeps/powerpc/sys/platform/ppc.h b/sysdeps/powerpc/sys/platform/ppc.h index 58948e837a..d3ed6b9f23 100644 --- a/sysdeps/powerpc/sys/platform/ppc.h +++ b/sysdeps/powerpc/sys/platform/ppc.h @@ -50,4 +50,36 @@ __ppc_get_timebase (void) #endif } +/* The following functions provide hints about the usage of shared processor + resources, as defined in ISA 2.06 and newer. */ + +/* Provides a hint that performance will probably be improved if shared + resources dedicated to the executing processor are released for use by other + processors. */ +static inline void +__ppc_yield (void) +{ + __asm__ volatile ("or 27,27,27"); +} + +/* Provides a hint that performance will probably be improved if shared + resources dedicated to the executing processor are released until + all outstanding storage accesses to caching-inhibited storage have been + completed. */ +static inline void +__ppc_mdoio (void) +{ + __asm__ volatile ("or 29,29,29"); +} + +/* Provides a hint that performance will probably be improved if shared + resources dedicated to the executing processor are released until all + outstanding storage accesses to cacheable storage for which the data is not + in the cache have been completed. */ +static inline void +__ppc_mdoom (void) +{ + __asm__ volatile ("or 30,30,30"); +} + #endif /* sys/platform/ppc.h */ |