firmware: Bring back FW_TEXT_START as an optional parameter
Bring back FW_TEXT_START as an optional parameter to allow users
explicitly specify compile time address for loading debug symbols.
When not specified, the FW_TEXT_START is assumed to be 0.
Fixes: d4d2582eef
("firmware: remove FW_TEXT_START")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Tested-by: Clément Léger <cleger@rivosinc.com>
This commit is contained in:
parent
e3a30a2c91
commit
96f0a2e3ea
|
@ -61,6 +61,9 @@ Firmware Configuration and Compilation
|
||||||
All firmware types support the following common compile time configuration
|
All firmware types support the following common compile time configuration
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
|
* **FW_TEXT_START** - Defines the compile time address of the OpenSBI
|
||||||
|
firmware. This configuration parameter is optional and assumed to be
|
||||||
|
`0` if not specified.
|
||||||
* **FW_FDT_PATH** - Path to an external flattened device tree binary file to
|
* **FW_FDT_PATH** - Path to an external flattened device tree binary file to
|
||||||
be embedded in the *.rodata* section of the final firmware. If this option
|
be embedded in the *.rodata* section of the final firmware. If this option
|
||||||
is not provided then the firmware will expect the FDT to be passed as an
|
is not provided then the firmware will expect the FDT to be passed as an
|
||||||
|
|
|
@ -53,7 +53,9 @@ _try_lottery:
|
||||||
bnez a6, _wait_for_boot_hart
|
bnez a6, _wait_for_boot_hart
|
||||||
|
|
||||||
/* relocate the global table content */
|
/* relocate the global table content */
|
||||||
lla t2, _fw_start
|
li t0, FW_TEXT_START /* link start */
|
||||||
|
lla t1, _fw_start /* load start */
|
||||||
|
sub t2, t1, t0 /* load offset */
|
||||||
lla t0, __rel_dyn_start
|
lla t0, __rel_dyn_start
|
||||||
lla t1, __rel_dyn_end
|
lla t1, __rel_dyn_end
|
||||||
beq t0, t1, _relocate_done
|
beq t0, t1, _relocate_done
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
* Anup Patel <anup.patel@wdc.com>
|
* Anup Patel <anup.patel@wdc.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Don't add any section before _fw_start */
|
. = FW_TEXT_START;
|
||||||
|
/* Don't add any section between FW_TEXT_START and _fw_start */
|
||||||
PROVIDE(_fw_start = .);
|
PROVIDE(_fw_start = .);
|
||||||
|
|
||||||
. = ALIGN(0x1000); /* Need this to create proper sections */
|
. = ALIGN(0x1000); /* Need this to create proper sections */
|
||||||
|
|
|
@ -15,7 +15,7 @@ SECTIONS
|
||||||
#include "fw_base.ldS"
|
#include "fw_base.ldS"
|
||||||
|
|
||||||
#ifdef FW_PAYLOAD_OFFSET
|
#ifdef FW_PAYLOAD_OFFSET
|
||||||
. = FW_PAYLOAD_OFFSET;
|
. = FW_TEXT_START + FW_PAYLOAD_OFFSET;
|
||||||
#else
|
#else
|
||||||
. = ALIGN(FW_PAYLOAD_ALIGN);
|
. = ALIGN(FW_PAYLOAD_ALIGN);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,6 +13,12 @@ firmware-cflags-y +=
|
||||||
firmware-asflags-y +=
|
firmware-asflags-y +=
|
||||||
firmware-ldflags-y +=
|
firmware-ldflags-y +=
|
||||||
|
|
||||||
|
ifdef FW_TEXT_START
|
||||||
|
firmware-genflags-y += -DFW_TEXT_START=$(FW_TEXT_START)
|
||||||
|
else
|
||||||
|
firmware-genflags-y += -DFW_TEXT_START=0x0
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef FW_FDT_PATH
|
ifdef FW_FDT_PATH
|
||||||
firmware-genflags-y += -DFW_FDT_PATH=\"$(FW_FDT_PATH)\"
|
firmware-genflags-y += -DFW_FDT_PATH=\"$(FW_FDT_PATH)\"
|
||||||
ifdef FW_FDT_PADDING
|
ifdef FW_FDT_PADDING
|
||||||
|
|
|
@ -13,7 +13,7 @@ ENTRY(_start)
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
#ifdef FW_PAYLOAD_OFFSET
|
#ifdef FW_PAYLOAD_OFFSET
|
||||||
. = FW_PAYLOAD_OFFSET;
|
. = FW_TEXT_START + FW_PAYLOAD_OFFSET;
|
||||||
#else
|
#else
|
||||||
. = ALIGN(FW_PAYLOAD_ALIGN);
|
. = ALIGN(FW_PAYLOAD_ALIGN);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue