diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/x86/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/x86/exit_car.S | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index bede41eb6f..9b16add329 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -95,6 +95,7 @@ endef ifeq ($(CONFIG_ARCH_BOOTBLOCK_X86_32)$(CONFIG_ARCH_BOOTBLOCK_X86_64),y) bootblock-y += boot.c +bootblock-y += cpu_common.c bootblock-y += memcpy.c bootblock-y += memset.c bootblock-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c @@ -279,6 +280,7 @@ postcar-generic-ccopts += -D__POSTCAR__ postcar-y += boot.c postcar-y += cbfs_and_run.c +postcar-y += cpu_common.c postcar-y += exit_car.S postcar-y += memcpy.c postcar-y += memmove.c diff --git a/src/arch/x86/exit_car.S b/src/arch/x86/exit_car.S index e04bd04b25..a51d662e14 100644 --- a/src/arch/x86/exit_car.S +++ b/src/arch/x86/exit_car.S @@ -54,6 +54,14 @@ _start: * 0x00: Number of variable MTRRs to clear */ +#if IS_ENABLED(CONFIG_SOC_SETS_MSRS) + push %esp + call soc_set_mtrrs + + /* eax: new top_of_stack with setup_stack_and_mtrrs data removed */ + movl %eax, %esp + call soc_enable_mtrrs +#else /* CONFIG_SOC_SETS_MSRS */ /* Clear variable MTRRs. */ pop %ebx /* Number to clear */ test %ebx, %ebx @@ -98,6 +106,7 @@ _start: and $(~(MTRR_DEF_TYPE_MASK)), %eax or $(MTRR_DEF_TYPE_EN), %eax wrmsr +#endif /* CONFIG_SOC_SETS_MSRS */ /* Load and run ramstage. */ call copy_and_run |