1use super::{
2 Cr0, Cr2, Cr3, Cr4, Dr0, Dr1, Dr2, Dr3, Dr6, Dr7, Gdtr, Idtr, MsrEfer, Rflags,
3 SegmentDescriptor,
4};
5
6#[expect(missing_docs)]
8#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
9pub struct Registers {
10 pub rax: u64,
11 pub rbx: u64,
12 pub rcx: u64,
13 pub rdx: u64,
14 pub rbp: u64,
15 pub rsi: u64,
16 pub rdi: u64,
17 pub rsp: u64,
18 pub r8: u64,
19 pub r9: u64,
20 pub r10: u64,
21 pub r11: u64,
22 pub r12: u64,
23 pub r13: u64,
24 pub r14: u64,
25 pub r15: u64,
26 pub rip: u64,
27 pub rflags: Rflags,
28
29 pub cr0: Cr0,
30 pub cr2: Cr2,
31 pub cr3: Cr3,
32 pub cr4: Cr4,
33
34 pub dr0: Dr0,
35 pub dr1: Dr1,
36 pub dr2: Dr2,
37 pub dr3: Dr3,
38 pub dr6: Dr6,
39 pub dr7: Dr7,
40
41 pub cs: SegmentDescriptor,
42 pub ds: SegmentDescriptor,
43 pub es: SegmentDescriptor,
44 pub fs: SegmentDescriptor,
45 pub gs: SegmentDescriptor,
46 pub ss: SegmentDescriptor,
47 pub tr: SegmentDescriptor,
48 pub ldtr: SegmentDescriptor,
49
50 pub idtr: Idtr,
51 pub gdtr: Gdtr,
52
53 pub sysenter_cs: u64,
54 pub sysenter_esp: u64,
55 pub sysenter_eip: u64,
56 pub shadow_gs: u64,
57
58 pub msr_flags: u64,
59 pub msr_lstar: u64,
60 pub msr_star: u64,
61 pub msr_cstar: u64,
62 pub msr_syscall_mask: u64,
63 pub msr_efer: MsrEfer,
64 pub msr_tsc_aux: u64,
65 }
68
69#[expect(missing_docs)]
70#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
72pub struct GpRegisters {
73 pub rax: u64,
74 pub rbx: u64,
75 pub rcx: u64,
76 pub rdx: u64,
77 pub rbp: u64,
78 pub rsi: u64,
79 pub rdi: u64,
80 pub rsp: u64,
81 pub r8: u64,
82 pub r9: u64,
83 pub r10: u64,
84 pub r11: u64,
85 pub r12: u64,
86 pub r13: u64,
87 pub r14: u64,
88 pub r15: u64,
89 pub rip: u64,
90 pub rflags: Rflags,
91}