From 42b373ad467ba426610a358d90034bcf68abb15f Mon Sep 17 00:00:00 2001 From: Edjunior Machado Date: Thu, 23 May 2013 10:06:24 -0500 Subject: PowerPC: Add functions for shared resources hints. (cherry picked from commit 9323d39baea2fb0cca3735136abe263eff405133) --- ChangeLog | 7 +++++++ manual/platform.texi | 24 ++++++++++++++++++++++++ sysdeps/powerpc/sys/platform/ppc.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/ChangeLog b/ChangeLog index a5e0b230c3..422a02d286 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-05-23 Edjunior Machado + + * 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 * 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 */ -- cgit 1.4.1