fix compilation issues in aarch64 ports
[lunaix-os.git] / lunaix-os / arch / aarch64 / includes / asm / aa64_msrs.h
1 #ifndef __LUNAIX_AA64_MSRS_H
2 #define __LUNAIX_AA64_MSRS_H
3
4 #include "aa64_asm.h"
5
6 #define SCTLR_EL1       __sr_encode(3, 0,  1,  0, 0)
7 #define TCR_EL1         __sr_encode(3, 0,  2,  0, 2)
8 #define TTBR0_EL1       __sr_encode(3, 0,  2,  0, 0)
9 #define TTBR1_EL1       __sr_encode(3, 0,  2,  0, 1)
10 #define VBAR_EL1        __sr_encode(3, 0, 12,  0, 1)
11 #define CurrentEL       __sr_encode(3, 0,  4,  2, 2)
12 #define ELR_E1          __sr_encode(3, 0,  4,  0, 1)
13 #define SPSel           __sr_encode(3, 0,  4,  2, 0)
14 #define SPSR_EL1        __sr_encode(3, 0,  4,  0, 0)
15 #define DAIF_EL1        __sr_encode(3, 3,  4,  2, 1)
16 #define ALLINT_EL1      __sr_encode(3, 0,  4,  3, 0)
17 #define SP_EL0          __sr_encode(3, 0,  4,  1, 0)
18 #define SP_EL1          __sr_encode(3, 4,  4,  1, 0)
19
20 #ifndef __ASM__
21 #define read_sysreg(reg)                                    \
22         ({  unsigned long _x;                               \
23             asm ("mrs %0, " stringify(reg):"=r"(_x));       \
24             _x;                                             \
25         })
26
27 #define set_sysreg(reg, v)                                  \
28         ({  unsigned long _x = v;                           \
29             asm ("msr " stringify(reg) ", %0"::"r"(_x));    \
30             _x;                                             \
31         })
32
33 #define SCTRL_SPINTMASK     (1UL << 62)
34 #define SCTRL_NMI           (1UL << 61)
35 #define SCTRL_EE            (1UL << 25)
36 #define SCTRL_E0E           (1UL << 24)
37 #define SCTRL_WXN           (1UL << 19)
38 #define SCTRL_nAA           (1UL << 6)
39 #define SCTRL_SA0           (1UL << 4)
40 #define SCTRL_SA            (1UL << 3)
41 #define SCTRL_A             (1UL << 1)
42 #define SCTRL_M             (1UL << 0)
43
44 #define sysreg_flagging(reg, set, unset)                    \
45         ({                                                  \
46             unsigned long _x;                               \
47             _x = read_sysreg(reg);                          \
48             _x = (_x & ~(unset)) | (set);                   \
49             set_sysreg(reg, _x);                            \
50             _x;                                             \
51         })
52
53 #endif
54 #endif /* __LUNAIX_AA64_MSRS_H */