• 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         __mcontext_data: __darwin_mcontext64,
19     }
20 
21     pub struct __darwin_mcontext64 {
22         pub __es: __darwin_arm_exception_state64,
23         pub __ss: __darwin_arm_thread_state64,
24         pub __ns: __darwin_arm_neon_state64,
25     }
26 
27     pub struct __darwin_arm_exception_state64 {
28         pub __far: u64,
29         pub __esr: u32,
30         pub __exception: u32,
31     }
32 
33     pub struct __darwin_arm_thread_state64 {
34         pub __x: [u64; 29],
35         pub __fp: u64,
36         pub __lr: u64,
37         pub __sp: u64,
38         pub __pc: u64,
39         pub __cpsr: u32,
40         pub __pad: u32,
41     }
42 
43     // This type natively uses a uint128, but for a while we hacked
44     // it in with repr(align) and `[u64; 2]`. uint128 isn't available
45     // all the way back to our earliest supported versions so we
46     // preserver the old shim.
47     #[cfg_attr(not(libc_int128), repr(align(16)))]
48     pub struct __darwin_arm_neon_state64 {
49         #[cfg(libc_int128)]
50         pub __v: [::__uint128_t; 32],
51         #[cfg(not(libc_int128))]
52         pub __v: [[u64; 2]; 32],
53         pub __fpsr: u32,
54         pub __fpcr: u32,
55     }
56 }
57