diff options
author | Xiang W <wxjstz@126.com> | 2024-04-08 23:27:42 +0800 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2024-04-10 09:50:24 +0530 |
commit | d4d2582eef7aac442076f955e4024403f8ff3d96 (patch) | |
tree | 3623c416199df750595d3a5147027ee41a51d5b8 /firmware | |
parent | 73344d4724d89ab5591311b9badfad875dddbb92 (diff) | |
download | opensbi-d4d2582eef7aac442076f955e4024403f8ff3d96.zip opensbi-d4d2582eef7aac442076f955e4024403f8ff3d96.tar.gz opensbi-d4d2582eef7aac442076f955e4024403f8ff3d96.tar.bz2 |
firmware: remove FW_TEXT_START
Now opensbi can run at any address via dynamic relocation. We can
remove FW_TEXT_START.
Signed-off-by: Xiang W <wxjstz@126.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Tested-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/fw_base.S | 4 | ||||
-rw-r--r-- | firmware/fw_base.ldS | 3 | ||||
-rw-r--r-- | firmware/fw_payload.elf.ldS | 2 | ||||
-rw-r--r-- | firmware/objects.mk | 4 | ||||
-rw-r--r-- | firmware/payloads/test.elf.ldS | 2 |
5 files changed, 4 insertions, 11 deletions
diff --git a/firmware/fw_base.S b/firmware/fw_base.S index b950c0b..9f995a2 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -53,9 +53,7 @@ _try_lottery: bnez a6, _wait_for_boot_hart /* relocate the global table content */ - li t0, FW_TEXT_START /* link start */ - lla t1, _fw_start /* load start */ - sub t2, t1, t0 /* load offset */ + lla t2, _fw_start lla t0, __rel_dyn_start lla t1, __rel_dyn_end beq t0, t1, _relocate_done diff --git a/firmware/fw_base.ldS b/firmware/fw_base.ldS index fb47984..9d11db5 100644 --- a/firmware/fw_base.ldS +++ b/firmware/fw_base.ldS @@ -7,8 +7,7 @@ * Anup Patel <anup.patel@wdc.com> */ - . = FW_TEXT_START; - /* Don't add any section between FW_TEXT_START and _fw_start */ + /* Don't add any section before _fw_start */ PROVIDE(_fw_start = .); . = ALIGN(0x1000); /* Need this to create proper sections */ diff --git a/firmware/fw_payload.elf.ldS b/firmware/fw_payload.elf.ldS index f1a544b..94e1ac6 100644 --- a/firmware/fw_payload.elf.ldS +++ b/firmware/fw_payload.elf.ldS @@ -15,7 +15,7 @@ SECTIONS #include "fw_base.ldS" #ifdef FW_PAYLOAD_OFFSET - . = FW_TEXT_START + FW_PAYLOAD_OFFSET; + . = FW_PAYLOAD_OFFSET; #else . = ALIGN(FW_PAYLOAD_ALIGN); #endif diff --git a/firmware/objects.mk b/firmware/objects.mk index e6b364b..a51ff65 100644 --- a/firmware/objects.mk +++ b/firmware/objects.mk @@ -13,10 +13,6 @@ firmware-cflags-y += firmware-asflags-y += firmware-ldflags-y += -ifdef FW_TEXT_START -firmware-genflags-y += -DFW_TEXT_START=$(FW_TEXT_START) -endif - ifdef FW_FDT_PATH firmware-genflags-y += -DFW_FDT_PATH=\"$(FW_FDT_PATH)\" ifdef FW_FDT_PADDING diff --git a/firmware/payloads/test.elf.ldS b/firmware/payloads/test.elf.ldS index 2328a1b..08e008f 100644 --- a/firmware/payloads/test.elf.ldS +++ b/firmware/payloads/test.elf.ldS @@ -13,7 +13,7 @@ ENTRY(_start) SECTIONS { #ifdef FW_PAYLOAD_OFFSET - . = FW_TEXT_START + FW_PAYLOAD_OFFSET; + . = FW_PAYLOAD_OFFSET; #else . = ALIGN(FW_PAYLOAD_ALIGN); #endif |