From mboxrd@z Thu Jan 1 00:00:00 1970 From: tuliom@linux.vnet.ibm.com (Tulio Magno Quites Machado Filho) Date: Thu, 8 Sep 2011 13:02:32 -0300 Subject: [ltt-dev] [URCU PATCH] Optimize caa_get_cycles() for PowerPC64 Message-ID: <1315497752-4742-1-git-send-email-tuliom@linux.vnet.ibm.com> Make caa_get_cycles() read from the Time Base register with only 1 instruction. Signed-off-by: Tulio Magno Quites Machado Filho --- urcu/arch/ppc.h | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/urcu/arch/ppc.h b/urcu/arch/ppc.h index d7317bb..2b606d0 100644 --- a/urcu/arch/ppc.h +++ b/urcu/arch/ppc.h @@ -48,10 +48,20 @@ extern "C" { rval; \ }) +#define mftb() \ + ({ \ + unsigned long long rval; \ + asm volatile("mftb %0" : "=r" (rval)); \ + rval; \ + }) + typedef unsigned long long cycles_t; static inline cycles_t caa_get_cycles (void) { +#ifdef __powerpc64__ + return (cycles_t) mftb(); +#else long h, l; for (;;) { @@ -62,6 +72,7 @@ static inline cycles_t caa_get_cycles (void) if (mftbu() == h) return (((cycles_t) h) << 32) + l; } +#endif } #ifdef __cplusplus -- 1.7.4.4