summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/i386/init/ldscript_fallback_cbfs.lb14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/arch/i386/init/ldscript_fallback_cbfs.lb b/src/arch/i386/init/ldscript_fallback_cbfs.lb
index eb3bf3f0d7..6dec5eda9a 100644
--- a/src/arch/i386/init/ldscript_fallback_cbfs.lb
+++ b/src/arch/i386/init/ldscript_fallback_cbfs.lb
@@ -40,8 +40,10 @@ SECTIONS
_x = .;
. = (_x < (CONFIG_ROMBASE - 0x10000 + CONFIG_ROM_IMAGE_SIZE)) ? (CONFIG_ROMBASE - 0x10000 + CONFIG_ROM_IMAGE_SIZE) : _x;
+ __my_rom_start = .;
+
/* This section might be better named .setup */
- .rom . : {
+ .rom _myrom : {
_rom = .;
*(.rom.text);
*(.rom.data);
@@ -54,6 +56,7 @@ SECTIONS
}
_lrom = LOADADDR(.rom);
+
_elrom = LOADADDR(.rom) + SIZEOF(.rom);
/DISCARD/ : {
@@ -62,4 +65,13 @@ SECTIONS
*(.comment.*)
*(.note.*)
}
+
+ __my_rom_end = .;
+
+ __my_rom_size = (( ( __my_rom_end - __my_rom_start ) / 256) + 2 ) * 256;
+ /* Next line gives same output for me as above one but causes
+ * ld to complain about non constant offset so
+ __my_rom_size = (( (SIZEOF(.rom) + SIZEOF(.data) + SIZEOF(.text)) / 256 ) + 2 ) * 256;
+ */
+ _myrom = _rom + (0x10000 - __my_rom_size);
}