diff options
author | Hongjie Yang <hongjie@us.ibm.com> | 2007-02-05 15:18:24 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-02-05 15:18:24 -0500 |
commit | fe355b7f1c7400cbb71762a1237461be03f88265 (patch) | |
tree | 8ef581c8ff0889a200bae88a4961395bcb80aec4 /arch/s390/kernel/head31.S | |
parent | 1b2782948997cf5a0d1747de13d43ba7dfa7c543 (diff) |
[S390] boot from NSS support
Add support to boot from a named saved segment (NSS).
Signed-off-by: Hongjie Yang <hongjie@us.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/head31.S')
-rw-r--r-- | arch/s390/kernel/head31.S | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S index eca507050e47..b3dcdcdc80c0 100644 --- a/arch/s390/kernel/head31.S +++ b/arch/s390/kernel/head31.S | |||
@@ -51,20 +51,12 @@ startup_continue: | |||
51 | st %r15,__LC_KERNEL_STACK # set end of kernel stack | 51 | st %r15,__LC_KERNEL_STACK # set end of kernel stack |
52 | ahi %r15,-96 | 52 | ahi %r15,-96 |
53 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain | 53 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain |
54 | |||
55 | l %r14,.Lipl_save_parameters-.LPG1(%r13) | ||
56 | basr %r14,%r14 | ||
57 | # | 54 | # |
58 | # clear bss memory | 55 | # Save ipl parameters, clear bss memory, initialize storage key for kernel pages, |
56 | # and create a kernel NSS if the SAVESYS= parm is defined | ||
59 | # | 57 | # |
60 | l %r2,.Lbss_bgn-.LPG1(%r13) # start of bss | 58 | l %r14,.Lstartup_init-.LPG1(%r13) |
61 | l %r3,.Lbss_end-.LPG1(%r13) # end of bss | 59 | basr %r14,%r14 |
62 | sr %r3,%r2 # length of bss | ||
63 | sr %r4,%r4 | ||
64 | sr %r5,%r5 # set src,length and pad to zero | ||
65 | sr %r0,%r0 | ||
66 | mvcle %r2,%r4,0 # clear mem | ||
67 | jo .-4 # branch back, if not finish | ||
68 | 60 | ||
69 | l %r2,.Lrcp-.LPG1(%r13) # Read SCP forced command word | 61 | l %r2,.Lrcp-.LPG1(%r13) # Read SCP forced command word |
70 | .Lservicecall: | 62 | .Lservicecall: |
@@ -125,10 +117,10 @@ startup_continue: | |||
125 | b .Lfchunk-.LPG1(%r13) | 117 | b .Lfchunk-.LPG1(%r13) |
126 | 118 | ||
127 | .align 4 | 119 | .align 4 |
128 | .Lipl_save_parameters: | ||
129 | .long ipl_save_parameters | ||
130 | .Linittu: | 120 | .Linittu: |
131 | .long init_thread_union | 121 | .long init_thread_union |
122 | .Lstartup_init: | ||
123 | .long startup_init | ||
132 | .Lpmask: | 124 | .Lpmask: |
133 | .byte 0 | 125 | .byte 0 |
134 | .align 8 | 126 | .align 8 |
@@ -207,20 +199,6 @@ startup_continue: | |||
207 | .Ldonemem: | 199 | .Ldonemem: |
208 | l %r12,.Lmflags-.LPG1(%r13) # get address of machine_flags | 200 | l %r12,.Lmflags-.LPG1(%r13) # get address of machine_flags |
209 | # | 201 | # |
210 | # find out if we are running under VM | ||
211 | # | ||
212 | stidp __LC_CPUID # store cpuid | ||
213 | tm __LC_CPUID,0xff # running under VM ? | ||
214 | bno .Lnovm-.LPG1(%r13) | ||
215 | oi 3(%r12),1 # set VM flag | ||
216 | .Lnovm: | ||
217 | lh %r0,__LC_CPUID+4 # get cpu version | ||
218 | chi %r0,0x7490 # running on a P/390 ? | ||
219 | bne .Lnop390-.LPG1(%r13) | ||
220 | oi 3(%r12),4 # set P/390 flag | ||
221 | .Lnop390: | ||
222 | |||
223 | # | ||
224 | # find out if we have an IEEE fpu | 202 | # find out if we have an IEEE fpu |
225 | # | 203 | # |
226 | mvc __LC_PGM_NEW_PSW(8),.Lpcfpu-.LPG1(%r13) | 204 | mvc __LC_PGM_NEW_PSW(8),.Lpcfpu-.LPG1(%r13) |