diff options
Diffstat (limited to 'src/cpu/x86/smm/smm_tseg.ld')
-rw-r--r-- | src/cpu/x86/smm/smm_tseg.ld | 45 |
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/ : { |