Skip to main content

relibc/header/arch_x64_user/
mod.rs

1//! A part of the ptrace compatibility for Redox OS
2
3use 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}