• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 pub type mcontext_t = *mut __darwin_mcontext64;
2 
3 s_no_extra_traits! {
4     #[allow(missing_debug_implementations)]
5     pub struct max_align_t {
6         priv_: f64
7     }
8 }
9 
10 s! {
11     pub struct ucontext_t {
12         pub uc_onstack: ::c_int,
13         pub uc_sigmask: ::sigset_t,
14         pub uc_stack: ::stack_t,
15         pub uc_link: *mut ::ucontext_t,
16         pub uc_mcsize: usize,
17         pub uc_mcontext: mcontext_t,
18     }
19 
20     pub struct __darwin_mcontext64 {
21         pub __es: __darwin_arm_exception_state64,
22         pub __ss: __darwin_arm_thread_state64,
23         pub __ns: __darwin_arm_neon_state64,
24     }
25 
26     pub struct __darwin_arm_exception_state64 {
27         pub __far: u64,
28         pub __esr: u32,
29         pub __exception: u32,
30     }
31 
32     pub struct __darwin_arm_thread_state64 {
33         pub __x: [u64; 29],
34         pub __fp: u64,
35         pub __lr: u64,
36         pub __sp: u64,
37         pub __pc: u64,
38         pub __cpsr: u32,
39         pub __pad: u32,
40     }
41 
42     // This type natively uses a uint128, but for a while we hacked
43     // it in with repr(align) and `[u64; 2]`. uint128 isn't available
44     // all the way back to our earliest supported versions so we
45     // preserver the old shim.
46     #[cfg_attr(not(libc_int128), repr(align(16)))]
47     pub struct __darwin_arm_neon_state64 {
48         #[cfg(libc_int128)]
49         pub __v: [::__uint128_t; 32],
50         #[cfg(not(libc_int128))]
51         pub __v: [[u64; 2]; 32],
52         pub __fpsr: u32,
53         pub __fpcr: u32,
54     }
55 }
56