1 #ifndef ARCH_S390_H 2 #define ARCH_S390_H 3 4 #define FIO_ARCH (arch_s390) 5 6 #ifndef __NR_ioprio_set 7 #define __NR_ioprio_set 282 8 #define __NR_ioprio_get 283 9 #endif 10 11 #ifndef __NR_fadvise64 12 #define __NR_fadvise64 253 13 #endif 14 15 #ifndef __NR_sys_splice 16 #define __NR_sys_splice 306 17 #define __NR_sys_tee 308 18 #define __NR_sys_vmsplice 309 19 #endif 20 21 #define nop asm volatile("nop" : : : "memory") 22 #define read_barrier() asm volatile("bcr 15,0" : : : "memory") 23 #define write_barrier() asm volatile("bcr 15,0" : : : "memory") 24 get_cpu_clock(void)25static inline unsigned long long get_cpu_clock(void) 26 { 27 unsigned long long clk; 28 29 #ifdef CONFIG_S390_Z196_FACILITIES 30 /* 31 * Fio needs monotonic (never lower), but not strict monotonic (never 32 * the same) so store clock fast is enough. 33 */ 34 __asm__ __volatile__("stckf %0" : "=Q" (clk) : : "cc"); 35 #else 36 __asm__ __volatile__("stck %0" : "=Q" (clk) : : "cc"); 37 #endif 38 return clk>>12; 39 } 40 41 #define ARCH_CPU_CLOCK_CYCLES_PER_USEC 1 42 #define ARCH_HAVE_CPU_CLOCK 43 #undef ARCH_CPU_CLOCK_WRAPS 44 45 #define ARCH_HAVE_INIT 46 extern int tsc_reliable; arch_init(char * envp[])47static inline int arch_init(char *envp[]) 48 { 49 tsc_reliable = 1; 50 return 0; 51 } 52 53 #endif 54