aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/head64.S
diff options
context:
space:
mode:
authorHongjie Yang <hongjie@us.ibm.com>2007-02-05 15:18:24 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-02-05 15:18:24 -0500
commitfe355b7f1c7400cbb71762a1237461be03f88265 (patch)
tree8ef581c8ff0889a200bae88a4961395bcb80aec4 /arch/s390/kernel/head64.S
parent1b2782948997cf5a0d1747de13d43ba7dfa7c543 (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.S30
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
2350: 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
2391:
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