On 07/26 10:47:44, Maxim Uvarov wrote: > On 07/26/16 05:56, Brian Brooks wrote: > > Signed-off-by: Brian Brooks <brian.bro...@linaro.org> > > --- > > platform/linux-generic/arch/powerpc/odp_cpu_arch.c | 26 > > ++++++++-------------- > > 1 file changed, 9 insertions(+), 17 deletions(-) > > > > diff --git a/platform/linux-generic/arch/powerpc/odp_cpu_arch.c > > b/platform/linux-generic/arch/powerpc/odp_cpu_arch.c > > index 109dd93..346c170 100644 > > --- a/platform/linux-generic/arch/powerpc/odp_cpu_arch.c > > +++ b/platform/linux-generic/arch/powerpc/odp_cpu_arch.c > > @@ -14,25 +14,17 @@ > > #include <odp/api/system_info.h> > > #include <odp_debug_internal.h> > > -#define GIGA 1000000000 > > - > > uint64_t odp_cpu_cycles(void) > > { > > - struct timespec time; > > - uint64_t sec, ns, hz, cycles; > > - int ret; > > - > > - ret = clock_gettime(CLOCK_MONOTONIC_RAW, &time); > > - > > - if (ret != 0) > > - ODP_ABORT("clock_gettime failed\n"); > > - > > - hz = odp_cpu_hz_max(); > > - sec = (uint64_t)time.tv_sec; > > - ns = (uint64_t)time.tv_nsec; > > +#if defined(__powerpc__) || defined(__ppc__) > > + uint64_t tbl, tbu0, tbu1; > > - cycles = sec * hz; > > - cycles += (ns * hz) / GIGA; > > + do { > > + __asm__ volatile("mftbu %0" : "=r"(tbu0)); > > + __asm__ volatile("mftb %0" : "=r"(tbl)); > > + __asm__ volatile("mftbu %0" : "=r"(tbu1)); > > + } while (tbu0 != tbu1); > > - return cycles; > > + return (tbu0 << 32) | tbl; > > +#endif > return for non ifdef case is missing. Or there has to be #else > ODP_STATIC_ASSERT("add ifdef for new case") > > Maxim.
Can we agree: int foo() { #if defined(__target__) return 42; #else #error Add support for your target in this file. #endif } is preferred over static assertion or returning a zero value?