Xenomai  3.1
machine.h
1 
23 #ifndef _COBALT_ARM64_ASM_MACHINE_H
24 #define _COBALT_ARM64_ASM_MACHINE_H
25 
26 #include <linux/version.h>
27 #include <asm/byteorder.h>
28 
29 #define XNARCH_HOST_TICK_IRQ __ipipe_hrtimer_irq
30 
31 #include <asm/barrier.h>
32 #include <asm/compiler.h>
33 #include <asm/cmpxchg.h>
34 #include <asm/switch_to.h>
35 #include <asm/system_misc.h>
36 #include <asm/timex.h>
37 #include <asm/processor.h>
38 #include <asm/ipipe.h>
39 #include <asm/cacheflush.h>
40 #include <cobalt/kernel/assert.h>
41 
42 /* D-side always behaves as PIPT on AArch64 (see arch/arm64/include/asm/cachetype.h) */
43 #define xnarch_cache_aliasing() 0
44 
45 static inline __attribute_const__ unsigned long ffnz(unsigned long ul)
46 {
47  int __r;
48 
49  /* zero input is not valid */
50  XENO_WARN_ON(COBALT, ul == 0);
51 
52  __asm__ ("rbit\t%0, %1\n"
53  "clz\t%0, %0\n"
54  : "=r" (__r) : "r"(ul) : "cc");
55 
56  return __r;
57 }
58 
59 #include <asm-generic/xenomai/machine.h>
60 
61 #endif /* !_COBALT_ARM64_ASM_MACHINE_H */