[PATCH] fio: fix some arch issues
authorJens Axboe <axboe@suse.de>
Tue, 8 Nov 2005 18:03:00 +0000 (19:03 +0100)
committerJens Axboe <axboe@suse.de>
Tue, 8 Nov 2005 18:03:00 +0000 (19:03 +0100)
arch-alpha.h [new file with mode: 0644]
arch-ia64.h [new file with mode: 0644]
arch-ppc.h [new file with mode: 0644]
arch-s390.h [new file with mode: 0644]
arch-x86.h [new file with mode: 0644]
arch-x86_64.h [new file with mode: 0644]
fio.c

diff --git a/arch-alpha.h b/arch-alpha.h
new file mode 100644 (file)
index 0000000..84eea86
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef ARCH_ALPHA_H
+#define ARCH_ALPHA_H
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                442
+#define __NR_ioprio_get                443
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64         413
+#endif
+
+#define nop    do { } while (0)
+
+#endif
diff --git a/arch-ia64.h b/arch-ia64.h
new file mode 100644 (file)
index 0000000..af9f649
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef ARCH_IA64_H
+#define ARCH_IA64_H
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                1274
+#define __NR_ioprio_get                1275
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64         1234
+#endif
+
+#define nop    asm volatile ("hint @pause" ::: "memory");
+
+#define ia64_popcnt(x)                                                 \
+({                                                                     \
+       unsigned long ia64_intri_res;                                   \
+       asm ("popcnt %0=%1" : "=r" (ia64_intri_res) : "r" (x));         \
+       ia64_intri_res;                                                 \
+})
+
+static inline unsigned long ffz(unsigned long bitmask)
+{
+       return ia64_popcnt(bitmask & (~bitmask - 1));
+}
+
+#endif
diff --git a/arch-ppc.h b/arch-ppc.h
new file mode 100644 (file)
index 0000000..e822027
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef ARCH_PPC_H
+#define ARCH_PPH_H
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                273
+#define __NR_ioprio_get                274
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64         233
+#endif
+
+#define nop    do { } while (0)
+
+static inline int __ilog2(unsigned long bitmask)
+{
+       int lz;
+
+       asm ("cntlzw %0,%1" : "=r" (lz) : "r" (bitmask));
+       return 31 - lz;
+}
+
+static inline int ffz(unsigned long bitmask)
+{
+       if ((bitmask = ~bitmask) == 0)
+               return 32;
+       return  __ilog2(bitmask & -bitmask);
+}
+
+#endif
diff --git a/arch-s390.h b/arch-s390.h
new file mode 100644 (file)
index 0000000..4616ed0
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef ARCH_S390_H
+#define ARCH_S390_H
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                282
+#define __NR_ioprio_get                283
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64         253
+#endif
+
+#define nop    asm volatile ("diag 0,0,68" : : : "memory")
+
+#endif
diff --git a/arch-x86.h b/arch-x86.h
new file mode 100644 (file)
index 0000000..39b77cc
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef ARCH_X86_H
+#define ARCH_X86_H
+
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                289
+#define __NR_ioprio_get                290
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64         250
+#endif
+
+#define nop    __asm__ __volatile__("rep;nop": : :"memory")
+
+static inline unsigned long ffz(unsigned long bitmask)
+{
+       __asm__("bsfl %1,%0" :"=r" (bitmask) :"r" (~bitmask));
+       return bitmask;
+}
+
+#endif
diff --git a/arch-x86_64.h b/arch-x86_64.h
new file mode 100644 (file)
index 0000000..aca1385
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef ARCH_X86_64_h
+#define ARCH_X86_64_h
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                251
+#define __NR_ioprio_get                252
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64         221
+#endif
+
+#define nop    __asm__ __volatile__("rep;nop": : :"memory")
+
+static inline unsigned long ffz(unsigned long bitmask)
+{
+       __asm__("bsfq %1,%0" :"=r" (bitmask) :"r" (~bitmask));
+       return bitmask;
+}
+
+
+#endif
diff --git a/fio.c b/fio.c
index 038c18c7e01a4026516bfe51d2482d2fbb4f4c2e..ab5570a58d619448843dd4d4cec46b00fa006dea 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -42,7 +42,6 @@
 #include <sys/ioctl.h>
 #include <asm/unistd.h>
 #include <asm/types.h>
-#include <asm/bitops.h>
 
 #include "arch.h"
 #include "list.h"
@@ -569,7 +568,7 @@ static void __usec_sleep(int usec)
 
        gettimeofday(&start, NULL);
        while (utime_since_now(&start) < usec)
-                __asm__ __volatile__("rep;nop": : :"memory");
+               nop;
 }
 
 static void usec_sleep(int usec)