diff options
Diffstat (limited to 'arch/s390/kernel/head.S')
-rw-r--r-- | arch/s390/kernel/head.S | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S index adccd908ebc7..4939d15375aa 100644 --- a/arch/s390/kernel/head.S +++ b/arch/s390/kernel/head.S | |||
@@ -34,125 +34,7 @@ | |||
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | __HEAD | 36 | __HEAD |
37 | #ifndef CONFIG_IPL | ||
38 | .org 0 | ||
39 | .long 0x00080000,0x80000000+startup # Just a restart PSW | ||
40 | #else | ||
41 | #ifdef CONFIG_IPL_TAPE | ||
42 | #define IPL_BS 1024 | ||
43 | .org 0 | ||
44 | .long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded | ||
45 | .long 0x27000000,0x60000001 # by ipl to addresses 0-23. | ||
46 | .long 0x02000000,0x20000000+IPL_BS # (a PSW and two CCWs). | ||
47 | .long 0x00000000,0x00000000 # external old psw | ||
48 | .long 0x00000000,0x00000000 # svc old psw | ||
49 | .long 0x00000000,0x00000000 # program check old psw | ||
50 | .long 0x00000000,0x00000000 # machine check old psw | ||
51 | .long 0x00000000,0x00000000 # io old psw | ||
52 | .long 0x00000000,0x00000000 | ||
53 | .long 0x00000000,0x00000000 | ||
54 | .long 0x00000000,0x00000000 | ||
55 | .long 0x000a0000,0x00000058 # external new psw | ||
56 | .long 0x000a0000,0x00000060 # svc new psw | ||
57 | .long 0x000a0000,0x00000068 # program check new psw | ||
58 | .long 0x000a0000,0x00000070 # machine check new psw | ||
59 | .long 0x00080000,0x80000000+.Lioint # io new psw | ||
60 | 37 | ||
61 | .org 0x100 | ||
62 | # | ||
63 | # subroutine for loading from tape | ||
64 | # Parameters: | ||
65 | # R1 = device number | ||
66 | # R2 = load address | ||
67 | .Lloader: | ||
68 | st %r14,.Lldret | ||
69 | la %r3,.Lorbread # r3 = address of orb | ||
70 | la %r5,.Lirb # r5 = address of irb | ||
71 | st %r2,.Lccwread+4 # initialize CCW data addresses | ||
72 | lctl %c6,%c6,.Lcr6 | ||
73 | slr %r2,%r2 | ||
74 | .Lldlp: | ||
75 | la %r6,3 # 3 retries | ||
76 | .Lssch: | ||
77 | ssch 0(%r3) # load chunk of IPL_BS bytes | ||
78 | bnz .Llderr | ||
79 | .Lw4end: | ||
80 | bas %r14,.Lwait4io | ||
81 | tm 8(%r5),0x82 # do we have a problem ? | ||
82 | bnz .Lrecov | ||
83 | slr %r7,%r7 | ||
84 | icm %r7,3,10(%r5) # get residual count | ||
85 | lcr %r7,%r7 | ||
86 | la %r7,IPL_BS(%r7) # IPL_BS-residual=#bytes read | ||
87 | ar %r2,%r7 # add to total size | ||
88 | tm 8(%r5),0x01 # found a tape mark ? | ||
89 | bnz .Ldone | ||
90 | l %r0,.Lccwread+4 # update CCW data addresses | ||
91 | ar %r0,%r7 | ||
92 | st %r0,.Lccwread+4 | ||
93 | b .Lldlp | ||
94 | .Ldone: | ||
95 | l %r14,.Lldret | ||
96 | br %r14 # r2 contains the total size | ||
97 | .Lrecov: | ||
98 | bas %r14,.Lsense # do the sensing | ||
99 | bct %r6,.Lssch # dec. retry count & branch | ||
100 | b .Llderr | ||
101 | # | ||
102 | # Sense subroutine | ||
103 | # | ||
104 | .Lsense: | ||
105 | st %r14,.Lsnsret | ||
106 | la %r7,.Lorbsense | ||
107 | ssch 0(%r7) # start sense command | ||
108 | bnz .Llderr | ||
109 | bas %r14,.Lwait4io | ||
110 | l %r14,.Lsnsret | ||
111 | tm 8(%r5),0x82 # do we have a problem ? | ||
112 | bnz .Llderr | ||
113 | br %r14 | ||
114 | # | ||
115 | # Wait for interrupt subroutine | ||
116 | # | ||
117 | .Lwait4io: | ||
118 | lpsw .Lwaitpsw | ||
119 | .Lioint: | ||
120 | c %r1,0xb8 # compare subchannel number | ||
121 | bne .Lwait4io | ||
122 | tsch 0(%r5) | ||
123 | slr %r0,%r0 | ||
124 | tm 8(%r5),0x82 # do we have a problem ? | ||
125 | bnz .Lwtexit | ||
126 | tm 8(%r5),0x04 # got device end ? | ||
127 | bz .Lwait4io | ||
128 | .Lwtexit: | ||
129 | br %r14 | ||
130 | .Llderr: | ||
131 | lpsw .Lcrash | ||
132 | |||
133 | .align 8 | ||
134 | .Lorbread: | ||
135 | .long 0x00000000,0x0080ff00,.Lccwread | ||
136 | .align 8 | ||
137 | .Lorbsense: | ||
138 | .long 0x00000000,0x0080ff00,.Lccwsense | ||
139 | .align 8 | ||
140 | .Lccwread: | ||
141 | .long 0x02200000+IPL_BS,0x00000000 | ||
142 | .Lccwsense: | ||
143 | .long 0x04200001,0x00000000 | ||
144 | .Lwaitpsw: | ||
145 | .long 0x020a0000,0x80000000+.Lioint | ||
146 | |||
147 | .Lirb: .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 | ||
148 | .Lcr6: .long 0xff000000 | ||
149 | .align 8 | ||
150 | .Lcrash:.long 0x000a0000,0x00000000 | ||
151 | .Lldret:.long 0 | ||
152 | .Lsnsret: .long 0 | ||
153 | #endif /* CONFIG_IPL_TAPE */ | ||
154 | |||
155 | #ifdef CONFIG_IPL_VM | ||
156 | #define IPL_BS 0x730 | 38 | #define IPL_BS 0x730 |
157 | .org 0 | 39 | .org 0 |
158 | .long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded | 40 | .long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded |
@@ -256,7 +138,6 @@ __HEAD | |||
256 | .long 0x02600050,0x00000000 | 138 | .long 0x02600050,0x00000000 |
257 | .endr | 139 | .endr |
258 | .long 0x02200050,0x00000000 | 140 | .long 0x02200050,0x00000000 |
259 | #endif /* CONFIG_IPL_VM */ | ||
260 | 141 | ||
261 | iplstart: | 142 | iplstart: |
262 | lh %r1,0xb8 # test if subchannel number | 143 | lh %r1,0xb8 # test if subchannel number |
@@ -325,7 +206,6 @@ iplstart: | |||
325 | clc 0(3,%r2),.L_eof | 206 | clc 0(3,%r2),.L_eof |
326 | bz .Lagain2 | 207 | bz .Lagain2 |
327 | 208 | ||
328 | #ifdef CONFIG_IPL_VM | ||
329 | # | 209 | # |
330 | # reset files in VM reader | 210 | # reset files in VM reader |
331 | # | 211 | # |
@@ -358,7 +238,6 @@ iplstart: | |||
358 | .long 0x00080000,0x80000000+.Lrdrint | 238 | .long 0x00080000,0x80000000+.Lrdrint |
359 | .Lrdrwaitpsw: | 239 | .Lrdrwaitpsw: |
360 | .long 0x020a0000,0x80000000+.Lrdrint | 240 | .long 0x020a0000,0x80000000+.Lrdrint |
361 | #endif | ||
362 | 241 | ||
363 | # | 242 | # |
364 | # everything loaded, go for it | 243 | # everything loaded, go for it |
@@ -376,8 +255,6 @@ iplstart: | |||
376 | .L_eof: .long 0xc5d6c600 /* C'EOF' */ | 255 | .L_eof: .long 0xc5d6c600 /* C'EOF' */ |
377 | .L_hdr: .long 0xc8c4d900 /* C'HDR' */ | 256 | .L_hdr: .long 0xc8c4d900 /* C'HDR' */ |
378 | 257 | ||
379 | #endif /* CONFIG_IPL */ | ||
380 | |||
381 | # | 258 | # |
382 | # SALIPL loader support. Based on a patch by Rob van der Heij. | 259 | # SALIPL loader support. Based on a patch by Rob van der Heij. |
383 | # This entry point is called directly from the SALIPL loader and | 260 | # This entry point is called directly from the SALIPL loader and |