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