Merge ../torvalds-2.6/
[pandora-kernel.git] / arch / s390 / kernel / head.S
index fc8bf5e..55654b6 100644 (file)
@@ -30,7 +30,7 @@
 #include <linux/config.h>
 #include <asm/setup.h>
 #include <asm/lowcore.h>
-#include <asm/offsets.h>
+#include <asm/asm-offsets.h>
 #include <asm/thread_info.h>
 #include <asm/page.h>
 
@@ -346,6 +346,13 @@ iplstart:
         la    %r2,.Lreset              
         lhi   %r3,26
        diag  %r2,%r3,8
+       la    %r5,.Lirb
+       stsch 0(%r5)                           # check if irq is pending
+       tm    30(%r5),0x0f                     # by verifying if any of the
+       bnz   .Lwaitforirq                     # activity or status control
+       tm    31(%r5),0xff                     # bits is set in the schib
+       bz    .Lnoreset
+.Lwaitforirq:
        mvc   0x78(8),.Lrdrnewpsw              # set up IO interrupt psw
 .Lwaitrdrirq:
        lpsw  .Lrdrwaitpsw
@@ -535,8 +542,13 @@ startup:basr  %r13,0                     # get base
        lhi   %r1,0
        icm   %r1,3,.Lscpincr1-PARMAREA(%r4) # use this one if != 0
        jnz   .Lscnd
-       l     %r1,.Lscpincr2-PARMAREA+4(%r4) # otherwise use this one
+       lhi   %r1,0x800                 # otherwise report 2GB
 .Lscnd:
+       lhi   %r3,0x800                 # limit reported memory size to 2GB
+       cr    %r1,%r3
+       jl    .Lno2gb
+       lr    %r1,%r3
+.Lno2gb:
        xr    %r3,%r3                   # same logic
        ic    %r3,.Lscpa1-PARMAREA(%r4)
        chi   %r3,0x00
@@ -765,7 +777,7 @@ _stext:     basr  %r13,0                    # get base
 
 # check control registers
         stctl  %c0,%c15,0(%r15)
-       oi     2(%r15),0x20             # enable sigp external interrupts
+       oi     2(%r15),0x40             # enable sigp emergency signal
        oi     0(%r15),0x10             # switch on low address protection
         lctl   %c0,%c15,0(%r15)