diff options
author | Vasily Gorbik <gor@linux.ibm.com> | 2018-09-14 17:35:46 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2018-09-20 13:20:29 +0200 |
commit | 4e62d458850069c9f05e03f99be1a817967e201f (patch) | |
tree | 36930d2ada8892e0b888c1cddcf9cba830b36c33 /arch | |
parent | 26f4414a45b808f83d42d6fd2fbf4a59ef25e84b (diff) | |
download | linux-4e62d458850069c9f05e03f99be1a817967e201f.tar.bz2 |
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')
-rw-r--r-- | arch/s390/boot/compressed/head.S | 4 | ||||
-rw-r--r-- | arch/s390/boot/head.S | 3 | ||||
-rw-r--r-- | arch/s390/kernel/head64.S | 6 | ||||
-rw-r--r-- | arch/s390/kernel/swsusp.S | 4 | ||||
-rw-r--r-- | arch/s390/purgatory/head.S | 4 |
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 |