[coreboot-gerrit] Patch set updated for coreboot: 034c32f ARMv7: Fix location of CBMEM console in romstage

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Sat Dec 21 18:36:36 CET 2013


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4428

-gerrit

commit 034c32ffa36dadaeb7977efee2b571881601ad90
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Wed Jul 31 16:28:44 2013 -0700

    ARMv7: Fix location of CBMEM console in romstage
    
    The CBMEM console pointer in romstage is actually a zero byte array.
    This means CBMEM area has to live at the end of the allocations or
    else CBMEM console will overwrite whatever comes after it.
    
    Change-Id: Icc59e982b724a2d396370c3a5abd8898e08baf26
    Signed-off-by: Stefan Reinauer <reinauer at google.com>
    Reviewed-on: https://gerrit.chromium.org/gerrit/63997
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Commit-Queue: Stefan Reinauer <reinauer at chromium.org>
    Tested-by: Stefan Reinauer <reinauer at chromium.org>
---
 src/arch/armv7/romstage.ld | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/arch/armv7/romstage.ld b/src/arch/armv7/romstage.ld
index 14c5bde..11a91cf 100644
--- a/src/arch/armv7/romstage.ld
+++ b/src/arch/armv7/romstage.ld
@@ -60,9 +60,25 @@ SECTIONS
 		_erom = .;
 	}
 
+	/* bss does not contain data, it is just a space that should be zero
+	 * initialized on startup. (typically uninitialized global variables)
+	 * crt0.S fills between _bss and _ebss with zeroes.
+	 */
+	.bss . : {
+		. = ALIGN(8);
+		_bss = .;
+		*(.bss)
+		*(.sbss)
+		*(COMMON)
+	}
+
+	_ebss = .;
+
 	.car.data . (NOLOAD) : {
+		. = ALIGN(8);
 		_car_data_start = .;
 		*(.car.global_data);
+		. = ALIGN(8);
 		/* The cbmem_console section comes last to take advantage of
 		 * a zero-sized array to hold the memconsole contents that
 		 * grows to a bound of CONFIG_CONSOLE_CAR_BUFFER_SIZE. However,
@@ -73,20 +89,17 @@ SECTIONS
 		_car_data_end = .;
 	}
 
-	/* bss does not contain data, it is just a space that should be zero
-	 * initialized on startup. (typically uninitialized global variables)
-	 * crt0.S fills between _bss and _ebss with zeroes.
-	 */
-	.bss . : {
-		. = ALIGN(8);
-		_bss = .;
-		*(.bss)
-		*(.sbss)
-		*(COMMON)
-	}
-	_ebss = .;
 	_end = .;
 
+	/* TODO: check if we are running out of SRAM. Below check is not good
+	 * enough though because SRAM has different size on different CPUs
+	 * and not all SRAM is available to the romstage. On Exynos, some is
+	 * used for BL1, the bootblock and the stack.
+	 *
+	 * _bogus = ASSERT((_end - _start + EXPECTED_CBMEM_CONSOLE_SIZE <= \
+	 * 				0x54000), "SRAM area is too full");
+	 */
+
 	/* Discard the sections we don't need/want */
 	/DISCARD/ : {
 		*(.comment)



More information about the coreboot-gerrit mailing list