From: Ard Biesheuvel Date: Wed, 20 Apr 2022 08:38:27 +0000 (+0100) Subject: ARM: 9194/1: assembler: simplify ldr_this_cpu for !SMP builds X-Git-Tag: v6.6.17~7509^2~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=952f03316352c606bebef56ba8f9642edbb8e348;p=platform%2Fkernel%2Flinux-rpi.git ARM: 9194/1: assembler: simplify ldr_this_cpu for !SMP builds When CONFIG_SMP is not defined, the CPU offset is always zero, and so we can simplify the sequence to load a per-CPU variable. Signed-off-by: Ard Biesheuvel Reviewed-by: Linus Walleij Signed-off-by: Russell King (Oracle) --- diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 34fe8d2..8e59d74 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -692,8 +692,12 @@ THUMB( orr \reg , \reg , #PSR_T_BIT ) /* * ldr_va - load a 32-bit word from the virtual address of \sym */ - .macro ldr_va, rd:req, sym:req, cond + .macro ldr_va, rd:req, sym:req, cond, tmp + .ifnb \tmp + __ldst_va ldr, \rd, \tmp, \sym, \cond + .else __ldst_va ldr, \rd, \rd, \sym, \cond + .endif .endm /* @@ -727,9 +731,11 @@ THUMB( orr \reg , \reg , #PSR_T_BIT ) * are permitted to overlap with 'rd' if != sp */ .macro ldr_this_cpu, rd:req, sym:req, t1:req, t2:req -#if __LINUX_ARM_ARCH__ >= 7 || \ - !defined(CONFIG_ARM_HAS_GROUP_RELOCS) || \ - (defined(MODULE) && defined(CONFIG_ARM_MODULE_PLTS)) +#ifndef CONFIG_SMP + ldr_va \rd, \sym, tmp=\t1 +#elif __LINUX_ARM_ARCH__ >= 7 || \ + !defined(CONFIG_ARM_HAS_GROUP_RELOCS) || \ + (defined(MODULE) && defined(CONFIG_ARM_MODULE_PLTS)) this_cpu_offset \t1 mov_l \t2, \sym ldr \rd, [\t1, \t2]