summaryrefslogtreecommitdiff
path: root/arch/s390
diff options
context:
space:
mode:
authorVasily Gorbik <gor@linux.ibm.com>2018-09-14 18:35:46 +0300
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-09-20 14:20:29 +0300
commit4e62d458850069c9f05e03f99be1a817967e201f (patch)
tree36930d2ada8892e0b888c1cddcf9cba830b36c33 /arch/s390
parent26f4414a45b808f83d42d6fd2fbf4a59ef25e84b (diff)
downloadlinux-4e62d458850069c9f05e03f99be1a817967e201f.tar.xz
s390: clean up stacks setup
Replace hard coded stack frame overhead values with STACK_FRAME_OVERHEAD definition. Avoid unnecessary arithmetic instructions. Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/boot/compressed/head.S4
-rw-r--r--arch/s390/boot/head.S3
-rw-r--r--arch/s390/kernel/head64.S6
-rw-r--r--arch/s390/kernel/swsusp.S4
-rw-r--r--arch/s390/purgatory/head.S4
5 files changed, 9 insertions, 12 deletions
diff --git a/arch/s390/boot/compressed/head.S b/arch/s390/boot/compressed/head.S
index df8dbbc17bcc..4041fcfd8980 100644
--- a/arch/s390/boot/compressed/head.S
+++ b/arch/s390/boot/compressed/head.S
@@ -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:
diff --git a/arch/s390/boot/head.S b/arch/s390/boot/head.S
index f1cdca8ad3cc..d0736a05bc7f 100644
--- a/arch/s390/boot/head.S
+++ b/arch/s390/boot/head.S
@@ -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
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index 6d14ad42ba88..b31dfb102700 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -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.
diff --git a/arch/s390/kernel/swsusp.S b/arch/s390/kernel/swsusp.S
index c1a080b11ae9..34b014b5cf03 100644
--- a/arch/s390/kernel/swsusp.S
+++ b/arch/s390/kernel/swsusp.S
@@ -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
diff --git a/arch/s390/purgatory/head.S b/arch/s390/purgatory/head.S
index 2e3707b12edd..5a10ce34b95d 100644
--- a/arch/s390/purgatory/head.S
+++ b/arch/s390/purgatory/head.S
@@ -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