#[repr(C, packed(1))]pub struct TrapFrame {Show 21 fields
pub rbx: u64,
pub r12: u64,
pub r13: u64,
pub r14: u64,
pub r15: u64,
pub rbp: u64,
pub r11: u64,
pub r10: u64,
pub r9: u64,
pub r8: u64,
pub rsi: u64,
pub rdi: u64,
pub rdx: u64,
pub rcx: u64,
pub rax: u64,
pub err_code: u64,
pub rip: u64,
pub cs: u64,
pub rflags: u64,
pub rsp: u64,
pub ss: u64,
}Expand description
TrapFrame is saved and restored by the interrupt handler assembly code
upon interrupt entry and exit.
The complete picture (in pushing sequence, addr from high to low)
Fields§
§rbx: u64§r12: u64§r13: u64§r14: u64§r15: u64§rbp: u64§r11: u64§r10: u64§r9: u64§r8: u64§rsi: u64§rdi: u64§rdx: u64§rcx: u64§rax: u64§err_code: u64for some exceptions, the CPU automatically pushes an error code (see
docs/interrupt.txt) to the stack. For those who don’t have error code,
we manually push a dummy value (0)
rip: u64§cs: u64§rflags: u64§rsp: u64§ss: u64