aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/head31.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/head31.S')
-rw-r--r--arch/s390/kernel/head31.S43
1 files changed, 30 insertions, 13 deletions
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S
index d8bb68a72527..1fa9fa1ca740 100644
--- a/arch/s390/kernel/head31.S
+++ b/arch/s390/kernel/head31.S
@@ -37,13 +37,23 @@ startup:basr %r13,0 # get base
37 37
38startup_continue: 38startup_continue:
39 basr %r13,0 # get base 39 basr %r13,0 # get base
40.LPG1: GET_IPL_DEVICE 40.LPG1: mvi __LC_AR_MODE_ID,0 # set ESA flag (mode 0)
41 mvi __LC_AR_MODE_ID,0 # set ESA flag (mode 0)
42 lctl %c0,%c15,.Lctl-.LPG1(%r13) # load control registers 41 lctl %c0,%c15,.Lctl-.LPG1(%r13) # load control registers
43 l %r12,.Lparmaddr-.LPG1(%r13) # pointer to parameter area 42 l %r12,.Lparmaddr-.LPG1(%r13) # pointer to parameter area
44 # move IPL device to lowcore 43 # move IPL device to lowcore
45 mvc __LC_IPLDEV(4),IPL_DEVICE-PARMAREA(%r12) 44 mvc __LC_IPLDEV(4),IPL_DEVICE-PARMAREA(%r12)
45#
46# Setup stack
47#
48 l %r15,.Linittu-.LPG1(%r13)
49 mvc __LC_CURRENT(4),__TI_task(%r15)
50 ahi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union+THREAD_SIZE
51 st %r15,__LC_KERNEL_STACK # set end of kernel stack
52 ahi %r15,-96
53 xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain
46 54
55 l %r14,.Lipl_save_parameters-.LPG1(%r13)
56 basr %r14,%r14
47# 57#
48# clear bss memory 58# clear bss memory
49# 59#
@@ -115,6 +125,10 @@ startup_continue:
115 b .Lfchunk-.LPG1(%r13) 125 b .Lfchunk-.LPG1(%r13)
116 126
117 .align 4 127 .align 4
128.Lipl_save_parameters:
129 .long ipl_save_parameters
130.Linittu:
131 .long init_thread_union
118.Lpmask: 132.Lpmask:
119 .byte 0 133 .byte 0
120.align 8 134.align 8
@@ -274,6 +288,20 @@ startup_continue:
274.Lbss_end: .long _end 288.Lbss_end: .long _end
275.Lparmaddr: .long PARMAREA 289.Lparmaddr: .long PARMAREA
276.Lsccbaddr: .long .Lsccb 290.Lsccbaddr: .long .Lsccb
291
292 .globl ipl_schib
293ipl_schib:
294 .rept 13
295 .long 0
296 .endr
297
298 .globl ipl_flags
299ipl_flags:
300 .long 0
301 .globl ipl_devno
302ipl_devno:
303 .word 0
304
277 .org 0x12000 305 .org 0x12000
278.globl s390_readinfo_sccb 306.globl s390_readinfo_sccb
279s390_readinfo_sccb: 307s390_readinfo_sccb:
@@ -305,16 +333,6 @@ s390_readinfo_sccb:
305 .globl _stext 333 .globl _stext
306_stext: basr %r13,0 # get base 334_stext: basr %r13,0 # get base
307.LPG3: 335.LPG3:
308#
309# Setup stack
310#
311 l %r15,.Linittu-.LPG3(%r13)
312 mvc __LC_CURRENT(4),__TI_task(%r15)
313 ahi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union+THREAD_SIZE
314 st %r15,__LC_KERNEL_STACK # set end of kernel stack
315 ahi %r15,-96
316 xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain
317
318# check control registers 336# check control registers
319 stctl %c0,%c15,0(%r15) 337 stctl %c0,%c15,0(%r15)
320 oi 2(%r15),0x40 # enable sigp emergency signal 338 oi 2(%r15),0x40 # enable sigp emergency signal
@@ -333,6 +351,5 @@ _stext: basr %r13,0 # get base
333# 351#
334 .align 8 352 .align 8
335.Ldw: .long 0x000a0000,0x00000000 353.Ldw: .long 0x000a0000,0x00000000
336.Linittu:.long init_thread_union
337.Lstart:.long start_kernel 354.Lstart:.long start_kernel
338.Laregs:.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 355.Laregs:.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0