Add aarch64 support.
[fio.git] / arch / arch-aarch64.h
CommitLineData
78c8831e
DK
1#ifndef ARCH_AARCH64_H
2#define ARCH_AARCH64_H
3
4#include <unistd.h>
5#include <stdlib.h>
6#include <sys/types.h>
7#include <sys/wait.h>
8
9#define FIO_ARCH (arch_aarch64)
10
11#ifndef __NR_ioprio_set
12#define __NR_ioprio_set 30
13#define __NR_ioprio_get 31
14#endif
15
16#define nop do { __asm__ __volatile__ ("yield"); } while (0)
17#define read_barrier() do { __sync_synchronize(); } while (0)
18#define write_barrier() do { __sync_synchronize(); } while (0)
19
20static inline int arch_ffz(unsigned long bitmask)
21{
22 unsigned long count, reversed_bits;
23 if (~bitmask == 0) /* ffz() in lib/ffz.h does this. */
24 return 63;
25
26 __asm__ __volatile__ ("rbit %1, %2\n"
27 "clz %0, %1\n" :
28 "=r"(count), "=&r"(reversed_bits) :
29 "r"(~bitmask));
30 return count;
31}
32
33#define ARCH_HAVE_FFZ
34
35#endif