1 #ifndef __LUNAIX_AA64_MSRS_H
2 #define __LUNAIX_AA64_MSRS_H
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)
15 #define SPSR_EL1 __sr_encode(3, 0, 4, 0, 0)
16 #define SPSR_EL2 __sr_encode(3, 4, 4, 0, 0)
17 #define SPSR_EL3 __sr_encode(3, 6, 4, 0, 0)
19 #define DAIF_EL1 __sr_encode(3, 3, 4, 2, 1)
20 #define ALLINT_EL1 __sr_encode(3, 0, 4, 3, 0)
21 #define SP_EL0 __sr_encode(3, 0, 4, 1, 0)
22 #define SP_EL1 __sr_encode(3, 4, 4, 1, 0)
24 #define FAR_EL1 __sr_encode(3, 0, 6, 0, 0)
26 #define ID_AA64PFR0_EL1 __sr_encode(3, 0, 0, 4, 0)
29 #define read_sysreg(reg) \
30 ({ unsigned long _x; \
31 asm ("mrs %0, " stringify(reg):"=r"(_x)); \
35 #define set_sysreg(reg, v) \
36 ({ unsigned long _x = v; \
37 asm ("msr " stringify(reg) ", %0"::"r"(_x)); \
41 #define SCTRL_SPINTMASK (1UL << 62)
42 #define SCTRL_NMI (1UL << 61)
43 #define SCTRL_EE (1UL << 25)
44 #define SCTRL_E0E (1UL << 24)
45 #define SCTRL_WXN (1UL << 19)
46 #define SCTRL_nAA (1UL << 6)
47 #define SCTRL_SA0 (1UL << 4)
48 #define SCTRL_SA (1UL << 3)
49 #define SCTRL_A (1UL << 1)
50 #define SCTRL_M (1UL << 0)
52 #define sysreg_flagging(reg, set, unset) \
55 _x = read_sysreg(reg); \
56 _x = (_x & ~(unset)) | (set); \
57 set_sysreg(reg, _x); \
62 #endif /* __LUNAIX_AA64_MSRS_H */