Thread (6 messages) 6 messages, 3 authors, 2020-07-21

Re: [PATCH] ARM: asm: Rewrite get_thread_info using BIC

From: Dmitry Osipenko <digetx@gmail.com>
Date: 2020-07-21 13:41:25

21.07.2020 16:38, Russell King - ARM Linux admin пишет:
On Tue, Jul 21, 2020 at 04:37:09PM +0300, Dmitry Osipenko wrote:
quoted
27.05.2020 15:22, Linus Walleij пишет:
quoted
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
 
 /*
Hello, Linus!

This patch was merged into a recent linux-next, unfortunately it breaks
CONFIG_THUMB2_KERNEL=y compilation:

arch/arm/kernel/entry-common.S: Assembler messages:
arch/arm/kernel/entry-common.S:159: Error: r13 not allowed here -- `bic
tsk,sp,#(((1<<12)<<1)-1)&~63'
arch/arm/kernel/entry-common.S:246: Error: r13 not allowed here -- `bic
tsk,sp,#(((1<<12)<<1)-1)&~63'
make[2]: *** [scripts/Makefile.build:361:
arch/arm/kernel/entry-common.o] Error 1
I've dropped it before you sent this email...
Hello, Russell!

Good to know, thank you!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help