mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
genprotimg: boot: make boot loader -march=z900 compatible
Replace the `lgfi` opcode with equivalents as z900 has no support for it. While at it, fix a comment in `genprotimg/boot/head.S` and remove a useless label in `genprotimg/boot/stage3b_reloc.S`. Closes: https://github.com/ibm-s390-tools/s390-tools/issues/86 Reviewed-by: Philipp Rudo <prudo@linux.ibm.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
committed by
Jan Höppner
parent
bf5ca4367d
commit
3c661da4ee
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Entry code for stage 3a boot loader
|
||||
* Entry code for stage 3a and stage 3b boot loader
|
||||
*
|
||||
* Copyright IBM Corp. 2020
|
||||
*
|
||||
@@ -24,6 +24,8 @@ _start:
|
||||
sam64
|
||||
|
||||
/* Initialize stack */
|
||||
lgfi %r15, STACK_ADDRESS + STACK_SIZE - STACK_FRAME_OVERHEAD
|
||||
basr %r13, 0
|
||||
.Lbase: llgf %r15, .Lstack - .Lbase(%r13)
|
||||
brasl %r14, initialize
|
||||
.Lstack: .long STACK_ADDRESS + STACK_SIZE - STACK_FRAME_OVERHEAD
|
||||
.previous
|
||||
|
||||
@@ -21,6 +21,8 @@ _init:
|
||||
* kernel command line and the address and size of the
|
||||
* ramdisk. Simply ignore this by starting at 0x11000.
|
||||
*/
|
||||
lgfi %r1, STAGE3A_ENTRY
|
||||
basr %r13, 0
|
||||
.Lbase: llgf %r1, .Lstage3a_entry - .Lbase(%r13)
|
||||
br %r1
|
||||
.Lstage3a_entry: .long STAGE3A_ENTRY
|
||||
.previous
|
||||
|
||||
@@ -31,12 +31,12 @@ stage3b_reloc_start:
|
||||
sigp %r1, %r0, SIGP_SET_ARCHITECTURE
|
||||
sam64
|
||||
|
||||
.copy_stage3b:
|
||||
/* Location of stage3b in memory */
|
||||
larl %r8, stage3b_start
|
||||
|
||||
/* Destination for stage3b */
|
||||
lgfi %r9, STAGE3B_LOAD_ADDRESS
|
||||
basr %r13, 0
|
||||
.Lbase: llgf %r9, .Lstage3b_load_address - .Lbase(%r13)
|
||||
|
||||
/* Size of stage3b */
|
||||
lghi %r11, stage3b_end - stage3b_start
|
||||
@@ -45,8 +45,10 @@ stage3b_reloc_start:
|
||||
MEMCPY %r9, %r8, %r11
|
||||
|
||||
/* Branch to STAGE3B_ENTRY */
|
||||
lgfi %r9, STAGE3B_ENTRY
|
||||
llgf %r9, .Lstage3b_entry - .Lbase(%r13)
|
||||
br %r9
|
||||
.Lstage3b_load_address: .long STAGE3B_LOAD_ADDRESS
|
||||
.Lstage3b_entry: .long STAGE3B_ENTRY
|
||||
stage3b_start:
|
||||
.incbin "stage3b.bin"
|
||||
stage3b_end:
|
||||
|
||||
Reference in New Issue
Block a user