forked from Minki/linux
s390/ipl: remove builtin tape ipl code
Remove the builtin tape ipl code. If somebody really wants to create a tape which can be ipl'ed from, then this can be achieved by using zipl. zipl can write an ipl record to a tape device and aftwards the kernel image must be written to tape. The steps are described in the "Linux on System z - Device Drivers, Features, and Commands" book (SC33-8411). Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
c15787a7c3
commit
58770be6cc
@ -406,33 +406,6 @@ config CHSC_SCH
|
||||
|
||||
comment "Misc"
|
||||
|
||||
config IPL
|
||||
def_bool y
|
||||
prompt "Builtin IPL record support"
|
||||
help
|
||||
If you want to use the produced kernel to IPL directly from a
|
||||
device, you have to merge a bootsector specific to the device
|
||||
into the first bytes of the kernel. You will have to select the
|
||||
IPL device.
|
||||
|
||||
choice
|
||||
prompt "IPL method generated into head.S"
|
||||
depends on IPL
|
||||
default IPL_VM
|
||||
help
|
||||
Select "tape" if you want to IPL the image from a Tape.
|
||||
|
||||
Select "vm_reader" if you are running under VM/ESA and want
|
||||
to IPL the image from the emulated card reader.
|
||||
|
||||
config IPL_TAPE
|
||||
bool "tape"
|
||||
|
||||
config IPL_VM
|
||||
bool "vm_reader"
|
||||
|
||||
endchoice
|
||||
|
||||
source "fs/Kconfig.binfmt"
|
||||
|
||||
config FORCE_MAX_ZONEORDER
|
||||
|
@ -34,125 +34,7 @@
|
||||
#endif
|
||||
|
||||
__HEAD
|
||||
#ifndef CONFIG_IPL
|
||||
.org 0
|
||||
.long 0x00080000,0x80000000+startup # Just a restart PSW
|
||||
#else
|
||||
#ifdef CONFIG_IPL_TAPE
|
||||
#define IPL_BS 1024
|
||||
.org 0
|
||||
.long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded
|
||||
.long 0x27000000,0x60000001 # by ipl to addresses 0-23.
|
||||
.long 0x02000000,0x20000000+IPL_BS # (a PSW and two CCWs).
|
||||
.long 0x00000000,0x00000000 # external old psw
|
||||
.long 0x00000000,0x00000000 # svc old psw
|
||||
.long 0x00000000,0x00000000 # program check old psw
|
||||
.long 0x00000000,0x00000000 # machine check old psw
|
||||
.long 0x00000000,0x00000000 # io old psw
|
||||
.long 0x00000000,0x00000000
|
||||
.long 0x00000000,0x00000000
|
||||
.long 0x00000000,0x00000000
|
||||
.long 0x000a0000,0x00000058 # external new psw
|
||||
.long 0x000a0000,0x00000060 # svc new psw
|
||||
.long 0x000a0000,0x00000068 # program check new psw
|
||||
.long 0x000a0000,0x00000070 # machine check new psw
|
||||
.long 0x00080000,0x80000000+.Lioint # io new psw
|
||||
|
||||
.org 0x100
|
||||
#
|
||||
# subroutine for loading from tape
|
||||
# Parameters:
|
||||
# R1 = device number
|
||||
# R2 = load address
|
||||
.Lloader:
|
||||
st %r14,.Lldret
|
||||
la %r3,.Lorbread # r3 = address of orb
|
||||
la %r5,.Lirb # r5 = address of irb
|
||||
st %r2,.Lccwread+4 # initialize CCW data addresses
|
||||
lctl %c6,%c6,.Lcr6
|
||||
slr %r2,%r2
|
||||
.Lldlp:
|
||||
la %r6,3 # 3 retries
|
||||
.Lssch:
|
||||
ssch 0(%r3) # load chunk of IPL_BS bytes
|
||||
bnz .Llderr
|
||||
.Lw4end:
|
||||
bas %r14,.Lwait4io
|
||||
tm 8(%r5),0x82 # do we have a problem ?
|
||||
bnz .Lrecov
|
||||
slr %r7,%r7
|
||||
icm %r7,3,10(%r5) # get residual count
|
||||
lcr %r7,%r7
|
||||
la %r7,IPL_BS(%r7) # IPL_BS-residual=#bytes read
|
||||
ar %r2,%r7 # add to total size
|
||||
tm 8(%r5),0x01 # found a tape mark ?
|
||||
bnz .Ldone
|
||||
l %r0,.Lccwread+4 # update CCW data addresses
|
||||
ar %r0,%r7
|
||||
st %r0,.Lccwread+4
|
||||
b .Lldlp
|
||||
.Ldone:
|
||||
l %r14,.Lldret
|
||||
br %r14 # r2 contains the total size
|
||||
.Lrecov:
|
||||
bas %r14,.Lsense # do the sensing
|
||||
bct %r6,.Lssch # dec. retry count & branch
|
||||
b .Llderr
|
||||
#
|
||||
# Sense subroutine
|
||||
#
|
||||
.Lsense:
|
||||
st %r14,.Lsnsret
|
||||
la %r7,.Lorbsense
|
||||
ssch 0(%r7) # start sense command
|
||||
bnz .Llderr
|
||||
bas %r14,.Lwait4io
|
||||
l %r14,.Lsnsret
|
||||
tm 8(%r5),0x82 # do we have a problem ?
|
||||
bnz .Llderr
|
||||
br %r14
|
||||
#
|
||||
# Wait for interrupt subroutine
|
||||
#
|
||||
.Lwait4io:
|
||||
lpsw .Lwaitpsw
|
||||
.Lioint:
|
||||
c %r1,0xb8 # compare subchannel number
|
||||
bne .Lwait4io
|
||||
tsch 0(%r5)
|
||||
slr %r0,%r0
|
||||
tm 8(%r5),0x82 # do we have a problem ?
|
||||
bnz .Lwtexit
|
||||
tm 8(%r5),0x04 # got device end ?
|
||||
bz .Lwait4io
|
||||
.Lwtexit:
|
||||
br %r14
|
||||
.Llderr:
|
||||
lpsw .Lcrash
|
||||
|
||||
.align 8
|
||||
.Lorbread:
|
||||
.long 0x00000000,0x0080ff00,.Lccwread
|
||||
.align 8
|
||||
.Lorbsense:
|
||||
.long 0x00000000,0x0080ff00,.Lccwsense
|
||||
.align 8
|
||||
.Lccwread:
|
||||
.long 0x02200000+IPL_BS,0x00000000
|
||||
.Lccwsense:
|
||||
.long 0x04200001,0x00000000
|
||||
.Lwaitpsw:
|
||||
.long 0x020a0000,0x80000000+.Lioint
|
||||
|
||||
.Lirb: .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.Lcr6: .long 0xff000000
|
||||
.align 8
|
||||
.Lcrash:.long 0x000a0000,0x00000000
|
||||
.Lldret:.long 0
|
||||
.Lsnsret: .long 0
|
||||
#endif /* CONFIG_IPL_TAPE */
|
||||
|
||||
#ifdef CONFIG_IPL_VM
|
||||
#define IPL_BS 0x730
|
||||
.org 0
|
||||
.long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded
|
||||
@ -256,7 +138,6 @@ __HEAD
|
||||
.long 0x02600050,0x00000000
|
||||
.endr
|
||||
.long 0x02200050,0x00000000
|
||||
#endif /* CONFIG_IPL_VM */
|
||||
|
||||
iplstart:
|
||||
lh %r1,0xb8 # test if subchannel number
|
||||
@ -325,7 +206,6 @@ iplstart:
|
||||
clc 0(3,%r2),.L_eof
|
||||
bz .Lagain2
|
||||
|
||||
#ifdef CONFIG_IPL_VM
|
||||
#
|
||||
# reset files in VM reader
|
||||
#
|
||||
@ -358,7 +238,6 @@ iplstart:
|
||||
.long 0x00080000,0x80000000+.Lrdrint
|
||||
.Lrdrwaitpsw:
|
||||
.long 0x020a0000,0x80000000+.Lrdrint
|
||||
#endif
|
||||
|
||||
#
|
||||
# everything loaded, go for it
|
||||
@ -376,8 +255,6 @@ iplstart:
|
||||
.L_eof: .long 0xc5d6c600 /* C'EOF' */
|
||||
.L_hdr: .long 0xc8c4d900 /* C'HDR' */
|
||||
|
||||
#endif /* CONFIG_IPL */
|
||||
|
||||
#
|
||||
# SALIPL loader support. Based on a patch by Rob van der Heij.
|
||||
# This entry point is called directly from the SALIPL loader and
|
||||
|
Loading…
Reference in New Issue
Block a user