Commit 90f1b431 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc: allow minimum sized kernel stack frames



This affects only 64-bit ELFv2 kernels, and reduces the minimum
asm-created stack frame size from 112 to 32 byte on those kernels.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221127124942.1665522-16-npiggin@gmail.com
parent 4cefb0f6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -602,7 +602,7 @@ start_here:
	lis	r1,init_thread_union@ha
	addi	r1,r1,init_thread_union@l
	li	r0,0
	stwu	r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
	stwu	r0,THREAD_SIZE-STACK_FRAME_MIN_SIZE(r1)

	bl	early_init	/* We have to do this with MMU on */

+3 −3
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ _GLOBAL(_start);
	lis	r1,init_thread_union@h
	ori	r1,r1,init_thread_union@l
	li	r0,0
	stwu	r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
	stwu	r0,THREAD_SIZE-STACK_FRAME_MIN_SIZE(r1)

	bl	early_init

@@ -1012,7 +1012,7 @@ _GLOBAL(start_secondary_47x)
	 */
	lis	r1,temp_boot_stack@h
	ori	r1,r1,temp_boot_stack@l
	addi	r1,r1,1024-STACK_FRAME_OVERHEAD
	addi	r1,r1,1024-STACK_FRAME_MIN_SIZE
	li	r0,0
	stw	r0,0(r1)
	bl	mmu_init_secondary
@@ -1025,7 +1025,7 @@ _GLOBAL(start_secondary_47x)
	lwz	r1,TASK_STACK(r2)

	/* Current stack pointer */
	addi	r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
	addi	r1,r1,THREAD_SIZE-STACK_FRAME_MIN_SIZE
	li	r0,0
	stw	r0,0(r1)

+3 −3
Original line number Diff line number Diff line
@@ -424,7 +424,7 @@ generic_secondary_common_init:

	/* Create a temp kernel stack for use before relocation is on.	*/
	ld	r1,PACAEMERGSP(r13)
	subi	r1,r1,STACK_FRAME_OVERHEAD
	subi	r1,r1,STACK_FRAME_MIN_SIZE

	/* See if we need to call a cpu state restore handler */
	LOAD_REG_ADDR(r23, cur_cpu_spec)
@@ -780,7 +780,7 @@ _GLOBAL(pmac_secondary_start)

	/* Create a temp kernel stack for use before relocation is on.	*/
	ld	r1,PACAEMERGSP(r13)
	subi	r1,r1,STACK_FRAME_OVERHEAD
	subi	r1,r1,STACK_FRAME_MIN_SIZE

	b	__secondary_start

@@ -958,7 +958,7 @@ start_here_multiplatform:
	LOAD_REG_IMMEDIATE(r1,THREAD_SIZE)
	add	r1,r3,r1
	li	r0,0
	stdu	r0,-STACK_FRAME_OVERHEAD(r1)
	stdu	r0,-STACK_FRAME_MIN_SIZE(r1)

	/*
	 * Do very early kernel initializations, including initial hash table
+2 −2
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ set_ivor:
	lis	r1,init_thread_union@h
	ori	r1,r1,init_thread_union@l
	li	r0,0
	stwu	r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
	stwu	r0,THREAD_SIZE-STACK_FRAME_MIN_SIZE(r1)

#ifdef CONFIG_SMP
	stw	r24, TASK_CPU(r2)
@@ -1044,7 +1044,7 @@ __secondary_start:
	lwz	r1,TASK_STACK(r2)

	/* stack */
	addi	r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
	addi	r1,r1,THREAD_SIZE-STACK_FRAME_MIN_SIZE
	li	r0,0
	stw	r0,0(r1)

+1 −1
Original line number Diff line number Diff line
@@ -537,7 +537,7 @@ start_here:
	ori	r0, r0, STACK_END_MAGIC@l
	stw	r0, 0(r1)
	li	r0,0
	stwu	r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
	stwu	r0,THREAD_SIZE-STACK_FRAME_MIN_SIZE(r1)

	lis	r6, swapper_pg_dir@ha
	tophys(r6,r6)
Loading