diff options
Diffstat (limited to 'arch/s390/kernel/head31.S')
-rw-r--r-- | arch/s390/kernel/head31.S | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S index a4dc61f3285e..1fa9fa1ca740 100644 --- a/arch/s390/kernel/head31.S +++ b/arch/s390/kernel/head31.S | |||
@@ -26,8 +26,8 @@ startup:basr %r13,0 # get base | |||
26 | # | 26 | # |
27 | .org PARMAREA | 27 | .org PARMAREA |
28 | .long 0,0 # IPL_DEVICE | 28 | .long 0,0 # IPL_DEVICE |
29 | .long 0,RAMDISK_ORIGIN # INITRD_START | 29 | .long 0,0 # INITRD_START |
30 | .long 0,RAMDISK_SIZE # INITRD_SIZE | 30 | .long 0,0 # INITRD_SIZE |
31 | 31 | ||
32 | .org COMMAND_LINE | 32 | .org COMMAND_LINE |
33 | .byte "root=/dev/ram0 ro" | 33 | .byte "root=/dev/ram0 ro" |
@@ -37,12 +37,23 @@ startup:basr %r13,0 # get base | |||
37 | 37 | ||
38 | startup_continue: | 38 | startup_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 | lctl %c0,%c15,.Lctl-.LPG1(%r13) # load control registers | 41 | lctl %c0,%c15,.Lctl-.LPG1(%r13) # load control registers |
42 | l %r12,.Lparmaddr-.LPG1(%r13) # pointer to parameter area | 42 | l %r12,.Lparmaddr-.LPG1(%r13) # pointer to parameter area |
43 | # move IPL device to lowcore | 43 | # move IPL device to lowcore |
44 | 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 | ||
45 | 54 | ||
55 | l %r14,.Lipl_save_parameters-.LPG1(%r13) | ||
56 | basr %r14,%r14 | ||
46 | # | 57 | # |
47 | # clear bss memory | 58 | # clear bss memory |
48 | # | 59 | # |
@@ -114,6 +125,10 @@ startup_continue: | |||
114 | b .Lfchunk-.LPG1(%r13) | 125 | b .Lfchunk-.LPG1(%r13) |
115 | 126 | ||
116 | .align 4 | 127 | .align 4 |
128 | .Lipl_save_parameters: | ||
129 | .long ipl_save_parameters | ||
130 | .Linittu: | ||
131 | .long init_thread_union | ||
117 | .Lpmask: | 132 | .Lpmask: |
118 | .byte 0 | 133 | .byte 0 |
119 | .align 8 | 134 | .align 8 |
@@ -273,7 +288,23 @@ startup_continue: | |||
273 | .Lbss_end: .long _end | 288 | .Lbss_end: .long _end |
274 | .Lparmaddr: .long PARMAREA | 289 | .Lparmaddr: .long PARMAREA |
275 | .Lsccbaddr: .long .Lsccb | 290 | .Lsccbaddr: .long .Lsccb |
291 | |||
292 | .globl ipl_schib | ||
293 | ipl_schib: | ||
294 | .rept 13 | ||
295 | .long 0 | ||
296 | .endr | ||
297 | |||
298 | .globl ipl_flags | ||
299 | ipl_flags: | ||
300 | .long 0 | ||
301 | .globl ipl_devno | ||
302 | ipl_devno: | ||
303 | .word 0 | ||
304 | |||
276 | .org 0x12000 | 305 | .org 0x12000 |
306 | .globl s390_readinfo_sccb | ||
307 | s390_readinfo_sccb: | ||
277 | .Lsccb: | 308 | .Lsccb: |
278 | .hword 0x1000 # length, one page | 309 | .hword 0x1000 # length, one page |
279 | .byte 0x00,0x00,0x00 | 310 | .byte 0x00,0x00,0x00 |
@@ -302,16 +333,6 @@ startup_continue: | |||
302 | .globl _stext | 333 | .globl _stext |
303 | _stext: basr %r13,0 # get base | 334 | _stext: basr %r13,0 # get base |
304 | .LPG3: | 335 | .LPG3: |
305 | # | ||
306 | # Setup stack | ||
307 | # | ||
308 | l %r15,.Linittu-.LPG3(%r13) | ||
309 | mvc __LC_CURRENT(4),__TI_task(%r15) | ||
310 | ahi %r15,1<<(PAGE_SHIFT+THREAD_ORDER) # init_task_union+THREAD_SIZE | ||
311 | st %r15,__LC_KERNEL_STACK # set end of kernel stack | ||
312 | ahi %r15,-96 | ||
313 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain | ||
314 | |||
315 | # check control registers | 336 | # check control registers |
316 | stctl %c0,%c15,0(%r15) | 337 | stctl %c0,%c15,0(%r15) |
317 | oi 2(%r15),0x40 # enable sigp emergency signal | 338 | oi 2(%r15),0x40 # enable sigp emergency signal |
@@ -330,6 +351,5 @@ _stext: basr %r13,0 # get base | |||
330 | # | 351 | # |
331 | .align 8 | 352 | .align 8 |
332 | .Ldw: .long 0x000a0000,0x00000000 | 353 | .Ldw: .long 0x000a0000,0x00000000 |
333 | .Linittu:.long init_thread_union | ||
334 | .Lstart:.long start_kernel | 354 | .Lstart:.long start_kernel |
335 | .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 |