aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/reipl.S
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2007-03-05 17:35:43 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-03-05 17:35:43 -0500
commitc5dd8586707800cd7bbdefcd675ad7d3c9afcd57 (patch)
treee80b86321c3e7e2c478ad8d7850d8b3c98be7850 /arch/s390/kernel/reipl.S
parent25864162c15e61b494aa619974a4d521270362f7 (diff)
[S390] reipl: move dump_prefix_page out of text section.
Reipl doesn't work on older machines were s390_reset_machine() gets called. The reason is that the text section is read-only but the variable dump_prefix_page is there. Since s390_reset_machine() writes to it we get a protection exception. Therefore move dump_prefix_page to the bss section. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/reipl.S')
-rw-r--r--arch/s390/kernel/reipl.S13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/s390/kernel/reipl.S b/arch/s390/kernel/reipl.S
index c3f4d9b95083..2f481cc3d1c9 100644
--- a/arch/s390/kernel/reipl.S
+++ b/arch/s390/kernel/reipl.S
@@ -8,6 +8,10 @@
8 8
9#include <asm/lowcore.h> 9#include <asm/lowcore.h>
10 10
11#
12# do_reipl_asm
13# Parameter: r2 = schid of reipl device
14#
11 .globl do_reipl_asm 15 .globl do_reipl_asm
12do_reipl_asm: basr %r13,0 16do_reipl_asm: basr %r13,0
13.Lpg0: lpsw .Lnewpsw-.Lpg0(%r13) 17.Lpg0: lpsw .Lnewpsw-.Lpg0(%r13)
@@ -16,12 +20,12 @@ do_reipl_asm: basr %r13,0
16 stm %r0,%r15,__LC_GPREGS_SAVE_AREA 20 stm %r0,%r15,__LC_GPREGS_SAVE_AREA
17 stctl %c0,%c15,__LC_CREGS_SAVE_AREA 21 stctl %c0,%c15,__LC_CREGS_SAVE_AREA
18 stam %a0,%a15,__LC_AREGS_SAVE_AREA 22 stam %a0,%a15,__LC_AREGS_SAVE_AREA
19 mvc __LC_PREFIX_SAVE_AREA(4),dump_prefix_page-.Lpg0(%r13) 23 l %r10,.Ldump_pfx-.Lpg0(%r13)
24 mvc __LC_PREFIX_SAVE_AREA(4),0(%r10)
20 stckc .Lclkcmp-.Lpg0(%r13) 25 stckc .Lclkcmp-.Lpg0(%r13)
21 mvc __LC_CLOCK_COMP_SAVE_AREA(8),.Lclkcmp-.Lpg0(%r13) 26 mvc __LC_CLOCK_COMP_SAVE_AREA(8),.Lclkcmp-.Lpg0(%r13)
22 stpt __LC_CPU_TIMER_SAVE_AREA 27 stpt __LC_CPU_TIMER_SAVE_AREA
23 st %r13, __LC_PSW_SAVE_AREA+4 28 st %r13, __LC_PSW_SAVE_AREA+4
24
25 lctl %c6,%c6,.Lall-.Lpg0(%r13) 29 lctl %c6,%c6,.Lall-.Lpg0(%r13)
26 lr %r1,%r2 30 lr %r1,%r2
27 mvc __LC_PGM_NEW_PSW(8),.Lpcnew-.Lpg0(%r13) 31 mvc __LC_PGM_NEW_PSW(8),.Lpcnew-.Lpg0(%r13)
@@ -55,6 +59,7 @@ do_reipl_asm: basr %r13,0
55 .align 8 59 .align 8
56.Lclkcmp: .quad 0x0000000000000000 60.Lclkcmp: .quad 0x0000000000000000
57.Lall: .long 0xff000000 61.Lall: .long 0xff000000
62.Ldump_pfx: .long dump_prefix_page
58 .align 8 63 .align 8
59.Lnewpsw: .long 0x00080000,0x80000000+.Lpg1 64.Lnewpsw: .long 0x00080000,0x80000000+.Lpg1
60.Lpcnew: .long 0x00080000,0x80000000+.Lecs 65.Lpcnew: .long 0x00080000,0x80000000+.Lecs
@@ -79,7 +84,3 @@ do_reipl_asm: basr %r13,0
79 .long 0x00000000,0x00000000 84 .long 0x00000000,0x00000000
80 .long 0x00000000,0x00000000 85 .long 0x00000000,0x00000000
81 .long 0x00000000,0x00000000 86 .long 0x00000000,0x00000000
82 .globl dump_prefix_page
83dump_prefix_page:
84 .long 0x00000000
85