Xenomai  3.1.2
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 
33 #if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
34 #include <asm/compiler.h>
35 #endif
36 
37 #include <asm/cmpxchg.h>
38 #include <asm/switch_to.h>
39 #include <asm/system_misc.h>
40 #include <asm/timex.h>
41 #include <asm/processor.h>
42 #include <asm/ipipe.h>
43 #include <asm/cacheflush.h>
44 #include <cobalt/kernel/assert.h>
45 
46 /* D-side always behaves as PIPT on AArch64 (see arch/arm64/include/asm/cachetype.h) */
47 #define xnarch_cache_aliasing() 0
48 
49 static inline __attribute_const__ unsigned long ffnz(unsigned long ul)
50 {
51  int __r;
52 
53  /* zero input is not valid */
54  XENO_WARN_ON(COBALT, ul == 0);
55 
56  __asm__ ("rbit\t%0, %1\n"
57  "clz\t%0, %0\n"
58  : "=r" (__r) : "r"(ul) : "cc");
59 
60  return __r;
61 }
62 
63 #include <asm-generic/xenomai/machine.h>
64 
65 #endif /* !_COBALT_ARM64_ASM_MACHINE_H */