3 #ifndef __ARCH_ARM64_TRANSITION_H__
4 #define __ARCH_ARM64_TRANSITION_H__
25 #define STACK_POP_BYTES 16
26 #define STACK_PUSH_BYTES -16
28 #define EXC_VID_CUR_SP_EL0_SYNC 0
29 #define EXC_VID_CUR_SP_EL0_IRQ 1
30 #define EXC_VID_CUR_SP_EL0_FIRQ 2
31 #define EXC_VID_CUR_SP_EL0_SERR 3
32 #define EXC_VID_CUR_SP_ELX_SYNC 4
33 #define EXC_VID_CUR_SP_ELX_IRQ 5
34 #define EXC_VID_CUR_SP_ELX_FIQ 6
35 #define EXC_VID_CUR_SP_ELX_SERR 7
36 #define EXC_VID_LOW64_SYNC 8
37 #define EXC_VID_LOW64_IRQ 9
38 #define EXC_VID_LOW64_FIQ 10
39 #define EXC_VID_LOW64_SERR 11
40 #define EXC_VID_LOW32_SYNC 12
41 #define EXC_VID_LOW32_IRQ 13
42 #define EXC_VID_LOW32_FIQ 14
43 #define EXC_VID_LOW32_SERR 15
44 #define NUM_EXC_VIDS 16
51 #define XI_INDEX(i) X##i##_INDEX = i
unsigned long long uint64_t
static uint8_t get_eret_el(uint8_t el, uint8_t l_or_h)
void trans_switch(struct regs *regs)
void transition_to_el2(void *entry, void *arg, uint64_t spsr)
static uint8_t get_mode_from_spsr(uint64_t spsr)
void exc_dispatch(struct exc_state *exc_state, uint64_t id)
static uint8_t get_el_from_spsr(uint64_t spsr)
void exc_entry(struct exc_state *exc_state, uint64_t id)
void exc_exit(struct regs *regs)