From: Tulio Magno Quites Machado Filho Date: Fri, 2 Nov 2012 16:20:39 +0000 (-0500) Subject: Direct __ppc_get_timebase to __builtin_ppc_get_timebase for GCC 4.8+. X-Git-Tag: upstream/2.16.90~285 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d7d08bdedeecf168ef58c7e2bdbb4c39c1939aba;p=platform%2Fupstream%2Fglibc.git Direct __ppc_get_timebase to __builtin_ppc_get_timebase for GCC 4.8+. Adapts __ppc_get_timebase to the upcoming GCC 4.8 that provides __builtin_ppc_get_timebase. Building applicationns with previous versions of GCC will continue to use the internal implementation. --- diff --git a/ChangeLog b/ChangeLog index 5dad3dc..d85ffee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-11-02 Tulio Magno Quites Machado Filho + + * 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. + 2012-11-02 Joseph Myers * include/sys/syslog.h [_ISOMAC]: Disable all contents of file diff --git a/sysdeps/powerpc/sys/platform/ppc.h b/sysdeps/powerpc/sys/platform/ppc.h index 3780f57..58948e8 100644 --- a/sysdeps/powerpc/sys/platform/ppc.h +++ b/sysdeps/powerpc/sys/platform/ppc.h @@ -19,6 +19,7 @@ #ifndef _SYS_PLATFORM_PPC_H #define _SYS_PLATFORM_PPC_H 1 +#include #include #include @@ -26,13 +27,16 @@ static inline uint64_t __ppc_get_timebase (void) { -#ifdef __powerpc64__ +#if __GNUC_PREREQ (4, 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 */