Skip to contentSkip to conversation

Consolidate stack size information into THREAD_SIZE_ORDER

PATCH New Tim Bird 3 participants 4 messages May 24, 2012 – Jun 22, 2012 Arm (32-bit)

lore
Share & tools
lore

Tim Bird

author
#0 lore raw

PATCH 1/1 Consolidate stack size information into THREAD_SIZE_ORDER

This reduces the number of magic values in the code, as well as makes it easier to experiment with larger or smaller stack sizes.

PATCH FOLLOWS

---
 arch/arm/include/asm/thread_info.h |    2 +-
 arch/arm/kernel/entry-header.S     |    8 ++++----
 arch/arm/mm/proc-macros.S          |    4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)
arch/arm/include/asm/thread_info.h +1 -1
index 0f04d84..5172c36 100644
@@ -16,7 +16,7 @@
 #include <asm/fpstate.h>
 
 #define THREAD_SIZE_ORDER	1
-#define THREAD_SIZE		8192
+#define THREAD_SIZE		(4096 << THREAD_SIZE_ORDER)
 #define THREAD_START_SP		(THREAD_SIZE - 8)
 
 #ifndef __ASSEMBLY__
arch/arm/kernel/entry-header.S +4 -4
index 9a8531e..f94216b 100644
@@ -109,8 +109,8 @@
 	.endm
 
 	.macro	get_thread_info, rd
-	mov	\rd, sp, lsr #13
-	mov	\rd, \rd, lsl #13
+	mov	\rd, sp, lsr #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	.endm
 
 	@
@@ -150,8 +150,8 @@
 
 	.macro	get_thread_info, rd
 	mov	\rd, sp
-	lsr	\rd, \rd, #13
-	mov	\rd, \rd, lsl #13
+	lsr	\rd, \rd, #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	.endm
 
 	@
arch/arm/mm/proc-macros.S +2 -2
index 2d8ff3a..7006c88 100644
@@ -30,8 +30,8 @@
  * act_mm - get current->active_mm
  */
 	.macro	act_mm, rd
-	bic	\rd, sp, #8128
-	bic	\rd, \rd, #63
+	mov	\rd, sp, lsr #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	ldr	\rd, [\rd, #TI_TASK]
 	ldr	\rd, [\rd, #TSK_ACTIVE_MM]
 	.endm
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 Consolidate stack size information into THREAD_SIZE_ORDER

Quoted 4 lines · Tim Bird

This reduces the number of magic values in the code, as well as makes it easier to experiment with larger or smaller stack sizes.

Just ran my eyes over it, looks fine.

Signature · 2 lines
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius
author
#2 lore raw

PATCH 1/1 Consolidate stack size information into THREAD_SIZE_ORDER

In reply to Tim Bird

Any response to the following, which I submitted about a month ago? May I submit it to the ARM patch-queue? Note that Ben Dooks took a quick look at it, but I haven't gotten an official ACK-ed by from anyone.

It's rather trival, has no performance impact, and
makes the code more flexible IMHO. I realize it's
not the most important issue in the world, but it will make my life easier.

[original patch follows]

This reduces the number of magic values in the code, as well as makes it easier to experiment with larger or smaller stack sizes.

PATCH FOLLOWS

---
 arch/arm/include/asm/thread_info.h |    2 +-
 arch/arm/kernel/entry-header.S     |    8 ++++----
 arch/arm/mm/proc-macros.S          |    4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)
arch/arm/include/asm/thread_info.h +1 -1
index 0f04d84..5172c36 100644
@@ -16,7 +16,7 @@
 #include <asm/fpstate.h>
 
 #define THREAD_SIZE_ORDER	1
-#define THREAD_SIZE		8192
+#define THREAD_SIZE		(4096 << THREAD_SIZE_ORDER)
 #define THREAD_START_SP		(THREAD_SIZE - 8)
 
 #ifndef __ASSEMBLY__
arch/arm/kernel/entry-header.S +4 -4
index 9a8531e..f94216b 100644
@@ -109,8 +109,8 @@
 	.endm
 
 	.macro	get_thread_info, rd
-	mov	\rd, sp, lsr #13
-	mov	\rd, \rd, lsl #13
+	mov	\rd, sp, lsr #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	.endm
 
 	@
@@ -150,8 +150,8 @@
 
 	.macro	get_thread_info, rd
 	mov	\rd, sp
-	lsr	\rd, \rd, #13
-	mov	\rd, \rd, lsl #13
+	lsr	\rd, \rd, #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	.endm
 
 	@
arch/arm/mm/proc-macros.S +2 -2
index 2d8ff3a..7006c88 100644
@@ -30,8 +30,8 @@
  * act_mm - get current->active_mm
  */
 	.macro	act_mm, rd
-	bic	\rd, sp, #8128
-	bic	\rd, \rd, #63
+	mov	\rd, sp, lsr #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	ldr	\rd, [\rd, #TI_TASK]
 	ldr	\rd, [\rd, #TSK_ACTIVE_MM]
 	.endm
Signature · 1 line
1.7.9.5
#3 lore raw

PATCH 1/1 Consolidate stack size information into THREAD_SIZE_ORDER

Hi Tim,

Quoted 4 lines · Tim Bird

Any response to the following, which I submitted about a month ago? May I submit it to the ARM patch-queue? Note that Ben Dooks took a quick look at it, but I haven't gotten an official ACK-ed by from anyone.

[...]

Quoted 18 lines
arch/arm/include/asm/thread_info.h +1 -1
index 0f04d84..5172c36 100644
@@ -16,7 +16,7 @@
 #include <asm/fpstate.h>
 
 #define THREAD_SIZE_ORDER	1
-#define THREAD_SIZE		8192
+#define THREAD_SIZE		(4096 << THREAD_SIZE_ORDER)
 #define THREAD_START_SP		(THREAD_SIZE - 8)
 
 #ifndef __ASSEMBLY__
arch/arm/kernel/entry-header.S +0 -0
index 9a8531e..f94216b 100644

arch/arm/kernel/entry-header.S line 114

Quoted 8 lines
arch/arm/kernel/entry-header.S +2 -2
@@ -109,8 +109,8 @@
 	.endm
 
 	.macro	get_thread_info, rd
-	mov	\rd, sp, lsr #13
-	mov	\rd, \rd, lsl #13
+	mov	\rd, sp, lsr #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	.endm

Maybe use PAGE_SHIFT instead of hardcoding the 12?

arch/arm/kernel/entry-header.S line 155

Quoted 10 lines
arch/arm/kernel/entry-header.S +2 -2
 	@
@@ -150,8 +150,8 @@
 
 	.macro	get_thread_info, rd
 	mov	\rd, sp
-	lsr	\rd, \rd, #13
-	mov	\rd, \rd, lsl #13
+	lsr	\rd, \rd, #12 + THREAD_SIZE_ORDER
+	mov	\rd, \rd, lsl #12 + THREAD_SIZE_ORDER
 	.endm

I appreciate you've followed the same style as before but while we're here maybe you could rewrite the lsr as a mov for consistency?

Will