Add aarch64 support.
authorDoug Kwan <dougkwan@google.com>
Fri, 6 Jun 2014 22:29:11 +0000 (15:29 -0700)
committerJens Axboe <axboe@fb.com>
Mon, 9 Jun 2014 03:17:49 +0000 (21:17 -0600)
This patch adds support for aarch64 for fio.  This is tested by building
FIO on an aarch64 Ubuntu system and running some samepls.

Signed-off-by: Doug Kwan <dougkwan@google.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
arch/arch-aarch64.h [new file with mode: 0644]
arch/arch.h

diff --git a/arch/arch-aarch64.h b/arch/arch-aarch64.h
new file mode 100644 (file)
index 0000000..a6cfaf2
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef ARCH_AARCH64_H
+#define ARCH_AARCH64_H
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#define FIO_ARCH       (arch_aarch64)
+
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set                30
+#define __NR_ioprio_get                31
+#endif
+
+#define nop            do { __asm__ __volatile__ ("yield"); } while (0)
+#define read_barrier() do { __sync_synchronize(); } while (0)
+#define write_barrier()        do { __sync_synchronize(); } while (0)
+
+static inline int arch_ffz(unsigned long bitmask)
+{
+       unsigned long count, reversed_bits;
+       if (~bitmask == 0)      /* ffz() in lib/ffz.h does this. */
+               return 63;
+
+       __asm__ __volatile__ ("rbit %1, %2\n"
+                             "clz %0, %1\n" : 
+                             "=r"(count), "=&r"(reversed_bits) :
+                             "r"(~bitmask));
+       return count;
+}
+
+#define ARCH_HAVE_FFZ
+
+#endif
index 31d96d4..0075f73 100644 (file)
@@ -14,6 +14,7 @@ enum {
        arch_sh,
        arch_hppa,
        arch_mips,
+       arch_aarch64,
 
        arch_generic,
 
@@ -53,6 +54,8 @@ extern unsigned long arch_flags;
 #include "arch-sh.h"
 #elif defined(__hppa__)
 #include "arch-hppa.h"
+#elif defined(__aarch64__)
+#include "arch-aarch64.h"
 #else
 #warning "Unknown architecture, attempting to use generic model."
 #include "arch-generic.h"