Commit bd72baff authored by Kiryl Shutsemau's avatar Kiryl Shutsemau Committed by Ingo Molnar
Browse files

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: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: default avatarIngo 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
parent fadb6f56
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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
+2 −5
Original line number Diff line number Diff line
@@ -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