• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #define nop		do { __asm__ __volatile__ ("yield"); } while (0)
12 #define read_barrier()	do { __sync_synchronize(); } while (0)
13 #define write_barrier()	do { __sync_synchronize(); } while (0)
14 
arch_ffz(unsigned long bitmask)15 static inline int arch_ffz(unsigned long bitmask)
16 {
17 	unsigned long count, reversed_bits;
18 	if (~bitmask == 0)	/* ffz() in lib/ffz.h does this. */
19 		return 63;
20 
21 	__asm__ __volatile__ ("rbit %1, %2\n"
22 			      "clz %0, %1\n" :
23 			      "=r"(count), "=&r"(reversed_bits) :
24 			      "r"(~bitmask));
25 	return count;
26 }
27 
28 #define ARCH_HAVE_FFZ
29 
30 #ifdef ARCH_HAVE_CRC_CRYPTO
31 #define ARCH_HAVE_ARM64_CRC_CRYPTO
32 #endif
33 
34 #endif
35