summaryrefslogtreecommitdiffstats
path: root/arch/s390/boot/ipleckd.S
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2001-03-09 20:33:35 +0000
committerRalf Baechle <ralf@linux-mips.org>2001-03-09 20:33:35 +0000
commit116674acc97ba75a720329996877077d988443a2 (patch)
tree6a3f2ff0b612ae2ee8a3f3509370c9e6333a53b3 /arch/s390/boot/ipleckd.S
parent71118c319fcae4a138f16e35b4f7e0a6d53ce2ca (diff)
Merge with Linux 2.4.2.
Diffstat (limited to 'arch/s390/boot/ipleckd.S')
-rw-r--r--arch/s390/boot/ipleckd.S40
1 files changed, 22 insertions, 18 deletions
diff --git a/arch/s390/boot/ipleckd.S b/arch/s390/boot/ipleckd.S
index 63b0330b2..d66a8d684 100644
--- a/arch/s390/boot/ipleckd.S
+++ b/arch/s390/boot/ipleckd.S
@@ -3,7 +3,7 @@
# IPL record for 3380/3390 DASD
#
# S390 version
-# Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
+# Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
# Author(s): Holger Smolinski <Holger.Smolinski@de.ibm.com>
#
#
@@ -11,6 +11,8 @@
# FIXME: should insert zeroes into memory when filling holes
# FIXME: calculate blkpertrack from rdc data and blksize
+# change 09/20/00 removed obsolete store of ipldevice to textesegment
+
# Usage of registers
# r1: ipl subchannel ( general use, dont overload without save/restore !)
# r10:
@@ -39,7 +41,7 @@
.org 0xf0 # Lets start now...
_start: .globl _start
- l %r1,__LC_SUBCHANNEL_ID # get IPL-subchannel from lowcore
+ l %r1,__LC_SUBCHANNEL_ID # get IPL-subchannel from lowcore
st %r1,__LC_IPLDEV # keep it for reipl
stsch .Lrdcdata
oi .Lrdcdata+5,0x84 # enable ssch and multipath mode
@@ -111,10 +113,10 @@ _start: .globl _start
mvc 0x600(256,%r3),0x180(%r4)
mvc 0x700(256,%r3),0x280(%r4)
.Lrunkern:
- lhi %r2,17
- sll %r2,12
- st %r1,0xc6c(%r2) # store iplsubchannel to lowcore
- st %r1,0xc6c # store iplsubchannel to lowcore
+# lhi %r2,17
+# sll %r2,12
+# st %r1,0xc6c(%r2) # store iplsubchannel to lowcore
+# st %r1,0xc6c # store iplsubchannel to lowcore
br %r3
# This function does the start IO
# r2: number of first block to read ( input by caller )
@@ -140,17 +142,16 @@ _start: .globl _start
lr %r15,%r4 # save number or blocks
slr %r7,%r7
icm %r7,3,.Lrdcdata+14 # load heads to r7
+ lhi %r6,9
+ clc .Lrdcdata+3(2),.L9345
+ je .L011
+ lhi %r6,10
+ clc .Lrdcdata+3(2),.L3380
+ je .L011
+ lhi %r6,12
clc .Lrdcdata+3(2),.L3390
- jne .L010 # 3380 or 3390 ?
- lhi %r6,12 # setup r6 correct!
- j .L011
-.L010:
- clc .Lrdcdata+3(2),.L9343
- jne .L013
- lhi %r6,9
- j .L011
-.L013:
- lhi %r6,10
+ je .L011
+ bras %r14,.Ldisab
.L011:
# loop for nbl times
.Lrdloop:
@@ -245,10 +246,13 @@ _start: .globl _start
.long 0x00008000 # they are loaded with a LM
.L3390:
.word 0x3390
-.L9343:
- .word 0x9343
+.L9345:
+ .word 0x9345
+.L3380:
+ .word 0x3380
.Lnull:
.long 0x00000000,0x00000000
+ .align 4
.Lrdcdata:
.long 0x00000000,0x00000000
.long 0x00000000,0x00000000