From mboxrd@z Thu Jan 1 00:00:00 1970 From: compudj@krystal.dyndns.org (Mathieu Desnoyers) Date: Fri, 9 Sep 2011 01:34:56 -0400 Subject: [ltt-dev] [URCU PATCH] Optimize caa_get_cycles() for PowerPC64 In-Reply-To: <1315497752-4742-1-git-send-email-tuliom@linux.vnet.ibm.com> References: <1315497752-4742-1-git-send-email-tuliom@linux.vnet.ibm.com> Message-ID: * Tulio Magno Quites Machado Filho (tuliom at linux.vnet.ibm.com) wrote: > Make caa_get_cycles() read from the Time Base register with only 1 instruction. Merged, I did a small coding style change to the patch, turning the #if/#else/#endif into multiple function implementations rather than affecting the cody of the same function. Thanks! Mathieu > > 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 > > > _______________________________________________ > ltt-dev mailing list > ltt-dev at lists.casi.polymtl.ca > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com