5 // Created by Rokhini Prabhu on 4/7/20.
8 #ifndef _OS_ATOMIC_FIFO_QUEUE_
9 #define _OS_ATOMIC_FIFO_QUEUE_
11 #if defined(__arm64e__) && __has_feature(ptrauth_calls)
14 #define COMMPAGE_PFZ_BASE_AUTH_KEY ptrauth_key_process_independent_code
15 #define COMMPAGE_PFZ_FN_AUTH_KEY ptrauth_key_function_pointer
16 #define COMMPAGE_PFZ_BASE_DISCRIMINATOR ptrauth_string_discriminator("pfz")
18 #define COMMPAGE_PFZ_BASE_PTR __ptrauth(COMMPAGE_PFZ_BASE_AUTH_KEY, 1, COMMPAGE_PFZ_BASE_DISCRIMINATOR)
20 #define SIGN_PFZ_FUNCTION_PTR(ptr) ptrauth_sign_unauthenticated(ptr, COMMPAGE_PFZ_FN_AUTH_KEY, 0)
22 #else /* defined(__arm64e__) && __has_feature(ptrauth_calls) */
24 #define COMMPAGE_PFZ_BASE_AUTH_KEY 0
25 #define COMMPAGE_PFZ_FN_AUTH_KEY 0
26 #define COMMPAGE_PFZ_BASE_DISCRIMINATOR 0
28 #define COMMPAGE_PFZ_BASE_PTR
30 #define SIGN_PFZ_FUNCTION_PTR(ptr) ptr
31 #endif /* defined(__arm64e__) && __has_feature(ptrauth_calls) */
33 extern void *COMMPAGE_PFZ_BASE_PTR commpage_pfz_base
;
35 #endif /* _OS_ATOMIC_FIFO_QUEUE_ */