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/head64.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/head64.S')
-rw-r--r-- | arch/s390/kernel/head64.S | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S index e940e802cb40..030a1c95f47c 100644 --- a/arch/s390/kernel/head64.S +++ b/arch/s390/kernel/head64.S | |||
@@ -58,18 +58,11 @@ startup_continue: | |||
58 | stg %r15,__LC_KERNEL_STACK # set end of kernel stack | 58 | stg %r15,__LC_KERNEL_STACK # set end of kernel stack |
59 | aghi %r15,-160 | 59 | aghi %r15,-160 |
60 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain | 60 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # clear backchain |
61 | |||
62 | brasl %r14,ipl_save_parameters | ||
63 | # | 61 | # |
64 | # clear bss memory | 62 | # Save ipl parameters, clear bss memory, initialize storage key for kernel pages, |
63 | # and create a kernel NSS if the SAVESYS= parm is defined | ||
65 | # | 64 | # |
66 | larl %r2,__bss_start # start of bss segment | 65 | brasl %r14,startup_init |
67 | larl %r3,_end # end of bss segment | ||
68 | sgr %r3,%r2 # length of bss | ||
69 | sgr %r4,%r4 # | ||
70 | sgr %r5,%r5 # set src,length and pad to zero | ||
71 | mvcle %r2,%r4,0 # clear mem | ||
72 | jo .-4 # branch back, if not finish | ||
73 | # set program check new psw mask | 66 | # set program check new psw mask |
74 | mvc __LC_PGM_NEW_PSW(8),.Lpcmsk-.LPG1(%r13) | 67 | mvc __LC_PGM_NEW_PSW(8),.Lpcmsk-.LPG1(%r13) |
75 | larl %r1,.Lslowmemdetect # set program check address | 68 | larl %r1,.Lslowmemdetect # set program check address |
@@ -78,6 +71,10 @@ startup_continue: | |||
78 | diag %r0,%r1,0x260 # get memory size of virtual machine | 71 | diag %r0,%r1,0x260 # get memory size of virtual machine |
79 | cgr %r0,%r1 # different? -> old detection routine | 72 | cgr %r0,%r1 # different? -> old detection routine |
80 | jne .Lslowmemdetect | 73 | jne .Lslowmemdetect |
74 | larl %r3,ipl_flags | ||
75 | llgt %r3,0(%r3) | ||
76 | chi %r3,4 # ipled from an kernel NSS | ||
77 | je .Lslowmemdetect | ||
81 | aghi %r1,1 # size is one more than end | 78 | aghi %r1,1 # size is one more than end |
82 | larl %r2,memory_chunk | 79 | larl %r2,memory_chunk |
83 | stg %r1,8(%r2) # store size of chunk | 80 | stg %r1,8(%r2) # store size of chunk |
@@ -226,19 +223,6 @@ startup_continue: | |||
226 | 223 | ||
227 | larl %r12,machine_flags | 224 | larl %r12,machine_flags |
228 | # | 225 | # |
229 | # find out if we are running under VM | ||
230 | # | ||
231 | stidp __LC_CPUID # store cpuid | ||
232 | tm __LC_CPUID,0xff # running under VM ? | ||
233 | bno 0f-.LPG1(%r13) | ||
234 | oi 7(%r12),1 # set VM flag | ||
235 | 0: lh %r0,__LC_CPUID+4 # get cpu version | ||
236 | chi %r0,0x7490 # running on a P/390 ? | ||
237 | bne 1f-.LPG1(%r13) | ||
238 | oi 7(%r12),4 # set P/390 flag | ||
239 | 1: | ||
240 | |||
241 | # | ||
242 | # find out if we have the MVPG instruction | 226 | # find out if we have the MVPG instruction |
243 | # | 227 | # |
244 | la %r1,0f-.LPG1(%r13) # set program check address | 228 | la %r1,0f-.LPG1(%r13) # set program check address |