Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e62d458 authored by Vasily Gorbik's avatar Vasily Gorbik Committed by Martin Schwidefsky
Browse files

s390: clean up stacks setup



Replace hard coded stack frame overhead values with STACK_FRAME_OVERHEAD
definition. Avoid unnecessary arithmetic instructions.

Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 26f4414a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
#include <asm/page.h>
#include <asm/ptrace.h>
#include "sizes.h"

__HEAD
@@ -20,7 +21,6 @@ ENTRY(startup_decompressor)
.LPG1:
	# setup stack
	lg	%r15,.Lstack-.LPG1(%r13)
	aghi	%r15,-160
	brasl	%r14,decompress_kernel
	# Set up registers for memory mover. We move the decompressed image to
	# 0x100000, where startup_continue of the decompressed image is supposed
@@ -45,7 +45,7 @@ mover_end:

	.align	8
.Lstack:
	.quad	0x8000 + (1<<(PAGE_SHIFT+THREAD_SIZE_ORDER))
	.quad	0x8000 + THREAD_SIZE - STACK_FRAME_OVERHEAD
.Loffset:
	.quad	0x100000
.Lmvsize:
+1 −2
Original line number Diff line number Diff line
@@ -311,7 +311,6 @@ ENTRY(startup_kdump)
	spt	6f-.LPG0(%r13)
	mvc	__LC_LAST_UPDATE_TIMER(8),6f-.LPG0(%r13)
	l	%r15,.Lstack-.LPG0(%r13)
	ahi	%r15,-STACK_FRAME_OVERHEAD
	brasl	%r14,verify_facilities
#ifdef CONFIG_KERNEL_UNCOMPRESSED
	jg	startup_continue
@@ -320,7 +319,7 @@ ENTRY(startup_kdump)
#endif

.Lstack:
	.long	0x8000 + (1<<(PAGE_SHIFT+THREAD_SIZE_ORDER))
	.long	0x8000 + THREAD_SIZE - STACK_FRAME_OVERHEAD
	.align	8
6:	.long	0x7fffffff,0xffffffff

+3 −3
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
#include <asm/page.h>
#include <asm/ptrace.h>

__HEAD
ENTRY(startup_continue)
@@ -35,10 +36,9 @@ ENTRY(startup_continue)
#
	larl	%r14,init_task
	stg	%r14,__LC_CURRENT
	larl	%r15,init_thread_union
	aghi	%r15,1<<(PAGE_SHIFT+THREAD_SIZE_ORDER) # init_task_union + THREAD_SIZE
	larl	%r15,init_thread_union+THREAD_SIZE
	stg	%r15,__LC_KERNEL_STACK	# set end of kernel stack
	aghi	%r15,-160
	aghi	%r15,-STACK_FRAME_OVERHEAD
#
# Early setup functions that may not rely on an initialized bss section,
# like moving the initrd. Returns with an initialized bss section.
+1 −3
Original line number Diff line number Diff line
@@ -197,9 +197,7 @@ pgm_check_entry:
	brc	2,3b				/* busy, try again */

	/* Suspend CPU not available -> panic */
	larl	%r15,init_thread_union
	aghi	%r15,1<<(PAGE_SHIFT+THREAD_SIZE_ORDER)
	aghi	%r15,-STACK_FRAME_OVERHEAD
	larl	%r15,init_thread_union+THREAD_SIZE-STACK_FRAME_OVERHEAD
	larl	%r2,.Lpanic_string
	brasl	%r14,sclp_early_printk_force
	larl	%r3,.Ldisabled_wait_31
+2 −2
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#include <asm/asm-offsets.h>
#include <asm/page.h>
#include <asm/sigp.h>
#include <asm/ptrace.h>

/* The purgatory is the code running between two kernels. It's main purpose
 * is to verify that the next kernel was not corrupted after load and to
@@ -88,8 +89,7 @@ ENTRY(purgatory_start)
.base_crash:

	/* Setup stack */
	larl	%r15,purgatory_end
	aghi	%r15,-160
	larl	%r15,purgatory_end-STACK_FRAME_OVERHEAD

	/* If the next kernel is KEXEC_TYPE_CRASH the purgatory is called
	 * directly with a flag passed in %r2 whether the purgatory shall do