[coreboot-gerrit] Patch set updated for coreboot: 72fbb45 x86: fix SMM programs linked with gc-sections

Aaron Durbin (adurbin@google.com) gerrit at coreboot.org
Mon Mar 30 18:00:56 CEST 2015


Aaron Durbin (adurbin at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9160

-gerrit

commit 72fbb452b2d2ae071d4f1163d4ce5dabd4ebbc1e
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Sun Mar 29 22:16:55 2015 -0500

    x86: fix SMM programs linked with gc-sections
    
    Commit f69a99db (coreboot: x86: enable gc-sections) added
    gc-sections to the linker command line. The SMM-specific
    linker scripts were not interrogated to see if all the
    sections were being included properly. .data, .bss, and .sbss
    did not have the proper globs set to put the SMM programs in
    the expected order.
    
    Lastly, explicitly set the ENTRY for the SMM programs.
    
    Change-Id: Ibb579d18d4819af666d6ec7dfc30776e8c404b71
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 src/cpu/x86/smm/smm.ld            | 4 ++++
 src/cpu/x86/smm/smm_tseg.ld       | 4 ++++
 src/cpu/x86/smm/smmhandler.S      | 1 +
 src/cpu/x86/smm/smmhandler_tseg.S | 1 +
 4 files changed, 10 insertions(+)

diff --git a/src/cpu/x86/smm/smm.ld b/src/cpu/x86/smm/smm.ld
index 5d316a8..c198161 100644
--- a/src/cpu/x86/smm/smm.ld
+++ b/src/cpu/x86/smm/smm.ld
@@ -1,6 +1,7 @@
 
 /* Maximum number of CPUs/cores */
 CPUS = 4;
+ENTRY(smm_handler_start);
 
 SECTIONS
 {
@@ -25,11 +26,14 @@ SECTIONS
 		/* C read-write data of the SMM handler */
 		 . = ALIGN(4);
 		*(.data)
+		*(.data.*)
 
 		/* C uninitialized data of the SMM handler */
 		 . = ALIGN(4);
 		*(.bss)
+		*(.bss.*)
 		*(.sbss)
+		*(.sbss.*)
 
 		/* What is this? */
 		*(COMMON)
diff --git a/src/cpu/x86/smm/smm_tseg.ld b/src/cpu/x86/smm/smm_tseg.ld
index 99f2aa0..b57461c 100644
--- a/src/cpu/x86/smm/smm_tseg.ld
+++ b/src/cpu/x86/smm/smm_tseg.ld
@@ -1,5 +1,6 @@
 /* Maximum number of CPUs/cores */
 CPUS = 16;
+ENTRY(smm_handler_start);
 
 SECTIONS
 {
@@ -52,11 +53,14 @@ SECTIONS
 		/* C read-write data of the SMM handler */
 		 . = ALIGN(4);
 		*(.data)
+		*(.data.*)
 
 		/* C uninitialized data of the SMM handler */
 		 . = ALIGN(4);
 		*(.bss)
+		*(.bss.*)
 		*(.sbss)
+		*(.sbss.*)
 		*(COMMON)
 		 . = ALIGN(4);
 
diff --git a/src/cpu/x86/smm/smmhandler.S b/src/cpu/x86/smm/smmhandler.S
index 5d3aae3..611c0f3 100644
--- a/src/cpu/x86/smm/smmhandler.S
+++ b/src/cpu/x86/smm/smmhandler.S
@@ -75,6 +75,7 @@
  *
  * All the bad magic is not all that bad after all.
  */
+.global smm_handler_start
 smm_handler_start:
 	movw    $(smm_gdtptr16 - smm_handler_start + SMM_HANDLER_OFFSET), %bx
 	data32  lgdt %cs:(%bx)
diff --git a/src/cpu/x86/smm/smmhandler_tseg.S b/src/cpu/x86/smm/smmhandler_tseg.S
index c9d78b9..ee8bd26 100644
--- a/src/cpu/x86/smm/smmhandler_tseg.S
+++ b/src/cpu/x86/smm/smmhandler_tseg.S
@@ -91,6 +91,7 @@
  *
  * All the bad magic is not all that bad after all.
  */
+.global smm_handler_start
 smm_handler_start:
 	movl	$(TSEG_BAR), %eax	/* Get TSEG base from PCIE */
 	addr32	movl (%eax), %edx	/* Save TSEG_BAR in %edx */



More information about the coreboot-gerrit mailing list