aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/smm/smm_tseg.ld
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/smm/smm_tseg.ld')
-rw-r--r--src/cpu/x86/smm/smm_tseg.ld45
1 files changed, 29 insertions, 16 deletions
diff --git a/src/cpu/x86/smm/smm_tseg.ld b/src/cpu/x86/smm/smm_tseg.ld
index 016b5a0fcf..6def972949 100644
--- a/src/cpu/x86/smm/smm_tseg.ld
+++ b/src/cpu/x86/smm/smm_tseg.ld
@@ -10,6 +10,34 @@ SECTIONS
.handler (.): {
/* Assembler stub */
*(.handler)
+ }
+
+ /* We are using the TSEG interleaved to stuff the SMM handlers
+ * for all CPU cores in there. The jump table redirects the execution
+ * to the actual SMM handler
+ */
+ . = 0x8000 - (( CPUS - 1) * 0x400);
+ .jumptable : {
+ *(.jumptable)
+ }
+
+ /* Data used in early SMM TSEG handler. */
+ . = 0x8400;
+ .earlydata : {
+ *(.earlydata)
+ }
+
+ /* 16KB for the heap at 64KB */
+ . = 0x10000;
+ .heap : {
+ _heap = .;
+ . = 0x4000;
+ _eheap = .;
+ }
+
+ . = ALIGN(0x4000);
+ .smm_c_handler : {
+ _smm_c_handler_start = .;
/* C code of the SMM handler */
*(.text);
@@ -29,25 +57,10 @@ SECTIONS
. = ALIGN(4);
*(.bss)
*(.sbss)
-
- /* What is this? */
*(COMMON)
. = ALIGN(4);
- }
- /* We are using the TSEG interleaved to stuff the SMM handlers
- * for all CPU cores in there. The jump table redirects the execution
- * to the actual SMM handler
- */
- . = 0x8000 - (( CPUS - 1) * 0x400);
- .jumptable : {
- *(.jumptable)
- }
-
- /* Data used in early SMM TSEG handler. */
- . = 0x8400;
- .earlydata : {
- *(.earlydata)
+ _smm_c_handler_end = .;
}
/DISCARD/ : {