From: Doug Kwan Date: Fri, 6 Jun 2014 22:29:11 +0000 (-0700) Subject: Add aarch64 support. X-Git-Tag: fio-2.1.10~5 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=78c8831e2ec211a293ccd8bd37c169719ca1ba4a Add aarch64 support. 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 Signed-off-by: Jens Axboe --- diff --git a/arch/arch-aarch64.h b/arch/arch-aarch64.h new file mode 100644 index 00000000..a6cfaf25 --- /dev/null +++ b/arch/arch-aarch64.h @@ -0,0 +1,35 @@ +#ifndef ARCH_AARCH64_H +#define ARCH_AARCH64_H + +#include +#include +#include +#include + +#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 diff --git a/arch/arch.h b/arch/arch.h index 31d96d40..0075f73d 100644 --- a/arch/arch.h +++ b/arch/arch.h @@ -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"