Fix ldscript for bootblock .rom section
authorKyösti Mälkki <kyosti.malkki@gmail.com>
Wed, 23 Nov 2011 14:33:12 +0000 (16:33 +0200)
committerPatrick Georgi <patrick@georgi-clan.de>
Thu, 8 Dec 2011 09:42:39 +0000 (10:42 +0100)
Allocation size for the section was miscalculated, so the section
did not honour its upper-bound address.

Also align the section start to 4 bytes, so it starts with code
instead of pad bytes.

Change-Id: Ic2a43981836a0873b50abecfcad2def7b6586a5d
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/453
Tested-by: build bot (Jenkins)
Reviewed-by: Alec Ari <neotheuser@ymail.com>
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
src/arch/x86/init/ldscript_failover.lb

index 7e48dc1a256eedbe2f81248baee2cef0d052f768..83e5eb343200024b9d1e70463f1f88de86309288 100644 (file)
@@ -29,6 +29,14 @@ MEMORY {
 TARGET(binary)
 SECTIONS
 {
+       /* Align .rom to next 4 byte boundary so no pad byte appears
+        * between _rom and _start.
+        */
+       .bogus ROMLOC_MIN : {
+               . = ALIGN(4);
+               ROMLOC = .;
+       } >rom = 0xff
+
        /* This section might be better named .setup */
        .rom ROMLOC : {
                _rom = .;
@@ -39,7 +47,11 @@ SECTIONS
                _erom = .;
        } >rom = 0xff
 
-       ROMLOC = 0xffffff00 - (_erom - _rom) + 1;
+       /* Allocation reserves extra 16 bytes here. Alignment requirements
+        * may cause the total size of a section to change when the start
+        * address gets applied.
+        */
+       ROMLOC_MIN = 0xffffff00 - (_erom - _rom + 16);
 
        /DISCARD/ : {
                *(.comment)