aa64: finalise context switch, page fault handler and syscall
[lunaix-os.git] / lunaix-os / arch / aarch64 / includes / asm / aa64_spsr.h
1 #ifndef __LUNAIX_AA64_SPSR_H
2 #define __LUNAIX_AA64_SPSR_H
3
4 #include <lunaix/types.h>
5 #include <lunaix/bits.h>
6
7 #define SPSR_EL          BITFIELD(3, 2)
8
9 #define SPSR_SP          BITFLAG(0)
10 #define SPSR_F           BITFLAG(6)
11 #define SPSR_I           BITFLAG(7)
12 #define SPSR_A           BITFLAG(8)
13 #define SPSR_AllInt      BITFLAG(13)
14 #define SPSR_PAN         BITFLAG(22)
15 #define SPSR_UAO         BITFLAG(23)
16
17 #define SPSR_EL0_preset  (BITS_AT(0, SPSR_EL) | SPSR_SP)
18 #define SPSR_EL1_preset  (BITS_AT(1, SPSR_EL) | SPSR_SP | SPSR_UAO)
19
20 static inline bool
21 spsr_from_el0(reg_t spsr)
22 {
23     return BITS_GET(spsr, SPSR_EL) == 0;
24 }
25
26 #endif /* __LUNAIX_AA64_SPSR_H */