1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_COMPILER_H
3 #define __ASM_COMPILER_H
6 #define ARM64_ASM_PREAMBLE ".arch " ARM64_ASM_ARCH "\n"
8 #define ARM64_ASM_PREAMBLE
11 #define xpaclri(ptr) \
13 register unsigned long __xpaclri_ptr asm("x30") = (ptr); \
18 : "+r" (__xpaclri_ptr)); \
23 #ifdef CONFIG_ARM64_PTR_AUTH_KERNEL
24 #define ptrauth_strip_kernel_insn_pac(ptr) xpaclri(ptr)
26 #define ptrauth_strip_kernel_insn_pac(ptr) (ptr)
29 #ifdef CONFIG_ARM64_PTR_AUTH
30 #define ptrauth_strip_user_insn_pac(ptr) xpaclri(ptr)
32 #define ptrauth_strip_user_insn_pac(ptr) (ptr)
35 #if !defined(CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC)
36 #define __builtin_return_address(val) \
37 (void *)(ptrauth_strip_kernel_insn_pac((unsigned long)__builtin_return_address(val)))
40 #endif /* __ASM_COMPILER_H */