Commit 952f0331 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Russell King (Oracle)

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: default avatarArd Biesheuvel <ardb@kernel.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
parent 7719a68b
...@@ -692,8 +692,12 @@ THUMB( orr \reg , \reg , #PSR_T_BIT ) ...@@ -692,8 +692,12 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
/* /*
* ldr_va - load a 32-bit word from the virtual address of \sym * 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 __ldst_va ldr, \rd, \rd, \sym, \cond
.endif
.endm .endm
/* /*
...@@ -727,9 +731,11 @@ THUMB( orr \reg , \reg , #PSR_T_BIT ) ...@@ -727,9 +731,11 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
* are permitted to overlap with 'rd' if != sp * are permitted to overlap with 'rd' if != sp
*/ */
.macro ldr_this_cpu, rd:req, sym:req, t1:req, t2:req .macro ldr_this_cpu, rd:req, sym:req, t1:req, t2:req
#if __LINUX_ARM_ARCH__ >= 7 || \ #ifndef CONFIG_SMP
!defined(CONFIG_ARM_HAS_GROUP_RELOCS) || \ ldr_va \rd, \sym, tmp=\t1
(defined(MODULE) && defined(CONFIG_ARM_MODULE_PLTS)) #elif __LINUX_ARM_ARCH__ >= 7 || \
!defined(CONFIG_ARM_HAS_GROUP_RELOCS) || \
(defined(MODULE) && defined(CONFIG_ARM_MODULE_PLTS))
this_cpu_offset \t1 this_cpu_offset \t1
mov_l \t2, \sym mov_l \t2, \sym
ldr \rd, [\t1, \t2] ldr \rd, [\t1, \t2]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment