1#![allow(non_camel_case_types)]
6
7use crate::uref;
8use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout};
9
10#[repr(C)]
11#[derive(Debug, Copy, Clone, IntoBytes, KnownLayout, FromBytes, Immutable)]
12pub struct user_fpregs_struct {
13 pub cwd: std::os::raw::c_ushort,
14 pub swd: std::os::raw::c_ushort,
15 pub ftw: std::os::raw::c_ushort,
16 pub fop: std::os::raw::c_ushort,
17 pub rip: std::os::raw::c_ulong,
18 pub rdp: std::os::raw::c_ulong,
19 pub mxcsr: std::os::raw::c_uint,
20 pub mxcr_mask: std::os::raw::c_uint,
21 pub st_space: [std::os::raw::c_uint; 32usize],
22 pub xmm_space: [std::os::raw::c_uint; 64usize],
23 pub padding: [std::os::raw::c_uint; 24usize],
24}
25
26impl Default for user_fpregs_struct {
27 fn default() -> Self {
28 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
29 #[allow(
30 clippy::undocumented_unsafe_blocks,
31 reason = "Force documented unsafe blocks in Starnix"
32 )]
33 unsafe {
34 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
35 s.assume_init()
36 }
37 }
38}
39
40#[repr(C)]
41#[derive(Debug, Default, Copy, Clone, IntoBytes, KnownLayout, FromBytes, Immutable)]
42pub struct user_regs_struct {
43 pub r15: std::os::raw::c_ulong,
44 pub r14: std::os::raw::c_ulong,
45 pub r13: std::os::raw::c_ulong,
46 pub r12: std::os::raw::c_ulong,
47 pub rbp: std::os::raw::c_ulong,
48 pub rbx: std::os::raw::c_ulong,
49 pub r11: std::os::raw::c_ulong,
50 pub r10: std::os::raw::c_ulong,
51 pub r9: std::os::raw::c_ulong,
52 pub r8: std::os::raw::c_ulong,
53 pub rax: std::os::raw::c_ulong,
54 pub rcx: std::os::raw::c_ulong,
55 pub rdx: std::os::raw::c_ulong,
56 pub rsi: std::os::raw::c_ulong,
57 pub rdi: std::os::raw::c_ulong,
58 pub orig_rax: std::os::raw::c_ulong,
59 pub rip: std::os::raw::c_ulong,
60 pub cs: std::os::raw::c_ulong,
61 pub eflags: std::os::raw::c_ulong,
62 pub rsp: std::os::raw::c_ulong,
63 pub ss: std::os::raw::c_ulong,
64 pub fs_base: std::os::raw::c_ulong,
65 pub gs_base: std::os::raw::c_ulong,
66 pub ds: std::os::raw::c_ulong,
67 pub es: std::os::raw::c_ulong,
68 pub fs: std::os::raw::c_ulong,
69 pub gs: std::os::raw::c_ulong,
70}
71
72#[repr(C)]
73#[derive(Debug, Copy, Clone, IntoBytes, KnownLayout, FromBytes, Immutable)]
74pub struct user {
75 pub regs: user_regs_struct,
76 pub u_fpvalid: std::os::raw::c_int,
77 pub pad0: std::os::raw::c_int,
78 pub i387: user_fpregs_struct,
79 pub u_tsize: std::os::raw::c_ulong,
80 pub u_dsize: std::os::raw::c_ulong,
81 pub u_ssize: std::os::raw::c_ulong,
82 pub start_code: std::os::raw::c_ulong,
83 pub start_stack: std::os::raw::c_ulong,
84 pub signal: std::os::raw::c_long,
85 pub reserved: std::os::raw::c_int,
86 pub pad1: std::os::raw::c_int,
87 pub u_ar0: uref<user_regs_struct>,
88 pub u_fpstate: uref<user_fpregs_struct>,
89 pub magic: std::os::raw::c_ulong,
90 pub u_comm: [std::os::raw::c_char; 32usize],
91 pub u_debugreg: [std::os::raw::c_ulong; 8usize],
92 pub error_code: std::os::raw::c_ulong,
93 pub fault_address: std::os::raw::c_ulong,
94}
95
96impl Default for user {
97 fn default() -> Self {
98 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
99 #[allow(
100 clippy::undocumented_unsafe_blocks,
101 reason = "Force documented unsafe blocks in Starnix"
102 )]
103 unsafe {
104 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
105 s.assume_init()
106 }
107 }
108}