File Index
Files and directories
Sign in
FILE

compiler.h

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/include/asm/compiler.h C
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef __ASM_COMPILER_H
 3#define __ASM_COMPILER_H
 4
 5#ifdef ARM64_ASM_ARCH
 6#define ARM64_ASM_PREAMBLE ".arch " ARM64_ASM_ARCH "\n"
 7#else
 8#define ARM64_ASM_PREAMBLE
 9#endif
10
11#define xpaclri(ptr)							\
12({									\
13	register unsigned long __xpaclri_ptr asm("x30") = (ptr);	\
14									\
15	asm(								\
16	ARM64_ASM_PREAMBLE						\
17	"	hint	#7\n"						\
18	: "+r" (__xpaclri_ptr));					\
19									\
20	__xpaclri_ptr;							\
21})
22
23#ifdef CONFIG_ARM64_PTR_AUTH_KERNEL
24#define ptrauth_strip_kernel_insn_pac(ptr)	xpaclri(ptr)
25#else
26#define ptrauth_strip_kernel_insn_pac(ptr)	(ptr)
27#endif
28
29#ifdef CONFIG_ARM64_PTR_AUTH
30#define ptrauth_strip_user_insn_pac(ptr)	xpaclri(ptr)
31#else
32#define ptrauth_strip_user_insn_pac(ptr)	(ptr)
33#endif
34
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)))
38#endif
39
40#endif /* __ASM_COMPILER_H */
~/ Read-only file preview.