xref: /xnu-11215.61.5/osfmk/mach/arm/_structs.h (revision 4f1223e81cd707a65cc109d0b8ad6653699da3c4)
1*4f1223e8SApple OSS Distributions /*
2*4f1223e8SApple OSS Distributions  * Copyright (c) 2004-2007 Apple Inc. All rights reserved.
3*4f1223e8SApple OSS Distributions  *
4*4f1223e8SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*4f1223e8SApple OSS Distributions  *
6*4f1223e8SApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*4f1223e8SApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*4f1223e8SApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*4f1223e8SApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*4f1223e8SApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*4f1223e8SApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*4f1223e8SApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*4f1223e8SApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*4f1223e8SApple OSS Distributions  *
15*4f1223e8SApple OSS Distributions  * Please obtain a copy of the License at
16*4f1223e8SApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*4f1223e8SApple OSS Distributions  *
18*4f1223e8SApple OSS Distributions  * The Original Code and all software distributed under the License are
19*4f1223e8SApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*4f1223e8SApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*4f1223e8SApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*4f1223e8SApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*4f1223e8SApple OSS Distributions  * Please see the License for the specific language governing rights and
24*4f1223e8SApple OSS Distributions  * limitations under the License.
25*4f1223e8SApple OSS Distributions  *
26*4f1223e8SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*4f1223e8SApple OSS Distributions  */
28*4f1223e8SApple OSS Distributions /*
29*4f1223e8SApple OSS Distributions  * @OSF_COPYRIGHT@
30*4f1223e8SApple OSS Distributions  */
31*4f1223e8SApple OSS Distributions #ifndef _MACH_ARM__STRUCTS_H_
32*4f1223e8SApple OSS Distributions #define _MACH_ARM__STRUCTS_H_
33*4f1223e8SApple OSS Distributions 
34*4f1223e8SApple OSS Distributions #if defined (__arm__) || defined (__arm64__)
35*4f1223e8SApple OSS Distributions 
36*4f1223e8SApple OSS Distributions #include <sys/cdefs.h> /* __DARWIN_UNIX03 */
37*4f1223e8SApple OSS Distributions #include <machine/types.h> /* __uint32_t */
38*4f1223e8SApple OSS Distributions 
39*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
40*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_EXCEPTION_STATE struct __darwin_arm_exception_state
41*4f1223e8SApple OSS Distributions _STRUCT_ARM_EXCEPTION_STATE
42*4f1223e8SApple OSS Distributions {
43*4f1223e8SApple OSS Distributions 	__uint32_t __exception; /* number of arm exception taken */
44*4f1223e8SApple OSS Distributions 	__uint32_t __fsr;       /* Fault status */
45*4f1223e8SApple OSS Distributions 	__uint32_t __far;       /* Virtual Fault Address */
46*4f1223e8SApple OSS Distributions };
47*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
48*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_EXCEPTION_STATE struct arm_exception_state
49*4f1223e8SApple OSS Distributions _STRUCT_ARM_EXCEPTION_STATE
50*4f1223e8SApple OSS Distributions {
51*4f1223e8SApple OSS Distributions 	__uint32_t exception;   /* number of arm exception taken */
52*4f1223e8SApple OSS Distributions 	__uint32_t fsr;         /* Fault status */
53*4f1223e8SApple OSS Distributions 	__uint32_t far;         /* Virtual Fault Address */
54*4f1223e8SApple OSS Distributions };
55*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
56*4f1223e8SApple OSS Distributions 
57*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
58*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_EXCEPTION_STATE64 struct __darwin_arm_exception_state64
59*4f1223e8SApple OSS Distributions _STRUCT_ARM_EXCEPTION_STATE64
60*4f1223e8SApple OSS Distributions {
61*4f1223e8SApple OSS Distributions 	__uint64_t __far;       /* Virtual Fault Address */
62*4f1223e8SApple OSS Distributions 	__uint32_t __esr;       /* Exception syndrome */
63*4f1223e8SApple OSS Distributions 	__uint32_t __exception; /* number of arm exception taken */
64*4f1223e8SApple OSS Distributions };
65*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_EXCEPTION_STATE64_V2 struct __darwin_arm_exception_state64_v2
66*4f1223e8SApple OSS Distributions _STRUCT_ARM_EXCEPTION_STATE64_V2
67*4f1223e8SApple OSS Distributions {
68*4f1223e8SApple OSS Distributions 	__uint64_t __far;       /* Virtual Fault Address */
69*4f1223e8SApple OSS Distributions 	__uint64_t __esr;       /* Exception syndrome */
70*4f1223e8SApple OSS Distributions };
71*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
72*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_EXCEPTION_STATE64 struct arm_exception_state64
73*4f1223e8SApple OSS Distributions _STRUCT_ARM_EXCEPTION_STATE64
74*4f1223e8SApple OSS Distributions {
75*4f1223e8SApple OSS Distributions 	__uint64_t far;         /* Virtual Fault Address */
76*4f1223e8SApple OSS Distributions 	__uint32_t esr;         /* Exception syndrome */
77*4f1223e8SApple OSS Distributions 	__uint32_t exception;   /* number of arm exception taken */
78*4f1223e8SApple OSS Distributions };
79*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_EXCEPTION_STATE64_V2 struct arm_exception_state64_v2
80*4f1223e8SApple OSS Distributions _STRUCT_ARM_EXCEPTION_STATE64_V2
81*4f1223e8SApple OSS Distributions {
82*4f1223e8SApple OSS Distributions 	__uint64_t far;         /* Virtual Fault Address */
83*4f1223e8SApple OSS Distributions 	__uint64_t esr;         /* Exception syndrome */
84*4f1223e8SApple OSS Distributions };
85*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
86*4f1223e8SApple OSS Distributions 
87*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
88*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_THREAD_STATE struct __darwin_arm_thread_state
89*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE
90*4f1223e8SApple OSS Distributions {
91*4f1223e8SApple OSS Distributions 	__uint32_t __r[13]; /* General purpose register r0-r12 */
92*4f1223e8SApple OSS Distributions 	__uint32_t __sp;    /* Stack pointer r13 */
93*4f1223e8SApple OSS Distributions 	__uint32_t __lr;    /* Link register r14 */
94*4f1223e8SApple OSS Distributions 	__uint32_t __pc;    /* Program counter r15 */
95*4f1223e8SApple OSS Distributions 	__uint32_t __cpsr;  /* Current program status register */
96*4f1223e8SApple OSS Distributions };
97*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
98*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_THREAD_STATE struct arm_thread_state
99*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE
100*4f1223e8SApple OSS Distributions {
101*4f1223e8SApple OSS Distributions 	__uint32_t r[13];   /* General purpose register r0-r12 */
102*4f1223e8SApple OSS Distributions 	__uint32_t sp;      /* Stack pointer r13 */
103*4f1223e8SApple OSS Distributions 	__uint32_t lr;      /* Link register r14 */
104*4f1223e8SApple OSS Distributions 	__uint32_t pc;      /* Program counter r15 */
105*4f1223e8SApple OSS Distributions 	__uint32_t cpsr;    /* Current program status register */
106*4f1223e8SApple OSS Distributions };
107*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
108*4f1223e8SApple OSS Distributions 
109*4f1223e8SApple OSS Distributions #if defined(KERNEL)
110*4f1223e8SApple OSS Distributions 
111*4f1223e8SApple OSS Distributions #define __DARWIN_OPAQUE_ARM_THREAD_STATE64 0
112*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH 0x1
113*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR 0x2
114*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC 0x4
115*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR 0x8
116*4f1223e8SApple OSS Distributions 
117*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK 0xff000000
118*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_SIGRETURN_PC_MASK 0x000f0000
119*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_SIGRETURN_LR_MASK 0x00f00000
120*4f1223e8SApple OSS Distributions 
121*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_SET_SIGRETURN_TOKEN(ts, token, mask) \
122*4f1223e8SApple OSS Distributions     ((ts)->flags |= (((uint32_t)(token)) & (mask)))
123*4f1223e8SApple OSS Distributions 
124*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_CHECK_SIGRETURN_TOKEN(ts, token, mask) \
125*4f1223e8SApple OSS Distributions     (((ts)->flags & (mask)) == \
126*4f1223e8SApple OSS Distributions     (((uint32_t)(token)) & (mask)))
127*4f1223e8SApple OSS Distributions 
128*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_THREAD_STATE64      struct arm_thread_state64
129*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE64
130*4f1223e8SApple OSS Distributions {
131*4f1223e8SApple OSS Distributions 	__uint64_t    x[29];    /* General purpose registers x0-x28 */
132*4f1223e8SApple OSS Distributions 	__uint64_t    fp;               /* Frame pointer x29 */
133*4f1223e8SApple OSS Distributions 	__uint64_t    lr;               /* Link register x30 */
134*4f1223e8SApple OSS Distributions 	__uint64_t    sp;               /* Stack pointer x31 */
135*4f1223e8SApple OSS Distributions 	__uint64_t    pc;               /* Program counter */
136*4f1223e8SApple OSS Distributions 	__uint32_t    cpsr;             /* Current program status register */
137*4f1223e8SApple OSS Distributions 	__uint32_t    flags;    /* Flags describing structure format */
138*4f1223e8SApple OSS Distributions };
139*4f1223e8SApple OSS Distributions 
140*4f1223e8SApple OSS Distributions #else /* defined(KERNEL) */
141*4f1223e8SApple OSS Distributions 
142*4f1223e8SApple OSS Distributions /*
143*4f1223e8SApple OSS Distributions  * By default, the pointer fields in the arm_thread_state64_t structure are
144*4f1223e8SApple OSS Distributions  * opaque on the arm64e architecture and require the use of accessor macros.
145*4f1223e8SApple OSS Distributions  * This mode can also be enabled on the arm64 architecture by building with
146*4f1223e8SApple OSS Distributions  * -D__DARWIN_OPAQUE_ARM_THREAD_STATE64=1.
147*4f1223e8SApple OSS Distributions  */
148*4f1223e8SApple OSS Distributions #if defined(__arm64__) && defined(__LP64__)
149*4f1223e8SApple OSS Distributions 
150*4f1223e8SApple OSS Distributions #if __has_feature(ptrauth_calls)
151*4f1223e8SApple OSS Distributions #define __DARWIN_OPAQUE_ARM_THREAD_STATE64 1
152*4f1223e8SApple OSS Distributions #define __DARWIN_PTRAUTH_ARM_THREAD_STATE64 1
153*4f1223e8SApple OSS Distributions #endif /* __has_feature(ptrauth_calls) */
154*4f1223e8SApple OSS Distributions 
155*4f1223e8SApple OSS Distributions #ifndef __DARWIN_OPAQUE_ARM_THREAD_STATE64
156*4f1223e8SApple OSS Distributions #define __DARWIN_OPAQUE_ARM_THREAD_STATE64 0
157*4f1223e8SApple OSS Distributions #endif
158*4f1223e8SApple OSS Distributions 
159*4f1223e8SApple OSS Distributions #else /* defined(__arm64__) && defined(__LP64__) */
160*4f1223e8SApple OSS Distributions 
161*4f1223e8SApple OSS Distributions #undef __DARWIN_OPAQUE_ARM_THREAD_STATE64
162*4f1223e8SApple OSS Distributions #define __DARWIN_OPAQUE_ARM_THREAD_STATE64 0
163*4f1223e8SApple OSS Distributions 
164*4f1223e8SApple OSS Distributions #endif /* defined(__arm64__) && defined(__LP64__) */
165*4f1223e8SApple OSS Distributions 
166*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
167*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_THREAD_STATE64 struct __darwin_arm_thread_state64
168*4f1223e8SApple OSS Distributions #if __DARWIN_OPAQUE_ARM_THREAD_STATE64
169*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE64
170*4f1223e8SApple OSS Distributions {
171*4f1223e8SApple OSS Distributions 	__uint64_t __x[29];     /* General purpose registers x0-x28 */
172*4f1223e8SApple OSS Distributions 	void*      __opaque_fp; /* Frame pointer x29 */
173*4f1223e8SApple OSS Distributions 	void*      __opaque_lr; /* Link register x30 */
174*4f1223e8SApple OSS Distributions 	void*      __opaque_sp; /* Stack pointer x31 */
175*4f1223e8SApple OSS Distributions 	void*      __opaque_pc; /* Program counter */
176*4f1223e8SApple OSS Distributions 	__uint32_t __cpsr;      /* Current program status register */
177*4f1223e8SApple OSS Distributions 	__uint32_t __opaque_flags; /* Flags describing structure format */
178*4f1223e8SApple OSS Distributions };
179*4f1223e8SApple OSS Distributions #else /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
180*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE64
181*4f1223e8SApple OSS Distributions {
182*4f1223e8SApple OSS Distributions 	__uint64_t __x[29]; /* General purpose registers x0-x28 */
183*4f1223e8SApple OSS Distributions 	__uint64_t __fp;    /* Frame pointer x29 */
184*4f1223e8SApple OSS Distributions 	__uint64_t __lr;    /* Link register x30 */
185*4f1223e8SApple OSS Distributions 	__uint64_t __sp;    /* Stack pointer x31 */
186*4f1223e8SApple OSS Distributions 	__uint64_t __pc;    /* Program counter */
187*4f1223e8SApple OSS Distributions 	__uint32_t __cpsr;  /* Current program status register */
188*4f1223e8SApple OSS Distributions 	__uint32_t __pad;   /* Same size for 32-bit or 64-bit clients */
189*4f1223e8SApple OSS Distributions };
190*4f1223e8SApple OSS Distributions #endif /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
191*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
192*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_THREAD_STATE64 struct arm_thread_state64
193*4f1223e8SApple OSS Distributions #if __DARWIN_OPAQUE_ARM_THREAD_STATE64
194*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE64
195*4f1223e8SApple OSS Distributions {
196*4f1223e8SApple OSS Distributions 	__uint64_t x[29];       /* General purpose registers x0-x28 */
197*4f1223e8SApple OSS Distributions 	void*      __opaque_fp; /* Frame pointer x29 */
198*4f1223e8SApple OSS Distributions 	void*      __opaque_lr; /* Link register x30 */
199*4f1223e8SApple OSS Distributions 	void*      __opaque_sp; /* Stack pointer x31 */
200*4f1223e8SApple OSS Distributions 	void*      __opaque_pc; /* Program counter */
201*4f1223e8SApple OSS Distributions 	__uint32_t cpsr;        /* Current program status register */
202*4f1223e8SApple OSS Distributions 	__uint32_t __opaque_flags; /* Flags describing structure format */
203*4f1223e8SApple OSS Distributions };
204*4f1223e8SApple OSS Distributions #else /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
205*4f1223e8SApple OSS Distributions _STRUCT_ARM_THREAD_STATE64
206*4f1223e8SApple OSS Distributions {
207*4f1223e8SApple OSS Distributions 	__uint64_t x[29]; /* General purpose registers x0-x28 */
208*4f1223e8SApple OSS Distributions 	__uint64_t fp;    /* Frame pointer x29 */
209*4f1223e8SApple OSS Distributions 	__uint64_t lr;    /* Link register x30 */
210*4f1223e8SApple OSS Distributions 	__uint64_t sp;    /* Stack pointer x31 */
211*4f1223e8SApple OSS Distributions 	__uint64_t pc;    /* Program counter */
212*4f1223e8SApple OSS Distributions 	__uint32_t cpsr;  /* Current program status register */
213*4f1223e8SApple OSS Distributions 	__uint32_t __pad; /* Same size for 32-bit or 64-bit clients */
214*4f1223e8SApple OSS Distributions };
215*4f1223e8SApple OSS Distributions #endif /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
216*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
217*4f1223e8SApple OSS Distributions 
218*4f1223e8SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL && defined(__arm64__)
219*4f1223e8SApple OSS Distributions 
220*4f1223e8SApple OSS Distributions /* Accessor macros for arm_thread_state64_t pointer fields */
221*4f1223e8SApple OSS Distributions 
222*4f1223e8SApple OSS Distributions #if __has_feature(ptrauth_calls) && defined(__LP64__)
223*4f1223e8SApple OSS Distributions #include <ptrauth.h>
224*4f1223e8SApple OSS Distributions 
225*4f1223e8SApple OSS Distributions #if !__DARWIN_OPAQUE_ARM_THREAD_STATE64 || !__DARWIN_PTRAUTH_ARM_THREAD_STATE64
226*4f1223e8SApple OSS Distributions #error "Invalid configuration"
227*4f1223e8SApple OSS Distributions #endif
228*4f1223e8SApple OSS Distributions 
229*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH 0x1
230*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR 0x2
231*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC 0x4
232*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR 0x8
233*4f1223e8SApple OSS Distributions 
234*4f1223e8SApple OSS Distributions #define __DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK 0xff000000
235*4f1223e8SApple OSS Distributions 
236*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a data pointer value */
237*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc(ts) \
238*4f1223e8SApple OSS Distributions 	__extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
239*4f1223e8SApple OSS Distributions 	(uintptr_t)(__tsp->__opaque_pc && !(__tsp->__opaque_flags &       \
240*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?                   \
241*4f1223e8SApple OSS Distributions 	ptrauth_auth_data(__tsp->__opaque_pc,                             \
242*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_code,                             \
243*4f1223e8SApple OSS Distributions 	((__tsp->__opaque_flags &                                         \
244*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC) == 0 &&       \
245*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
246*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK)) ?             \
247*4f1223e8SApple OSS Distributions 	ptrauth_blend_discriminator((void *)(unsigned long)               \
248*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
249*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK),               \
250*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("pc")) :                             \
251*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("pc")) : __tsp->__opaque_pc); })
252*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a function pointer. May return
253*4f1223e8SApple OSS Distributions  * NULL if a valid function pointer cannot be constructed, the caller should
254*4f1223e8SApple OSS Distributions  * fall back to the __darwin_arm_thread_state64_get_pc() macro in that case. */
255*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc_fptr(ts) \
256*4f1223e8SApple OSS Distributions 	__extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
257*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_pc && !(__tsp->__opaque_flags &                  \
258*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?                   \
259*4f1223e8SApple OSS Distributions 	ptrauth_auth_function(__tsp->__opaque_pc,                         \
260*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_code,                             \
261*4f1223e8SApple OSS Distributions 	((__tsp->__opaque_flags &                                         \
262*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC) == 0 &&       \
263*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
264*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK)) ?             \
265*4f1223e8SApple OSS Distributions 	ptrauth_blend_discriminator((void *)(unsigned long)               \
266*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
267*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK),               \
268*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("pc")) :                             \
269*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("pc")) : NULL); })
270*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to a function pointer */
271*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
272*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts);   \
273*4f1223e8SApple OSS Distributions 	__typeof__(fptr) __f = (fptr); __tsp->__opaque_pc =           \
274*4f1223e8SApple OSS Distributions 	(__f ? (!(__tsp->__opaque_flags &                             \
275*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?               \
276*4f1223e8SApple OSS Distributions 	ptrauth_auth_and_resign(__f, ptrauth_key_function_pointer, 0, \
277*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_code,                         \
278*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                      \
279*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK) ?          \
280*4f1223e8SApple OSS Distributions 	ptrauth_blend_discriminator((void *)(unsigned long)           \
281*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                      \
282*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK),           \
283*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("pc")) :                         \
284*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("pc")) : ptrauth_auth_data(__f,  \
285*4f1223e8SApple OSS Distributions 	ptrauth_key_function_pointer, 0)) : __f);                     \
286*4f1223e8SApple OSS Distributions 	__tsp->__opaque_flags &=                                      \
287*4f1223e8SApple OSS Distributions 	~__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC; })
288*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to an already signed function pointer */
289*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_presigned_fptr(ts, presigned_fptr)           \
290*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts);                                     \
291*4f1223e8SApple OSS Distributions 	__typeof__(presigned_fptr) __f = (presigned_fptr); __tsp->__opaque_pc = __f;    \
292*4f1223e8SApple OSS Distributions 	__tsp->__opaque_flags &=                                                                        \
293*4f1223e8SApple OSS Distributions 	~__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC; })
294*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a data pointer value */
295*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr(ts) \
296*4f1223e8SApple OSS Distributions 	__extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
297*4f1223e8SApple OSS Distributions 	(uintptr_t)(__tsp->__opaque_lr && !(__tsp->__opaque_flags & (     \
298*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH |                    \
299*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR)) ?                \
300*4f1223e8SApple OSS Distributions 	ptrauth_auth_data(__tsp->__opaque_lr,                             \
301*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_code,                             \
302*4f1223e8SApple OSS Distributions 	((__tsp->__opaque_flags &                                         \
303*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR) == 0 &&       \
304*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
305*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK)) ?             \
306*4f1223e8SApple OSS Distributions 	ptrauth_blend_discriminator((void *)(unsigned long)               \
307*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
308*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK),               \
309*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("lr")) :                             \
310*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("lr")) : __tsp->__opaque_lr); })
311*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a function pointer. May return
312*4f1223e8SApple OSS Distributions  * NULL if a valid function pointer cannot be constructed, the caller should
313*4f1223e8SApple OSS Distributions  * fall back to the __darwin_arm_thread_state64_get_lr() macro in that case. */
314*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr_fptr(ts) \
315*4f1223e8SApple OSS Distributions 	__extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
316*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_lr && !(__tsp->__opaque_flags & (                \
317*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH |                    \
318*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR)) ?                \
319*4f1223e8SApple OSS Distributions 	ptrauth_auth_function(__tsp->__opaque_lr,                         \
320*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_code,                             \
321*4f1223e8SApple OSS Distributions 	((__tsp->__opaque_flags &                                         \
322*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR) == 0 &&       \
323*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
324*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK)) ?             \
325*4f1223e8SApple OSS Distributions 	ptrauth_blend_discriminator((void *)(unsigned long)               \
326*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                          \
327*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK),               \
328*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("lr")) :                             \
329*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("lr")) : NULL); })
330*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a function pointer */
331*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
332*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts);            \
333*4f1223e8SApple OSS Distributions 	__typeof__(fptr) __f = (fptr); __tsp->__opaque_lr =                    \
334*4f1223e8SApple OSS Distributions 	(__f ? (!(__tsp->__opaque_flags &                                      \
335*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? (__tsp->__opaque_flags \
336*4f1223e8SApple OSS Distributions 	&= ~__DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR ,                   \
337*4f1223e8SApple OSS Distributions 	ptrauth_auth_and_resign(__f, ptrauth_key_function_pointer, 0,          \
338*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_code,                                  \
339*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                               \
340*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK) ?                   \
341*4f1223e8SApple OSS Distributions 	ptrauth_blend_discriminator((void *)(unsigned long)                    \
342*4f1223e8SApple OSS Distributions 	(__tsp->__opaque_flags &                                               \
343*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK),                    \
344*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("lr")) :                                  \
345*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("lr"))) : ptrauth_auth_data(__f,          \
346*4f1223e8SApple OSS Distributions 	ptrauth_key_function_pointer, 0)) : __f); __tsp->__opaque_flags &=     \
347*4f1223e8SApple OSS Distributions 	~__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR; })
348*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to an already signed function pointer */
349*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_presigned_fptr(ts, presigned_fptr)           \
350*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts);                                     \
351*4f1223e8SApple OSS Distributions 	__typeof__(presigned_fptr) __f = (presigned_fptr); __tsp->__opaque_lr = __f;    \
352*4f1223e8SApple OSS Distributions 	__tsp->__opaque_flags &=                                                                        \
353*4f1223e8SApple OSS Distributions 	~__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR & ~__DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR; })
354*4f1223e8SApple OSS Distributions /* Return sp field of arm_thread_state64_t as a data pointer value */
355*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_sp(ts) \
356*4f1223e8SApple OSS Distributions 	__extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
357*4f1223e8SApple OSS Distributions 	(uintptr_t)(__tsp->__opaque_sp && !(__tsp->__opaque_flags &       \
358*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?                   \
359*4f1223e8SApple OSS Distributions 	ptrauth_auth_data(__tsp->__opaque_sp,                             \
360*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_data,                             \
361*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("sp")) : __tsp->__opaque_sp); })
362*4f1223e8SApple OSS Distributions /* Set sp field of arm_thread_state64_t to a data pointer value */
363*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_sp(ts, ptr) \
364*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
365*4f1223e8SApple OSS Distributions 	void *__p = (void*)(uintptr_t)(ptr); __tsp->__opaque_sp =   \
366*4f1223e8SApple OSS Distributions 	(__p && !(__tsp->__opaque_flags &                           \
367*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?             \
368*4f1223e8SApple OSS Distributions 	ptrauth_sign_unauthenticated(__p,                           \
369*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_data,                       \
370*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("sp")) : __p); })
371*4f1223e8SApple OSS Distributions /* Return fp field of arm_thread_state64_t as a data pointer value */
372*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_fp(ts) \
373*4f1223e8SApple OSS Distributions 	__extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
374*4f1223e8SApple OSS Distributions 	(uintptr_t)(__tsp->__opaque_fp && !(__tsp->__opaque_flags &       \
375*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?                   \
376*4f1223e8SApple OSS Distributions 	ptrauth_auth_data(__tsp->__opaque_fp,                             \
377*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_data,                             \
378*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("fp")) : __tsp->__opaque_fp); })
379*4f1223e8SApple OSS Distributions /* Set fp field of arm_thread_state64_t to a data pointer value */
380*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_fp(ts, ptr) \
381*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
382*4f1223e8SApple OSS Distributions 	void *__p = (void*)(uintptr_t)(ptr); __tsp->__opaque_fp =   \
383*4f1223e8SApple OSS Distributions 	(__p && !(__tsp->__opaque_flags &                           \
384*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ?             \
385*4f1223e8SApple OSS Distributions 	ptrauth_sign_unauthenticated(__p,                           \
386*4f1223e8SApple OSS Distributions 	ptrauth_key_process_independent_data,                       \
387*4f1223e8SApple OSS Distributions 	ptrauth_string_discriminator("fp")) : __p); })
388*4f1223e8SApple OSS Distributions 
389*4f1223e8SApple OSS Distributions /* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
390*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_ptrauth_strip(ts) \
391*4f1223e8SApple OSS Distributions 	__extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts);               \
392*4f1223e8SApple OSS Distributions 	__tsp->__opaque_pc = ((__tsp->__opaque_flags &                            \
393*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? __tsp->__opaque_pc :      \
394*4f1223e8SApple OSS Distributions 	ptrauth_strip(__tsp->__opaque_pc, ptrauth_key_process_independent_code)); \
395*4f1223e8SApple OSS Distributions 	__tsp->__opaque_lr = ((__tsp->__opaque_flags &                            \
396*4f1223e8SApple OSS Distributions 	(__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH |                           \
397*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR)) ? __tsp->__opaque_lr :   \
398*4f1223e8SApple OSS Distributions 	ptrauth_strip(__tsp->__opaque_lr, ptrauth_key_process_independent_code)); \
399*4f1223e8SApple OSS Distributions 	__tsp->__opaque_sp = ((__tsp->__opaque_flags &                            \
400*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? __tsp->__opaque_sp :      \
401*4f1223e8SApple OSS Distributions 	ptrauth_strip(__tsp->__opaque_sp, ptrauth_key_process_independent_data)); \
402*4f1223e8SApple OSS Distributions 	__tsp->__opaque_fp = ((__tsp->__opaque_flags &                            \
403*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? __tsp->__opaque_fp :      \
404*4f1223e8SApple OSS Distributions 	ptrauth_strip(__tsp->__opaque_fp, ptrauth_key_process_independent_data)); \
405*4f1223e8SApple OSS Distributions 	__tsp->__opaque_flags |=                                                  \
406*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH; __tsp->__opaque_flags &=    \
407*4f1223e8SApple OSS Distributions 	~(__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC |                    \
408*4f1223e8SApple OSS Distributions 	__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR); })
409*4f1223e8SApple OSS Distributions 
410*4f1223e8SApple OSS Distributions #else /* __has_feature(ptrauth_calls) && defined(__LP64__) */
411*4f1223e8SApple OSS Distributions 
412*4f1223e8SApple OSS Distributions #if __DARWIN_OPAQUE_ARM_THREAD_STATE64
413*4f1223e8SApple OSS Distributions 
414*4f1223e8SApple OSS Distributions #ifndef __LP64__
415*4f1223e8SApple OSS Distributions #error "Invalid configuration"
416*4f1223e8SApple OSS Distributions #endif
417*4f1223e8SApple OSS Distributions 
418*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a data pointer value */
419*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc(ts) \
420*4f1223e8SApple OSS Distributions 	((uintptr_t)((ts).__opaque_pc))
421*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a function pointer */
422*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc_fptr(ts) \
423*4f1223e8SApple OSS Distributions 	((ts).__opaque_pc)
424*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to a function pointer */
425*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
426*4f1223e8SApple OSS Distributions 	((ts).__opaque_pc = (fptr))
427*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to an already signed function pointer */
428*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_presigned_fptr(ts, presigned_fptr)           \
429*4f1223e8SApple OSS Distributions 	((ts).__opaque_pc = (presigned_fptr))
430*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a data pointer value */
431*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr(ts) \
432*4f1223e8SApple OSS Distributions 	((uintptr_t)((ts).__opaque_lr))
433*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a function pointer */
434*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr_fptr(ts) \
435*4f1223e8SApple OSS Distributions 	((ts).__opaque_lr)
436*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a function pointer */
437*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
438*4f1223e8SApple OSS Distributions 	((ts).__opaque_lr = (fptr))
439*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a presigned function pointer */
440*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_presigned_fptr(ts, presigned_fptr) \
441*4f1223e8SApple OSS Distributions 	((ts).__opaque_lr = (presigned_fptr))
442*4f1223e8SApple OSS Distributions /* Return sp field of arm_thread_state64_t as a data pointer value */
443*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_sp(ts) \
444*4f1223e8SApple OSS Distributions 	((uintptr_t)((ts).__opaque_sp))
445*4f1223e8SApple OSS Distributions /* Set sp field of arm_thread_state64_t to a data pointer value */
446*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_sp(ts, ptr) \
447*4f1223e8SApple OSS Distributions 	((ts).__opaque_sp = (void*)(uintptr_t)(ptr))
448*4f1223e8SApple OSS Distributions /* Return fp field of arm_thread_state64_t as a data pointer value */
449*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_fp(ts) \
450*4f1223e8SApple OSS Distributions 	((uintptr_t)((ts).__opaque_fp))
451*4f1223e8SApple OSS Distributions /* Set fp field of arm_thread_state64_t to a data pointer value */
452*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_fp(ts, ptr) \
453*4f1223e8SApple OSS Distributions 	((ts).__opaque_fp = (void*)(uintptr_t)(ptr))
454*4f1223e8SApple OSS Distributions /* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
455*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_ptrauth_strip(ts) \
456*4f1223e8SApple OSS Distributions 	(void)(ts)
457*4f1223e8SApple OSS Distributions 
458*4f1223e8SApple OSS Distributions #else /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
459*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
460*4f1223e8SApple OSS Distributions 
461*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a data pointer value */
462*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc(ts) \
463*4f1223e8SApple OSS Distributions 	((ts).__pc)
464*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a function pointer */
465*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc_fptr(ts) \
466*4f1223e8SApple OSS Distributions 	((void*)(uintptr_t)((ts).__pc))
467*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to a function pointer */
468*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
469*4f1223e8SApple OSS Distributions 	((ts).__pc = (uintptr_t)(fptr))
470*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to an already signed function pointer */
471*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_presigned_fptr(ts, presigned_fptr)           \
472*4f1223e8SApple OSS Distributions 	((ts).__pc = (uintptr_t)(presigned_fptr))
473*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a data pointer value */
474*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr(ts) \
475*4f1223e8SApple OSS Distributions 	((ts).__lr)
476*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a function pointer */
477*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr_fptr(ts) \
478*4f1223e8SApple OSS Distributions 	((void*)(uintptr_t)((ts).__lr))
479*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a function pointer */
480*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
481*4f1223e8SApple OSS Distributions 	((ts).__lr = (uintptr_t)(fptr))
482*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a presigned function pointer */
483*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_presigned_fptr(ts, presigned_fptr) \
484*4f1223e8SApple OSS Distributions 	((ts).__lr = ((uintptr_t)presigned_fptr))
485*4f1223e8SApple OSS Distributions /* Return sp field of arm_thread_state64_t as a data pointer value */
486*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_sp(ts) \
487*4f1223e8SApple OSS Distributions 	((ts).__sp)
488*4f1223e8SApple OSS Distributions /* Set sp field of arm_thread_state64_t to a data pointer value */
489*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_sp(ts, ptr) \
490*4f1223e8SApple OSS Distributions 	((ts).__sp = (uintptr_t)(ptr))
491*4f1223e8SApple OSS Distributions /* Return fp field of arm_thread_state64_t as a data pointer value */
492*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_fp(ts) \
493*4f1223e8SApple OSS Distributions 	((ts).__fp)
494*4f1223e8SApple OSS Distributions /* Set fp field of arm_thread_state64_t to a data pointer value */
495*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_fp(ts, ptr) \
496*4f1223e8SApple OSS Distributions 	((ts).__fp = (uintptr_t)(ptr))
497*4f1223e8SApple OSS Distributions /* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
498*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_ptrauth_strip(ts) \
499*4f1223e8SApple OSS Distributions 	(void)(ts)
500*4f1223e8SApple OSS Distributions 
501*4f1223e8SApple OSS Distributions #else /* __DARWIN_UNIX03 */
502*4f1223e8SApple OSS Distributions 
503*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a data pointer value */
504*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc(ts) \
505*4f1223e8SApple OSS Distributions 	((ts).pc)
506*4f1223e8SApple OSS Distributions /* Return pc field of arm_thread_state64_t as a function pointer */
507*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_pc_fptr(ts) \
508*4f1223e8SApple OSS Distributions 	((void*)(uintptr_t)((ts).pc))
509*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to a function pointer */
510*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
511*4f1223e8SApple OSS Distributions 	((ts).pc = (uintptr_t)(fptr))
512*4f1223e8SApple OSS Distributions /* Set pc field of arm_thread_state64_t to an already signed function pointer */
513*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_pc_presigned_fptr(ts, presigned_fptr)           \
514*4f1223e8SApple OSS Distributions 	((ts).pc = (uintptr_t)(presigned_fptr))
515*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a data pointer value */
516*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr(ts) \
517*4f1223e8SApple OSS Distributions 	((ts).lr)
518*4f1223e8SApple OSS Distributions /* Return lr field of arm_thread_state64_t as a function pointer */
519*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_lr_fptr(ts) \
520*4f1223e8SApple OSS Distributions 	((void*)(uintptr_t)((ts).lr))
521*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a function pointer */
522*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
523*4f1223e8SApple OSS Distributions 	((ts).lr = (uintptr_t)(fptr))
524*4f1223e8SApple OSS Distributions /* Set lr field of arm_thread_state64_t to a presigned function pointer */
525*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_lr_presigned_fptr(ts, presigned_fptr) \
526*4f1223e8SApple OSS Distributions 	((ts).lr = ((uintptr_t)presigned_fptr))
527*4f1223e8SApple OSS Distributions /* Return sp field of arm_thread_state64_t as a data pointer value */
528*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_sp(ts) \
529*4f1223e8SApple OSS Distributions 	((ts).sp)
530*4f1223e8SApple OSS Distributions /* Set sp field of arm_thread_state64_t to a data pointer value */
531*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_sp(ts, ptr) \
532*4f1223e8SApple OSS Distributions 	((ts).sp = (uintptr_t)(ptr))
533*4f1223e8SApple OSS Distributions /* Return fp field of arm_thread_state64_t as a data pointer value */
534*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_get_fp(ts) \
535*4f1223e8SApple OSS Distributions 	((ts).fp)
536*4f1223e8SApple OSS Distributions /* Set fp field of arm_thread_state64_t to a data pointer value */
537*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_set_fp(ts, ptr) \
538*4f1223e8SApple OSS Distributions 	((ts).fp = (uintptr_t)(ptr))
539*4f1223e8SApple OSS Distributions /* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
540*4f1223e8SApple OSS Distributions #define __darwin_arm_thread_state64_ptrauth_strip(ts) \
541*4f1223e8SApple OSS Distributions 	(void)(ts)
542*4f1223e8SApple OSS Distributions 
543*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
544*4f1223e8SApple OSS Distributions #endif /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
545*4f1223e8SApple OSS Distributions 
546*4f1223e8SApple OSS Distributions #endif /* __has_feature(ptrauth_calls) && defined(__LP64__) */
547*4f1223e8SApple OSS Distributions #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL && defined(__arm64__) */
548*4f1223e8SApple OSS Distributions #endif /* !defined(KERNEL) */
549*4f1223e8SApple OSS Distributions 
550*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
551*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_VFP_STATE struct __darwin_arm_vfp_state
552*4f1223e8SApple OSS Distributions _STRUCT_ARM_VFP_STATE
553*4f1223e8SApple OSS Distributions {
554*4f1223e8SApple OSS Distributions 	__uint32_t __r[64];
555*4f1223e8SApple OSS Distributions 	__uint32_t __fpscr;
556*4f1223e8SApple OSS Distributions };
557*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
558*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_VFP_STATE struct arm_vfp_state
559*4f1223e8SApple OSS Distributions _STRUCT_ARM_VFP_STATE
560*4f1223e8SApple OSS Distributions {
561*4f1223e8SApple OSS Distributions 	__uint32_t r[64];
562*4f1223e8SApple OSS Distributions 	__uint32_t fpscr;
563*4f1223e8SApple OSS Distributions };
564*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
565*4f1223e8SApple OSS Distributions 
566*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
567*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_NEON_STATE64 struct __darwin_arm_neon_state64
568*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_NEON_STATE   struct __darwin_arm_neon_state
569*4f1223e8SApple OSS Distributions 
570*4f1223e8SApple OSS Distributions #if defined(__arm64__)
571*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE64
572*4f1223e8SApple OSS Distributions {
573*4f1223e8SApple OSS Distributions 	__uint128_t __v[32];
574*4f1223e8SApple OSS Distributions 	__uint32_t  __fpsr;
575*4f1223e8SApple OSS Distributions 	__uint32_t  __fpcr;
576*4f1223e8SApple OSS Distributions };
577*4f1223e8SApple OSS Distributions 
578*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE
579*4f1223e8SApple OSS Distributions {
580*4f1223e8SApple OSS Distributions 	__uint128_t __v[16];
581*4f1223e8SApple OSS Distributions 	__uint32_t  __fpsr;
582*4f1223e8SApple OSS Distributions 	__uint32_t  __fpcr;
583*4f1223e8SApple OSS Distributions };
584*4f1223e8SApple OSS Distributions #elif defined(__arm__)
585*4f1223e8SApple OSS Distributions /*
586*4f1223e8SApple OSS Distributions  * No 128-bit intrinsic for ARM; leave it opaque for now.
587*4f1223e8SApple OSS Distributions  */
588*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE64
589*4f1223e8SApple OSS Distributions {
590*4f1223e8SApple OSS Distributions 	char opaque[(32 * 16) + (2 * sizeof(__uint32_t))];
591*4f1223e8SApple OSS Distributions } __attribute__((aligned(16)));
592*4f1223e8SApple OSS Distributions 
593*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE
594*4f1223e8SApple OSS Distributions {
595*4f1223e8SApple OSS Distributions 	char opaque[(16 * 16) + (2 * sizeof(__uint32_t))];
596*4f1223e8SApple OSS Distributions } __attribute__((aligned(16)));
597*4f1223e8SApple OSS Distributions 
598*4f1223e8SApple OSS Distributions #else
599*4f1223e8SApple OSS Distributions #error Unknown architecture.
600*4f1223e8SApple OSS Distributions #endif
601*4f1223e8SApple OSS Distributions 
602*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
603*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_NEON_STATE64 struct arm_neon_state64
604*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_NEON_STATE struct arm_neon_state
605*4f1223e8SApple OSS Distributions 
606*4f1223e8SApple OSS Distributions #if defined(__arm64__)
607*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE64
608*4f1223e8SApple OSS Distributions {
609*4f1223e8SApple OSS Distributions 	__uint128_t q[32];
610*4f1223e8SApple OSS Distributions 	uint32_t    fpsr;
611*4f1223e8SApple OSS Distributions 	uint32_t    fpcr;
612*4f1223e8SApple OSS Distributions };
613*4f1223e8SApple OSS Distributions 
614*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE
615*4f1223e8SApple OSS Distributions {
616*4f1223e8SApple OSS Distributions 	__uint128_t q[16];
617*4f1223e8SApple OSS Distributions 	uint32_t    fpsr;
618*4f1223e8SApple OSS Distributions 	uint32_t    fpcr;
619*4f1223e8SApple OSS Distributions };
620*4f1223e8SApple OSS Distributions #elif defined(__arm__)
621*4f1223e8SApple OSS Distributions /*
622*4f1223e8SApple OSS Distributions  * No 128-bit intrinsic for ARM; leave it opaque for now.
623*4f1223e8SApple OSS Distributions  */
624*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE64
625*4f1223e8SApple OSS Distributions {
626*4f1223e8SApple OSS Distributions 	char opaque[(32 * 16) + (2 * sizeof(__uint32_t))];
627*4f1223e8SApple OSS Distributions } __attribute__((aligned(16)));
628*4f1223e8SApple OSS Distributions 
629*4f1223e8SApple OSS Distributions _STRUCT_ARM_NEON_STATE
630*4f1223e8SApple OSS Distributions {
631*4f1223e8SApple OSS Distributions 	char opaque[(16 * 16) + (2 * sizeof(__uint32_t))];
632*4f1223e8SApple OSS Distributions } __attribute__((aligned(16)));
633*4f1223e8SApple OSS Distributions 
634*4f1223e8SApple OSS Distributions #else
635*4f1223e8SApple OSS Distributions #error Unknown architecture.
636*4f1223e8SApple OSS Distributions #endif
637*4f1223e8SApple OSS Distributions 
638*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
639*4f1223e8SApple OSS Distributions 
640*4f1223e8SApple OSS Distributions 
641*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_PAGEIN_STATE struct __arm_pagein_state
642*4f1223e8SApple OSS Distributions _STRUCT_ARM_PAGEIN_STATE
643*4f1223e8SApple OSS Distributions {
644*4f1223e8SApple OSS Distributions 	int __pagein_error;
645*4f1223e8SApple OSS Distributions };
646*4f1223e8SApple OSS Distributions 
647*4f1223e8SApple OSS Distributions /*
648*4f1223e8SApple OSS Distributions  * Debug State
649*4f1223e8SApple OSS Distributions  */
650*4f1223e8SApple OSS Distributions #if defined(__arm__)
651*4f1223e8SApple OSS Distributions /* Old-fashioned debug state is only for ARM */
652*4f1223e8SApple OSS Distributions 
653*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
654*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_DEBUG_STATE struct __darwin_arm_debug_state
655*4f1223e8SApple OSS Distributions _STRUCT_ARM_DEBUG_STATE
656*4f1223e8SApple OSS Distributions {
657*4f1223e8SApple OSS Distributions 	__uint32_t __bvr[16];
658*4f1223e8SApple OSS Distributions 	__uint32_t __bcr[16];
659*4f1223e8SApple OSS Distributions 	__uint32_t __wvr[16];
660*4f1223e8SApple OSS Distributions 	__uint32_t __wcr[16];
661*4f1223e8SApple OSS Distributions };
662*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
663*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_DEBUG_STATE struct arm_debug_state
664*4f1223e8SApple OSS Distributions _STRUCT_ARM_DEBUG_STATE
665*4f1223e8SApple OSS Distributions {
666*4f1223e8SApple OSS Distributions 	__uint32_t bvr[16];
667*4f1223e8SApple OSS Distributions 	__uint32_t bcr[16];
668*4f1223e8SApple OSS Distributions 	__uint32_t wvr[16];
669*4f1223e8SApple OSS Distributions 	__uint32_t wcr[16];
670*4f1223e8SApple OSS Distributions };
671*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
672*4f1223e8SApple OSS Distributions 
673*4f1223e8SApple OSS Distributions #elif defined(__arm64__)
674*4f1223e8SApple OSS Distributions 
675*4f1223e8SApple OSS Distributions /* ARM's arm_debug_state is ARM64's arm_legacy_debug_state */
676*4f1223e8SApple OSS Distributions 
677*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
678*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_LEGACY_DEBUG_STATE struct __arm_legacy_debug_state
679*4f1223e8SApple OSS Distributions _STRUCT_ARM_LEGACY_DEBUG_STATE
680*4f1223e8SApple OSS Distributions {
681*4f1223e8SApple OSS Distributions 	__uint32_t __bvr[16];
682*4f1223e8SApple OSS Distributions 	__uint32_t __bcr[16];
683*4f1223e8SApple OSS Distributions 	__uint32_t __wvr[16];
684*4f1223e8SApple OSS Distributions 	__uint32_t __wcr[16];
685*4f1223e8SApple OSS Distributions };
686*4f1223e8SApple OSS Distributions #else /* __DARWIN_UNIX03 */
687*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_LEGACY_DEBUG_STATE struct arm_legacy_debug_state
688*4f1223e8SApple OSS Distributions _STRUCT_ARM_LEGACY_DEBUG_STATE
689*4f1223e8SApple OSS Distributions {
690*4f1223e8SApple OSS Distributions 	__uint32_t bvr[16];
691*4f1223e8SApple OSS Distributions 	__uint32_t bcr[16];
692*4f1223e8SApple OSS Distributions 	__uint32_t wvr[16];
693*4f1223e8SApple OSS Distributions 	__uint32_t wcr[16];
694*4f1223e8SApple OSS Distributions };
695*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
696*4f1223e8SApple OSS Distributions #else
697*4f1223e8SApple OSS Distributions #error unknown architecture
698*4f1223e8SApple OSS Distributions #endif
699*4f1223e8SApple OSS Distributions 
700*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
701*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_DEBUG_STATE32 struct __darwin_arm_debug_state32
702*4f1223e8SApple OSS Distributions _STRUCT_ARM_DEBUG_STATE32
703*4f1223e8SApple OSS Distributions {
704*4f1223e8SApple OSS Distributions 	__uint32_t __bvr[16];
705*4f1223e8SApple OSS Distributions 	__uint32_t __bcr[16];
706*4f1223e8SApple OSS Distributions 	__uint32_t __wvr[16];
707*4f1223e8SApple OSS Distributions 	__uint32_t __wcr[16];
708*4f1223e8SApple OSS Distributions 	__uint64_t __mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
709*4f1223e8SApple OSS Distributions };
710*4f1223e8SApple OSS Distributions 
711*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_DEBUG_STATE64 struct __darwin_arm_debug_state64
712*4f1223e8SApple OSS Distributions _STRUCT_ARM_DEBUG_STATE64
713*4f1223e8SApple OSS Distributions {
714*4f1223e8SApple OSS Distributions 	__uint64_t __bvr[16];
715*4f1223e8SApple OSS Distributions 	__uint64_t __bcr[16];
716*4f1223e8SApple OSS Distributions 	__uint64_t __wvr[16];
717*4f1223e8SApple OSS Distributions 	__uint64_t __wcr[16];
718*4f1223e8SApple OSS Distributions 	__uint64_t __mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
719*4f1223e8SApple OSS Distributions };
720*4f1223e8SApple OSS Distributions #else /* !__DARWIN_UNIX03 */
721*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_DEBUG_STATE32 struct arm_debug_state32
722*4f1223e8SApple OSS Distributions _STRUCT_ARM_DEBUG_STATE32
723*4f1223e8SApple OSS Distributions {
724*4f1223e8SApple OSS Distributions 	__uint32_t bvr[16];
725*4f1223e8SApple OSS Distributions 	__uint32_t bcr[16];
726*4f1223e8SApple OSS Distributions 	__uint32_t wvr[16];
727*4f1223e8SApple OSS Distributions 	__uint32_t wcr[16];
728*4f1223e8SApple OSS Distributions 	__uint64_t mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
729*4f1223e8SApple OSS Distributions };
730*4f1223e8SApple OSS Distributions 
731*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_DEBUG_STATE64 struct arm_debug_state64
732*4f1223e8SApple OSS Distributions _STRUCT_ARM_DEBUG_STATE64
733*4f1223e8SApple OSS Distributions {
734*4f1223e8SApple OSS Distributions 	__uint64_t bvr[16];
735*4f1223e8SApple OSS Distributions 	__uint64_t bcr[16];
736*4f1223e8SApple OSS Distributions 	__uint64_t wvr[16];
737*4f1223e8SApple OSS Distributions 	__uint64_t wcr[16];
738*4f1223e8SApple OSS Distributions 	__uint64_t mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
739*4f1223e8SApple OSS Distributions };
740*4f1223e8SApple OSS Distributions #endif /* __DARWIN_UNIX03 */
741*4f1223e8SApple OSS Distributions 
742*4f1223e8SApple OSS Distributions #if __DARWIN_UNIX03
743*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_CPMU_STATE64 struct __darwin_arm_cpmu_state64
744*4f1223e8SApple OSS Distributions _STRUCT_ARM_CPMU_STATE64
745*4f1223e8SApple OSS Distributions {
746*4f1223e8SApple OSS Distributions 	__uint64_t __ctrs[16];
747*4f1223e8SApple OSS Distributions };
748*4f1223e8SApple OSS Distributions #else /* __DARWIN_UNIX03 */
749*4f1223e8SApple OSS Distributions #define _STRUCT_ARM_CPMU_STATE64 struct arm_cpmu_state64
750*4f1223e8SApple OSS Distributions _STRUCT_ARM_CPMU_STATE64
751*4f1223e8SApple OSS Distributions {
752*4f1223e8SApple OSS Distributions 	__uint64_t ctrs[16];
753*4f1223e8SApple OSS Distributions };
754*4f1223e8SApple OSS Distributions #endif /* !__DARWIN_UNIX03 */
755*4f1223e8SApple OSS Distributions 
756*4f1223e8SApple OSS Distributions #endif /* defined (__arm__) || defined (__arm64__) */
757*4f1223e8SApple OSS Distributions 
758*4f1223e8SApple OSS Distributions #endif /* _MACH_ARM__STRUCTS_H_ */
759