blob: 1e34aeb857196921298face5dfe512e6023312ef [file] [log] [blame] [edit]
#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 */