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-05-23 10:32:47 -0500 |
commit | 9323d39baea2fb0cca3735136abe263eff405133 (patch) | |
tree | 2e0dbe5bd8e69d0e9193c13230b26924e294866d | |
parent | 7b2991daea4fc20945a48c2d5c7fa200218cfd4e (diff) | |
download | glibc-9323d39baea2fb0cca3735136abe263eff405133.tar.gz glibc-9323d39baea2fb0cca3735136abe263eff405133.tar.xz glibc-9323d39baea2fb0cca3735136abe263eff405133.zip |
PowerPC: Add functions for shared resources hints.
-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 665b0a092d..a156e22ae6 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 Carlos O'Donell <carlos@redhat.com> * elf/ldconfig.c (is_hwcap_platform): Make comments full setences. 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 740831e677..833f3d8480 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 */ |