diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2016-12-04 22:17:37 +0200 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2016-12-11 08:56:40 +0100 |
commit | 9d8adc0e3a923e1d201d50344f94a9176e5ec939 (patch) | |
tree | 5868a41948f5eda05a1fb8a213c4891d8a631cad /src/cpu | |
parent | 3b3a28436f8ef65e2aee80f7367452c2bc136a19 (diff) |
x86 SMM: Fix use with RELOCATABLE_RAMSTAGE
The value for _size was not evaluated correctly if ramstage
is relocated, make the calculation runtime.
While touching it, move symbol declarations to header file.
Change-Id: I4402315945771acf1c86a81cac6d43f1fe99a2a2
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/17784
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/amd/smm/smm_init.c | 6 | ||||
-rw-r--r-- | src/cpu/x86/smm/smm_module_loader.c | 3 |
2 files changed, 2 insertions, 7 deletions
diff --git a/src/cpu/amd/smm/smm_init.c b/src/cpu/amd/smm/smm_init.c index c87b70109f..4d04cf7762 100644 --- a/src/cpu/amd/smm/smm_init.c +++ b/src/cpu/amd/smm/smm_init.c @@ -26,9 +26,6 @@ #include <cpu/x86/smm.h> #include <string.h> -extern unsigned char _binary_smm_start; -extern unsigned char _binary_smm_size; - void smm_init(void) { msr_t msr, syscfg_orig, mtrr_aseg_orig; @@ -63,7 +60,8 @@ void smm_init(void) enable_cache(); /* copy the real SMM handler */ - memcpy((void *)SMM_BASE, &_binary_smm_start, (size_t)&_binary_smm_size); + memcpy((void *)SMM_BASE, _binary_smm_start, + _binary_smm_end - _binary_smm_start); wbinvd(); disable_cache(); diff --git a/src/cpu/x86/smm/smm_module_loader.c b/src/cpu/x86/smm/smm_module_loader.c index 139bce13ab..b8edf3969e 100644 --- a/src/cpu/x86/smm/smm_module_loader.c +++ b/src/cpu/x86/smm/smm_module_loader.c @@ -45,9 +45,6 @@ struct smm_stub_params { */ extern unsigned char _binary_smmstub_start[]; -/* This is the SMM handler that the stub calls. It is encoded as an rmodule. */ -extern unsigned char _binary_smm_start[]; - /* Per CPU minimum stack size. */ #define SMM_MINIMUM_STACK_SIZE 32 |