mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-23 06:14:42 +08:00
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>
This commit is contained in:
parent
26f4414a45
commit
4e62d45885
@ -12,6 +12,7 @@
|
|||||||
#include <asm/asm-offsets.h>
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
#include "sizes.h"
|
#include "sizes.h"
|
||||||
|
|
||||||
__HEAD
|
__HEAD
|
||||||
@ -20,7 +21,6 @@ ENTRY(startup_decompressor)
|
|||||||
.LPG1:
|
.LPG1:
|
||||||
# setup stack
|
# setup stack
|
||||||
lg %r15,.Lstack-.LPG1(%r13)
|
lg %r15,.Lstack-.LPG1(%r13)
|
||||||
aghi %r15,-160
|
|
||||||
brasl %r14,decompress_kernel
|
brasl %r14,decompress_kernel
|
||||||
# Set up registers for memory mover. We move the decompressed image to
|
# Set up registers for memory mover. We move the decompressed image to
|
||||||
# 0x100000, where startup_continue of the decompressed image is supposed
|
# 0x100000, where startup_continue of the decompressed image is supposed
|
||||||
@ -45,7 +45,7 @@ mover_end:
|
|||||||
|
|
||||||
.align 8
|
.align 8
|
||||||
.Lstack:
|
.Lstack:
|
||||||
.quad 0x8000 + (1<<(PAGE_SHIFT+THREAD_SIZE_ORDER))
|
.quad 0x8000 + THREAD_SIZE - STACK_FRAME_OVERHEAD
|
||||||
.Loffset:
|
.Loffset:
|
||||||
.quad 0x100000
|
.quad 0x100000
|
||||||
.Lmvsize:
|
.Lmvsize:
|
||||||
|
@ -311,7 +311,6 @@ ENTRY(startup_kdump)
|
|||||||
spt 6f-.LPG0(%r13)
|
spt 6f-.LPG0(%r13)
|
||||||
mvc __LC_LAST_UPDATE_TIMER(8),6f-.LPG0(%r13)
|
mvc __LC_LAST_UPDATE_TIMER(8),6f-.LPG0(%r13)
|
||||||
l %r15,.Lstack-.LPG0(%r13)
|
l %r15,.Lstack-.LPG0(%r13)
|
||||||
ahi %r15,-STACK_FRAME_OVERHEAD
|
|
||||||
brasl %r14,verify_facilities
|
brasl %r14,verify_facilities
|
||||||
#ifdef CONFIG_KERNEL_UNCOMPRESSED
|
#ifdef CONFIG_KERNEL_UNCOMPRESSED
|
||||||
jg startup_continue
|
jg startup_continue
|
||||||
@ -320,7 +319,7 @@ ENTRY(startup_kdump)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
.Lstack:
|
.Lstack:
|
||||||
.long 0x8000 + (1<<(PAGE_SHIFT+THREAD_SIZE_ORDER))
|
.long 0x8000 + THREAD_SIZE - STACK_FRAME_OVERHEAD
|
||||||
.align 8
|
.align 8
|
||||||
6: .long 0x7fffffff,0xffffffff
|
6: .long 0x7fffffff,0xffffffff
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <asm/asm-offsets.h>
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
__HEAD
|
__HEAD
|
||||||
ENTRY(startup_continue)
|
ENTRY(startup_continue)
|
||||||
@ -35,10 +36,9 @@ ENTRY(startup_continue)
|
|||||||
#
|
#
|
||||||
larl %r14,init_task
|
larl %r14,init_task
|
||||||
stg %r14,__LC_CURRENT
|
stg %r14,__LC_CURRENT
|
||||||
larl %r15,init_thread_union
|
larl %r15,init_thread_union+THREAD_SIZE
|
||||||
aghi %r15,1<<(PAGE_SHIFT+THREAD_SIZE_ORDER) # init_task_union + THREAD_SIZE
|
|
||||||
stg %r15,__LC_KERNEL_STACK # set end of kernel stack
|
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,
|
# Early setup functions that may not rely on an initialized bss section,
|
||||||
# like moving the initrd. Returns with an initialized bss section.
|
# like moving the initrd. Returns with an initialized bss section.
|
||||||
|
@ -197,9 +197,7 @@ pgm_check_entry:
|
|||||||
brc 2,3b /* busy, try again */
|
brc 2,3b /* busy, try again */
|
||||||
|
|
||||||
/* Suspend CPU not available -> panic */
|
/* Suspend CPU not available -> panic */
|
||||||
larl %r15,init_thread_union
|
larl %r15,init_thread_union+THREAD_SIZE-STACK_FRAME_OVERHEAD
|
||||||
aghi %r15,1<<(PAGE_SHIFT+THREAD_SIZE_ORDER)
|
|
||||||
aghi %r15,-STACK_FRAME_OVERHEAD
|
|
||||||
larl %r2,.Lpanic_string
|
larl %r2,.Lpanic_string
|
||||||
brasl %r14,sclp_early_printk_force
|
brasl %r14,sclp_early_printk_force
|
||||||
larl %r3,.Ldisabled_wait_31
|
larl %r3,.Ldisabled_wait_31
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include <asm/asm-offsets.h>
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
#include <asm/sigp.h>
|
#include <asm/sigp.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
/* The purgatory is the code running between two kernels. It's main purpose
|
/* 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
|
* is to verify that the next kernel was not corrupted after load and to
|
||||||
@ -88,8 +89,7 @@ ENTRY(purgatory_start)
|
|||||||
.base_crash:
|
.base_crash:
|
||||||
|
|
||||||
/* Setup stack */
|
/* Setup stack */
|
||||||
larl %r15,purgatory_end
|
larl %r15,purgatory_end-STACK_FRAME_OVERHEAD
|
||||||
aghi %r15,-160
|
|
||||||
|
|
||||||
/* If the next kernel is KEXEC_TYPE_CRASH the purgatory is called
|
/* If the next kernel is KEXEC_TYPE_CRASH the purgatory is called
|
||||||
* directly with a flag passed in %r2 whether the purgatory shall do
|
* directly with a flag passed in %r2 whether the purgatory shall do
|
||||||
|
Loading…
Reference in New Issue
Block a user