1 #ifndef __LUNAIX_AA64_MSRS_H
2 #define __LUNAIX_AA64_MSRS_H
4 #include <lunaix/compiler.h>
6 #define __sr_encode(op0, op1, crn, crm, op2) \
7 s##op0##_##op1##_c##crn##_c##crm##_##op2
9 #define SCTLR_EL1 __sr_encode(3, 0, 1, 0, 0)
10 #define TCR_EL1 __sr_encode(3, 0, 2, 0, 2)
11 #define TTBR0_EL1 __sr_encode(3, 0, 2, 0, 0)
12 #define TTBR1_EL1 __sr_encode(3, 0, 2, 0, 1)
13 #define VBAR_EL1 __sr_encode(3, 0, 12, 0, 1)
14 #define CurrentEL __sr_encode(3, 0, 4, 2, 2)
15 #define ELR_E1 __sr_encode(3, 0, 4, 0, 1)
16 #define SPSel __sr_encode(3, 0, 4, 2, 0)
17 #define SPSR_EL1 __sr_encode(3, 0, 4, 0, 0)
18 #define DAIF_EL1 __sr_encode(3, 3, 4, 2, 1)
19 #define ALLINT_EL1 __sr_encode(3, 0, 4, 3, 0)
20 #define SP_EL0 __sr_encode(3, 0, 4, 1, 0)
21 #define SP_EL1 __sr_encode(3, 4, 4, 1, 0)
23 #define read_sysreg(reg) \
24 ({ unsigned long _x; \
25 asm ("mrs %0, " stringify(reg):"=r"(_x)); \
29 #define set_sysreg(reg, v) \
30 ({ unsigned long _x = v; \
31 asm ("msr " stringify(reg) ", %0"::"r"(_x)); \
35 #define SCTRL_SPINTMASK (1UL << 62)
36 #define SCTRL_NMI (1UL << 61)
37 #define SCTRL_EE (1UL << 25)
38 #define SCTRL_E0E (1UL << 24)
39 #define SCTRL_WXN (1UL << 19)
40 #define SCTRL_nAA (1UL << 6)
41 #define SCTRL_SA0 (1UL << 4)
42 #define SCTRL_SA (1UL << 3)
43 #define SCTRL_A (1UL << 1)
44 #define SCTRL_M (1UL << 0)
46 #define TCR_DS (1UL << 59)
47 #define TCR_E0PD1 (1UL << 56)
48 #define TCR_E0PD0 (1UL << 55)
49 #define TCR_TBID1 (1UL << 52)
50 #define TCR_TBID0 (1UL << 51)
51 #define TCR_HPD1 (1UL << 42)
52 #define TCR_HPD0 (1UL << 41)
53 #define TCR_HD (1UL << 40)
54 #define TCR_HA (1UL << 39)
55 #define TCR_TBI1 (1UL << 38)
56 #define TCR_TBI0 (1UL << 37)
57 #define TCR_AS (1UL << 36)
59 #define TCR_G4K (0b01)
60 #define TCR_G16K (0b10)
61 #define TCR_G64K (0b11)
63 #define TCR_SHNS (0b01)
64 #define TCR_SHOS (0b10)
65 #define TCR_SHIS (0b11)
67 #define TCR_TG1(g) (((g) & 0b11) << 30)
68 #define TCR_TG0(g) (((g) & 0b11) << 14)
70 #define TCR_T1SZ(sz) (((sz) & 0b111111) << 16)
71 #define TCR_T0SZ(sz) (((sz) & 0b111111))
73 #define TCR_EPD1 (1UL << 23)
74 #define TCR_EPD0 (1UL << 7)
75 #define TCR_A1 (1UL << 22)
77 #endif /* __LUNAIX_AA64_MSRS_H */