[PATCH] ARM: asm: Rewrite get_thread_info using BIC
From: Linus Walleij <hidden>
Date: 2020-05-27 12:24:10
Subsystem:
arm port, the rest · Maintainers:
Russell King, Linus Torvalds
By using two BIC instructions we can replace the ARM/thumb split instructions with something that works on either and also save one instruction. Based on code from proc-macros.S and an idea from Ard Biesheuvel. We need to include <linux/const.h> to expand the THREAD_SIZE definition properly in the preprocessor. Suggested-by: Russell King <linux@armlinux.org.uk> Suggested-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Linus Walleij <redacted> --- arch/arm/include/asm/assembler.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
index 99929122dad7..f218e8cf7f88 100644
--- a/arch/arm/include/asm/assembler.h
+++ b/arch/arm/include/asm/assembler.h@@ -17,6 +17,7 @@ #error "Only include this from assembly code" #endif +#include <linux/const.h> #include <asm/ptrace.h> #include <asm/domain.h> #include <asm/opcodes-virt.h>
@@ -203,10 +204,8 @@ * Get current thread_info. */ .macro get_thread_info, rd - ARM( mov \rd, sp, lsr #THREAD_SIZE_ORDER + PAGE_SHIFT ) - THUMB( mov \rd, sp ) - THUMB( lsr \rd, \rd, #THREAD_SIZE_ORDER + PAGE_SHIFT ) - mov \rd, \rd, lsl #THREAD_SIZE_ORDER + PAGE_SHIFT + bic \rd, sp, #(THREAD_SIZE - 1) & ~63 + bic \rd, \rd, #63 .endm /*
--
2.25.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel