[PATCH v5 4/8] riscv/runtime-const: Replace open-coded placeholder with RUNTIME_MAGIC
Guo Ren
guoren at kernel.org
Mon Jun 29 23:47:57 PDT 2026
On Tue, Jun 30, 2026 at 12:57 PM K Prateek Nayak <kprateek.nayak at amd.com> wrote:
>
> Define the placeholder used for lui + addi[w] patching sequence as
> RUNTIME_MAGIC and use that instead of open coding the constants in the
> inline assembly.
>
> No functional changes intended.
>
> Suggested-by: Guo Ren <guoren at kernel.org>
> Reviewed-by: Charlie Jenkins <thecharlesjenkins at gmail.com>
> Tested-by: Charlie Jenkins <thecharlesjenkins at gmail.com>
> Signed-off-by: K Prateek Nayak <kprateek.nayak at amd.com>
> ---
> changelog v4..v5:
>
> o Collected tags from Charlie (Thanks a ton!)
> ---
> arch/riscv/include/asm/runtime-const.h | 38 ++++++++++++++------------
> 1 file changed, 20 insertions(+), 18 deletions(-)
>
> diff --git a/arch/riscv/include/asm/runtime-const.h b/arch/riscv/include/asm/runtime-const.h
> index 900db0a103d05..1ce02605d2e43 100644
> --- a/arch/riscv/include/asm/runtime-const.h
> +++ b/arch/riscv/include/asm/runtime-const.h
> @@ -15,21 +15,23 @@
>
> #include <linux/uaccess.h>
>
> +#define RUNTIME_MAGIC __ASM_STR(0x89ABCDEF)
> +
> #ifdef CONFIG_32BIT
> -#define runtime_const_ptr(sym) \
> -({ \
> - typeof(sym) __ret; \
> - asm_inline(".option push\n\t" \
> - ".option norvc\n\t" \
> - "1:\t" \
> - "lui %[__ret],0x89abd\n\t" \
> - "addi %[__ret],%[__ret],-0x211\n\t" \
> - ".option pop\n\t" \
> - ".pushsection runtime_ptr_" #sym ",\"a\"\n\t" \
> - ".long 1b - .\n\t" \
> - ".popsection" \
> - : [__ret] "=r" (__ret)); \
> - __ret; \
> +#define runtime_const_ptr(sym) \
> +({ \
> + typeof(sym) __ret; \
> + asm_inline(".option push\n\t" \
> + ".option norvc\n\t" \
> + "1:\t" \
> + "lui %[__ret], %%hi(" RUNTIME_MAGIC ")\n\t" \
> + "addi %[__ret],%[__ret], %%lo(" RUNTIME_MAGIC ")\n\t" \
> + ".option pop\n\t" \
> + ".pushsection runtime_ptr_" #sym ",\"a\"\n\t" \
> + ".long 1b - .\n\t" \
> + ".popsection" \
> + : [__ret] "=r" (__ret)); \
> + __ret; \
> })
> #else
> /*
> @@ -46,10 +48,10 @@
> ".option push\n\t" \
> ".option norvc\n\t" \
> "1:\t" \
> - "lui %[__ret],0x89abd\n\t" \
> - "lui %[__tmp],0x1234\n\t" \
> - "addiw %[__ret],%[__ret],-0x211\n\t" \
> - "addiw %[__tmp],%[__tmp],0x567\n\t" \
> + "lui %[__ret], %%hi(" RUNTIME_MAGIC ")\n\t" \
> + "lui %[__tmp], %%hi(" RUNTIME_MAGIC ")\n\t" \
> + "addiw %[__ret],%[__ret], %%lo(" RUNTIME_MAGIC ")\n\t" \
> + "addiw %[__tmp],%[__tmp], %%lo(" RUNTIME_MAGIC ")\n\t" \
LGTM!
Reviewed-by: Guo Ren <guoren at kernel.org>
--
Best Regards
Guo Ren
More information about the linux-arm-kernel
mailing list