| #ifndef ROS_INC_ARCH_TRAPFRAME64_H |
| #define ROS_INC_ARCH_TRAPFRAME64_H |
| |
| #ifndef ROS_INC_ARCH_TRAPFRAME_H |
| #error "Do not include include ros/arch/trapframe64.h directly" |
| #endif |
| |
| struct hw_trapframe { |
| uint64_t tf_gsbase; |
| uint64_t tf_fsbase; |
| uint64_t tf_rax; |
| uint64_t tf_rbx; |
| uint64_t tf_rcx; |
| uint64_t tf_rdx; |
| uint64_t tf_rbp; |
| uint64_t tf_rsi; |
| uint64_t tf_rdi; |
| uint64_t tf_r8; |
| uint64_t tf_r9; |
| uint64_t tf_r10; |
| uint64_t tf_r11; |
| uint64_t tf_r12; |
| uint64_t tf_r13; |
| uint64_t tf_r14; |
| uint64_t tf_r15; |
| uint32_t tf_trapno; |
| uint32_t tf_padding5; |
| /* below here defined by x86 hardware (error code optional) */ |
| uint32_t tf_err; |
| uint32_t tf_padding4; |
| uint64_t tf_rip; |
| uint16_t tf_cs; |
| uint16_t tf_padding3; |
| uint32_t tf_padding2; |
| uint64_t tf_rflags; |
| /* unlike 32 bit, SS:RSP is always pushed, even when not changing rings */ |
| uint64_t tf_rsp; |
| uint16_t tf_ss; |
| uint16_t tf_padding1; |
| uint32_t tf_padding0; |
| }; |
| |
| struct sw_trapframe { |
| uint64_t tf_gsbase; |
| uint64_t tf_fsbase; |
| uint64_t tf_rbx; |
| uint64_t tf_rbp; |
| uint64_t tf_r12; |
| uint64_t tf_r13; |
| uint64_t tf_r14; |
| uint64_t tf_r15; |
| uint64_t tf_rip; |
| uint64_t tf_rsp; |
| uint32_t tf_mxcsr; |
| uint16_t tf_fpucw; |
| uint16_t tf_padding0; |
| }; |
| |
| #endif /* ROS_INC_ARCH_TRAPFRAME64_H */ |