relibc/header/arch_x64_user/
mod.rs1use crate::platform::types::{c_char, c_int, c_long, c_ulong};
4
5#[repr(C)]
6pub struct user_fpregs_struct {
7 pub cwd: u16,
8 pub swd: u16,
9 pub ftw: u16,
10 pub fop: u16,
11 pub rip: u64,
12 pub rdp: u64,
13 pub mxcsr: u32,
14 pub mxcr_mask: u32,
15 pub st_space: [u32; 32],
16 pub xmm_space: [u32; 64],
17 pub padding: [u32; 24],
18}
19
20#[repr(C)]
21pub struct user_regs_struct {
22 pub r15: c_ulong,
23 pub r14: c_ulong,
24 pub r13: c_ulong,
25 pub r12: c_ulong,
26 pub rbp: c_ulong,
27 pub rbx: c_ulong,
28 pub r11: c_ulong,
29 pub r10: c_ulong,
30 pub r9: c_ulong,
31 pub r8: c_ulong,
32 pub rax: c_ulong,
33 pub rcx: c_ulong,
34 pub rdx: c_ulong,
35 pub rsi: c_ulong,
36 pub rdi: c_ulong,
37 pub orig_rax: c_ulong,
38 pub rip: c_ulong,
39 pub cs: c_ulong,
40 pub eflags: c_ulong,
41 pub rsp: c_ulong,
42 pub ss: c_ulong,
43 pub fs_base: c_ulong,
44 pub gs_base: c_ulong,
45 pub ds: c_ulong,
46 pub es: c_ulong,
47 pub fs: c_ulong,
48 pub gs: c_ulong,
49}
50
51pub type elf_greg_t = c_ulong;
52
53pub type elf_gregset_t = *mut [c_ulong; 27];
54pub type elf_fpregset_t = user_fpregs_struct;
55#[repr(C)]
56pub struct user {
57 pub regs: user_regs_struct,
58 pub u_fpvalid: c_int,
59 pub i387: user_fpregs_struct,
60 pub u_tsize: c_ulong,
61 pub u_dsize: c_ulong,
62 pub u_ssize: c_ulong,
63 pub start_code: c_ulong,
64 pub start_stack: c_ulong,
65 pub signal: c_long,
66 pub reserved: c_int,
67 pub u_ar0: *mut user_regs_struct,
68 pub u_fpstate: *mut user_fpregs_struct,
69 pub magic: c_ulong,
70 pub u_comm: [c_char; 32],
71 pub u_debugreg: [c_ulong; 8],
72}