This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] PowerPC: Use __builtin_ppc_get_timebase when building with GCC >= 4.8


Adapts __ppc_get_timebase to the upcoming GCC 4.8 that provides
__builtin_ppc_get_timebase.
Building glibc with previous versions of GCC will continue to use the
internal implementation.

2012-10-23  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>

	* sysdeps/powerpc/sys/platform/ppc.h (__ppc_get_timebase): Use
	__builtin_ppc_get_timebase when building with GCC >= 4.8 instead
	of the internal implementation.
---
 sysdeps/powerpc/sys/platform/ppc.h |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/sysdeps/powerpc/sys/platform/ppc.h b/sysdeps/powerpc/sys/platform/ppc.h
index 3780f57..cdaa242 100644
--- a/sysdeps/powerpc/sys/platform/ppc.h
+++ b/sysdeps/powerpc/sys/platform/ppc.h
@@ -26,13 +26,17 @@
 static inline uint64_t
 __ppc_get_timebase (void)
 {
-#ifdef __powerpc64__
+#if defined __GNUC__ && defined __GNUC_MINOR__		\
+  && (__GNUC__ << 16) + __GNUC_MINOR__ >= (4 << 16) + 8
+  return __builtin_ppc_get_timebase ();
+#else
+# ifdef __powerpc64__
   uint64_t __tb;
   /* "volatile" is necessary here, because the user expects this assembly
      isn't moved after an optimization.  */
   __asm__ volatile ("mfspr %0, 268" : "=r" (__tb));
   return __tb;
-#else  /* not __powerpc64__ */
+# else  /* not __powerpc64__ */
   uint32_t __tbu, __tbl, __tmp; \
   __asm__ volatile ("0:\n\t"
 		    "mftbu %0\n\t"
@@ -42,7 +46,8 @@ __ppc_get_timebase (void)
 		    "bne- 0b"
 		    : "=r" (__tbu), "=r" (__tbl), "=r" (__tmp));
   return (((uint64_t) __tbu << 32) | __tbl);
-#endif  /* not __powerpc64__ */
+# endif  /* not __powerpc64__ */
+#endif
 }
 
 #endif  /* sys/platform/ppc.h */
-- 
1.7.7.6


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]