124 lines
2.7 KiB
Diff
124 lines
2.7 KiB
Diff
|
---
|
||
|
include/boot/loaders_layout.h | 3 +++
|
||
|
zipl/boot/Makefile | 24 ++++++++++--------------
|
||
|
zipl/boot/stage0.lds.S | 18 ++++++++++++++++++
|
||
|
zipl/boot/stage1.lds.S | 18 ++++++++++++++++++
|
||
|
zipl/boot/stage1b.lds.S | 18 ++++++++++++++++++
|
||
|
5 files changed, 67 insertions(+), 14 deletions(-)
|
||
|
|
||
|
--- a/include/boot/loaders_layout.h
|
||
|
+++ b/include/boot/loaders_layout.h
|
||
|
@@ -14,6 +14,9 @@
|
||
|
#include "lib/zt_common.h"
|
||
|
#include "linux_layout.h"
|
||
|
|
||
|
+#define STAGE0_LOAD_ADDRESS _AC(0x0, UL)
|
||
|
+
|
||
|
+#define STAGE1_LOAD_ADDRESS _AC(0x18, UL)
|
||
|
#define STAGE1B_LOAD_ADDRESS _AC(0xe000, UL)
|
||
|
|
||
|
#define STAGE2_DESC _AC(0x78, UL)
|
||
|
--- a/zipl/boot/Makefile
|
||
|
+++ b/zipl/boot/Makefile
|
||
|
@@ -42,6 +42,15 @@ endif
|
||
|
%.lds: %.lds.S
|
||
|
$(CPP) -Wp,-MD,.$@.d,-MT,$@ $(INCLUDE_PARMS) -P -C -o $@ $<
|
||
|
|
||
|
+fba0.exec eckd0_ldl.exec eckd0_cdl.exec tape0.exec: \
|
||
|
+ stage0.lds
|
||
|
+
|
||
|
+eckd1.exec: \
|
||
|
+ stage1.lds
|
||
|
+
|
||
|
+eckd1b.exec fba1b.exec: \
|
||
|
+ stage1b.lds
|
||
|
+
|
||
|
eckd2dump_sv.exec: \
|
||
|
head.o stage2dump.o cio.o eckd2dump.o eckd2dump_sv.o \
|
||
|
libc.o ebcdic.o sclp.o entry.o stage2.lds
|
||
|
@@ -62,20 +71,7 @@ stage3.exec: head.o stage3.o kdump3.o li
|
||
|
sclp_stage3.o kdump.o entry.o stage3.lds
|
||
|
|
||
|
%.exec: %.o
|
||
|
- STAGE=$$( \
|
||
|
- echo $@ | awk ' \
|
||
|
- match($$0,/[0-9]+b*/){ \
|
||
|
- print substr($$0,RSTART,RLENGTH) \
|
||
|
- }' \
|
||
|
- ); \
|
||
|
- case $$STAGE in \
|
||
|
- 0) SFLAGS="-Wl,-Ttext,0";; \
|
||
|
- 1) SFLAGS="-Wl,-Ttext,0x18";; \
|
||
|
- 1b) SFLAGS="-Wl,-Ttext,0xE000";; \
|
||
|
- 2) SFLAGS="-Wl,-T,stage2.lds";; \
|
||
|
- 3) SFLAGS="-Wl,-T,stage3.lds";; \
|
||
|
- esac; \
|
||
|
- $(LINK) $$SFLAGS $(NO_PIE_LDFLAGS) $(NO_WARN_RWX_SEGMENTS_LDFLAGS) -Wl,--build-id=none -m64 -static -nostdlib $(filter %.o, $^) -o $@
|
||
|
+ $(LINK) -Wl,-T,$(filter %.lds,$^) $(NO_PIE_LDFLAGS) $(NO_WARN_RWX_SEGMENTS_LDFLAGS) -Wl,--build-id=none -m64 -static -nostdlib $(filter %.o, $^) -o $@
|
||
|
|
||
|
%.bin: %.exec
|
||
|
$(OBJCOPY) -O binary $< $@
|
||
|
--- /dev/null
|
||
|
+++ b/zipl/boot/stage0.lds.S
|
||
|
@@ -0,0 +1,18 @@
|
||
|
+#include "boot/loaders_layout.h"
|
||
|
+
|
||
|
+ENTRY(_start)
|
||
|
+
|
||
|
+SECTIONS
|
||
|
+{
|
||
|
+ . = STAGE0_LOAD_ADDRESS;
|
||
|
+ .text : {
|
||
|
+ *(.text .text.*)
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Sections to be discarded */
|
||
|
+ /DISCARD/ : {
|
||
|
+ *(.eh_frame)
|
||
|
+ *(.interp)
|
||
|
+ *(.note.GNU-stack)
|
||
|
+ }
|
||
|
+}
|
||
|
--- /dev/null
|
||
|
+++ b/zipl/boot/stage1.lds.S
|
||
|
@@ -0,0 +1,18 @@
|
||
|
+#include "boot/loaders_layout.h"
|
||
|
+
|
||
|
+ENTRY(_start)
|
||
|
+
|
||
|
+SECTIONS
|
||
|
+{
|
||
|
+ . = STAGE1_LOAD_ADDRESS;
|
||
|
+ .text : {
|
||
|
+ *(.text .text.*)
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Sections to be discarded */
|
||
|
+ /DISCARD/ : {
|
||
|
+ *(.eh_frame)
|
||
|
+ *(.interp)
|
||
|
+ *(.note.GNU-stack)
|
||
|
+ }
|
||
|
+}
|
||
|
--- /dev/null
|
||
|
+++ b/zipl/boot/stage1b.lds.S
|
||
|
@@ -0,0 +1,18 @@
|
||
|
+#include "boot/loaders_layout.h"
|
||
|
+
|
||
|
+ENTRY(_start)
|
||
|
+
|
||
|
+SECTIONS
|
||
|
+{
|
||
|
+ . = STAGE1B_LOAD_ADDRESS;
|
||
|
+ .text : {
|
||
|
+ *(.text .text.*)
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Sections to be discarded */
|
||
|
+ /DISCARD/ : {
|
||
|
+ *(.eh_frame)
|
||
|
+ *(.interp)
|
||
|
+ *(.note.GNU-stack)
|
||
|
+ }
|
||
|
+}
|