mirror of
https://github.com/torvalds/linux.git
synced 2025-04-12 06:49:52 +00:00
x86/runtime-const: Add the RUNTIME_CONST_PTR assembly macro
Add an assembly macro to refer runtime cost. It hides linker magic and makes assembly more readable. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20250304153342.2016569-1-kirill.shutemov@linux.intel.com
This commit is contained in:
parent
fadb6f569b
commit
bd72baff22
@ -2,6 +2,18 @@
|
||||
#ifndef _ASM_RUNTIME_CONST_H
|
||||
#define _ASM_RUNTIME_CONST_H
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
|
||||
.macro RUNTIME_CONST_PTR sym reg
|
||||
movq $0x0123456789abcdef, %\reg
|
||||
1:
|
||||
.pushsection runtime_ptr_\sym, "a"
|
||||
.long 1b - 8 - .
|
||||
.popsection
|
||||
.endm
|
||||
|
||||
#else /* __ASSEMBLY__ */
|
||||
|
||||
#define runtime_const_ptr(sym) ({ \
|
||||
typeof(sym) __ret; \
|
||||
asm_inline("mov %1,%0\n1:\n" \
|
||||
@ -58,4 +70,5 @@ static inline void runtime_const_fixup(void (*fn)(void *, unsigned long),
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif
|
||||
|
@ -35,16 +35,13 @@
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/smap.h>
|
||||
#include <asm/runtime-const.h>
|
||||
|
||||
#define ASM_BARRIER_NOSPEC ALTERNATIVE "", "lfence", X86_FEATURE_LFENCE_RDTSC
|
||||
|
||||
.macro check_range size:req
|
||||
.if IS_ENABLED(CONFIG_X86_64)
|
||||
movq $0x0123456789abcdef,%rdx
|
||||
1:
|
||||
.pushsection runtime_ptr_USER_PTR_MAX,"a"
|
||||
.long 1b - 8 - .
|
||||
.popsection
|
||||
RUNTIME_CONST_PTR USER_PTR_MAX, rdx
|
||||
cmp %rdx, %rax
|
||||
cmova %rdx, %rax
|
||||
.else
|
||||
|
Loading…
x
Reference in New Issue
Block a user