diff options
Diffstat (limited to 'arch/s390/kernel/head.S')
-rw-r--r-- | arch/s390/kernel/head.S | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S index fc8bf5e285f6..2710e66fefba 100644 --- a/arch/s390/kernel/head.S +++ b/arch/s390/kernel/head.S | |||
@@ -346,6 +346,13 @@ iplstart: | |||
346 | la %r2,.Lreset | 346 | la %r2,.Lreset |
347 | lhi %r3,26 | 347 | lhi %r3,26 |
348 | diag %r2,%r3,8 | 348 | diag %r2,%r3,8 |
349 | la %r5,.Lirb | ||
350 | stsch 0(%r5) # check if irq is pending | ||
351 | tm 30(%r5),0x0f # by verifying if any of the | ||
352 | bnz .Lwaitforirq # activity or status control | ||
353 | tm 31(%r5),0xff # bits is set in the schib | ||
354 | bz .Lnoreset | ||
355 | .Lwaitforirq: | ||
349 | mvc 0x78(8),.Lrdrnewpsw # set up IO interrupt psw | 356 | mvc 0x78(8),.Lrdrnewpsw # set up IO interrupt psw |
350 | .Lwaitrdrirq: | 357 | .Lwaitrdrirq: |
351 | lpsw .Lrdrwaitpsw | 358 | lpsw .Lrdrwaitpsw |
@@ -535,8 +542,13 @@ startup:basr %r13,0 # get base | |||
535 | lhi %r1,0 | 542 | lhi %r1,0 |
536 | icm %r1,3,.Lscpincr1-PARMAREA(%r4) # use this one if != 0 | 543 | icm %r1,3,.Lscpincr1-PARMAREA(%r4) # use this one if != 0 |
537 | jnz .Lscnd | 544 | jnz .Lscnd |
538 | l %r1,.Lscpincr2-PARMAREA+4(%r4) # otherwise use this one | 545 | lhi %r1,0x800 # otherwise report 2GB |
539 | .Lscnd: | 546 | .Lscnd: |
547 | lhi %r3,0x800 # limit reported memory size to 2GB | ||
548 | cr %r1,%r3 | ||
549 | jl .Lno2gb | ||
550 | lr %r1,%r3 | ||
551 | .Lno2gb: | ||
540 | xr %r3,%r3 # same logic | 552 | xr %r3,%r3 # same logic |
541 | ic %r3,.Lscpa1-PARMAREA(%r4) | 553 | ic %r3,.Lscpa1-PARMAREA(%r4) |
542 | chi %r3,0x00 | 554 | chi %r3,0x00 |
@@ -765,7 +777,7 @@ _stext: basr %r13,0 # get base | |||
765 | 777 | ||
766 | # check control registers | 778 | # check control registers |
767 | stctl %c0,%c15,0(%r15) | 779 | stctl %c0,%c15,0(%r15) |
768 | oi 2(%r15),0x20 # enable sigp external interrupts | 780 | oi 2(%r15),0x40 # enable sigp emergency signal |
769 | oi 0(%r15),0x10 # switch on low address protection | 781 | oi 0(%r15),0x10 # switch on low address protection |
770 | lctl %c0,%c15,0(%r15) | 782 | lctl %c0,%c15,0(%r15) |
771 | 783 | ||