This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] PowerPC: Add functions for shared resources hints
Thanks for the feedback. I've removed the testcase since it doesn't make sense
anymore. Here's the update:
ChangeLog
2012-11-27 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.
---
manual/platform.texi | 24 ++++++++++++++++++++++++
sysdeps/powerpc/sys/platform/ppc.h | 32 ++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/manual/platform.texi b/manual/platform.texi
index e387ff4..316b1f1 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 58948e8..d3ed6b9 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 */
--
1.7.1