X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=arch%2Farch-ppc.h;h=e73093df86f5f25ed68c44e4e3662d1ab3210891;hp=978313196d4c885690d47a7a6a67542b523b6d60;hb=0f78b22cb13d2e59b134ee80bafa669679504bd6;hpb=db6defc77508f5bf217f0a6768d13426eee21119 diff --git a/arch/arch-ppc.h b/arch/arch-ppc.h index 97831319..e73093df 100644 --- a/arch/arch-ppc.h +++ b/arch/arch-ppc.h @@ -1,7 +1,7 @@ #ifndef ARCH_PPC_H #define ARCH_PPH_H -#define ARCH (arch_ppc) +#define FIO_ARCH (arch_ppc) #ifndef __NR_ioprio_set #define __NR_ioprio_set 273 @@ -21,13 +21,13 @@ #define nop do { } while (0) #ifdef __powerpc64__ -#define read_barrier() \ - __asm__ __volatile__ ("lwsync" : : : "memory") +#define read_barrier() __asm__ __volatile__ ("lwsync" : : : "memory") #else -#define read_barrier() \ - __asm__ __volatile__ ("sync" : : : "memory") +#define read_barrier() __asm__ __volatile__ ("sync" : : : "memory") #endif +#define write_barrier() __asm__ __volatile__ ("sync" : : : "memory") + static inline int __ilog2(unsigned long bitmask) { int lz; @@ -36,11 +36,37 @@ static inline int __ilog2(unsigned long bitmask) return 31 - lz; } -static inline int fio_ffz(unsigned long bitmask) +static inline int arch_ffz(unsigned long bitmask) { if ((bitmask = ~bitmask) == 0) return 32; return __ilog2(bitmask & -bitmask); } +static inline unsigned long long get_cpu_clock(void) +{ + unsigned int tbl, tbu0, tbu1; + unsigned long long ret; + + do { + __asm__ __volatile__ ("mftbu %0" : "=r"(tbu0)); + __asm__ __volatile__ ("mftb %0" : "=r"(tbl) ); + __asm__ __volatile__ ("mftbu %0" : "=r"(tbu1)); + } while (tbu0 != tbu1); + + ret = (((unsigned long long)tbu0) << 32) | tbl; + return ret; +} + +#define ARCH_HAVE_INIT +extern int tsc_reliable; +static inline int arch_init(char *envp[]) +{ + tsc_reliable = 1; + return 0; +} + +#define ARCH_HAVE_FFZ +#define ARCH_HAVE_CPU_CLOCK + #endif