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