1pub use imp::*;
2
3#[cfg(target_arch = "aarch64")]
4mod imp {
5 pub type GenRegs = libc::user_regs_struct;
6 pub type FpRegs = user_fpsimd_struct;
7
8 #[repr(C)]
10 #[derive(Debug)]
11 pub struct user_fpsimd_struct {
12 pub vregs: [u128; 32],
13 pub fpsr: u32,
14 pub fpcr: u32,
15 }
16}
17
18#[cfg(target_arch = "arm")]
19mod imp {
20 pub type GenRegs = user_regs_struct;
21 pub type FpRegs = user_fpregs_struct;
22
23 #[repr(C)]
25 #[derive(Debug, Eq, Hash, PartialEq, Copy, Clone, Default)]
26 pub struct user_fpregs_struct {
27 pub fpregs: [u64; 32],
28 pub fpscr: u32,
29 }
30
31 #[repr(C)]
32 #[derive(Debug, Eq, Hash, PartialEq, Copy, Clone, Default)]
33 pub struct user_regs_struct {
34 pub uregs: [u32; 18],
35 }
36}
37
38#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
39mod imp {
40 pub type GenRegs = user_regs_struct;
41 pub type FpRegs = user_fpregs_struct;
42
43 #[cfg(target_arch = "x86")]
44 pub type FpxRegs = user_fpxregs_struct;
45
46 pub const NUM_DEBUG_REGISTERS: usize = 8;
47
48 #[cfg(target_arch = "x86")]
49 pub type RegType = u32;
50
51 #[cfg(target_arch = "x86_64")]
52 pub type RegType = u64;
53
54 #[cfg(all(not(target_os = "android"), target_arch = "x86"))]
55 pub use libc::user_fpxregs_struct;
56 #[cfg(not(all(target_os = "android", target_arch = "x86")))]
57 pub use libc::{user, user_fpregs_struct, user_regs_struct};
58
59 #[cfg(all(target_os = "android", target_arch = "x86"))]
61 #[allow(non_camel_case_types)]
62 #[repr(C)]
63 pub struct user_regs_struct {
64 pub ebx: libc::c_long,
65 pub ecx: libc::c_long,
66 pub edx: libc::c_long,
67 pub esi: libc::c_long,
68 pub edi: libc::c_long,
69 pub ebp: libc::c_long,
70 pub eax: libc::c_long,
71 pub xds: libc::c_long,
72 pub xes: libc::c_long,
73 pub xfs: libc::c_long,
74 pub xgs: libc::c_long,
75 pub orig_eax: libc::c_long,
76 pub eip: libc::c_long,
77 pub xcs: libc::c_long,
78 pub eflags: libc::c_long,
79 pub esp: libc::c_long,
80 pub xss: libc::c_long,
81 }
82
83 #[cfg(all(target_os = "android", target_arch = "x86"))]
85 #[allow(non_camel_case_types)]
86 #[repr(C)]
87 pub struct user_fpxregs_struct {
88 pub cwd: libc::c_ushort,
89 pub swd: libc::c_ushort,
90 pub twd: libc::c_ushort,
91 pub fop: libc::c_ushort,
92 pub fip: libc::c_long,
93 pub fcs: libc::c_long,
94 pub foo: libc::c_long,
95 pub fos: libc::c_long,
96 pub mxcsr: libc::c_long,
97 __reserved: libc::c_long,
98 pub st_space: [libc::c_long; 32],
99 pub xmm_space: [libc::c_long; 32],
100 padding: [libc::c_long; 56],
101 }
102
103 #[cfg(all(target_os = "android", target_arch = "x86"))]
105 #[allow(non_camel_case_types)]
106 #[repr(C)]
107 pub struct user_fpregs_struct {
108 pub cwd: libc::c_long,
109 pub swd: libc::c_long,
110 pub twd: libc::c_long,
111 pub fip: libc::c_long,
112 pub fcs: libc::c_long,
113 pub foo: libc::c_long,
114 pub fos: libc::c_long,
115 pub st_space: [libc::c_long; 20],
116 }
117
118 #[cfg(all(target_os = "android", target_arch = "x86"))]
119 #[allow(non_camel_case_types)]
120 #[repr(C)]
121 pub struct user {
122 pub regs: user_regs_struct,
123 pub u_fpvalid: libc::c_long,
124 pub i387: user_fpregs_struct,
125 pub u_tsize: libc::c_ulong,
126 pub u_dsize: libc::c_ulong,
127 pub u_ssize: libc::c_ulong,
128 pub start_code: libc::c_ulong,
129 pub start_stack: libc::c_ulong,
130 pub signal: libc::c_long,
131 __reserved: libc::c_int,
132 pub u_ar0: *mut user_regs_struct,
133 pub u_fpstate: *mut user_fpregs_struct,
134 pub magic: libc::c_ulong,
135 pub u_comm: [libc::c_char; 32],
136 pub u_debugreg: [libc::c_int; 8],
137 }
138}