Michał Żygowski has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/37171 )
Change subject: drives/amd/agesa: remove legacy wrapper and separate CAR teardown ......................................................................
drives/amd/agesa: remove legacy wrapper and separate CAR teardown
TEST=boot PC Engines apu1
Signed-off-by: Michał Żygowski michal.zygowski@3mdeb.com Change-Id: I2ef73a2afa8dbb6ae676ee9fdc6beeecde57d6a5 --- M src/drivers/amd/agesa/Makefile.inc M src/drivers/amd/agesa/cache_as_ram.S A src/drivers/amd/agesa/exit_car.S 3 files changed, 47 insertions(+), 67 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/71/37171/1
diff --git a/src/drivers/amd/agesa/Makefile.inc b/src/drivers/amd/agesa/Makefile.inc index 4d5bd3e..1b0dd3e 100644 --- a/src/drivers/amd/agesa/Makefile.inc +++ b/src/drivers/amd/agesa/Makefile.inc @@ -13,32 +13,22 @@
ifeq ($(CONFIG_DRIVERS_AMD_PI),y)
-ifneq ($(CONFIG_BINARYPI_LEGACY_WRAPPER),y) - -romstage-y += romstage.c -romstage-y += mtrr_fixme.c -romstage-y += state_machine.c - -ramstage-y += state_machine.c - cpu_incs-y += $(src)/drivers/amd/agesa/cache_as_ram.S -postcar-y += cache_as_ram.S - -else - -romstage-y += heapmanager.c - -endif
romstage-y += def_callouts.c romstage-y += eventlog.c +romstage-y += mtrr_fixme.c +romstage-$(CONFIG_CPU_AMD_AGESA) += oem_s3.c +romstage-y += romstage.c +romstage-y += state_machine.c
+postcar-y += exit_car.S + +ramstage-y += acpi_tables.c ramstage-y += def_callouts.c ramstage-y += eventlog.c ramstage-y += heapmanager.c -ramstage-y += acpi_tables.c - -romstage-$(CONFIG_CPU_AMD_AGESA) += oem_s3.c ramstage-$(CONFIG_CPU_AMD_AGESA) += oem_s3.c s3_mtrr.c +ramstage-y += state_machine.c
endif diff --git a/src/drivers/amd/agesa/cache_as_ram.S b/src/drivers/amd/agesa/cache_as_ram.S index dcb0c43..1c53275 100644 --- a/src/drivers/amd/agesa/cache_as_ram.S +++ b/src/drivers/amd/agesa/cache_as_ram.S @@ -27,7 +27,6 @@
.code32 .globl _cache_as_ram_setup, _cache_as_ram_setup_end -.globl chipset_teardown_car
_cache_as_ram_setup:
@@ -105,59 +104,11 @@ pushl %eax call romstage_main
-#if CONFIG(POSTCAR_STAGE) - /* We do not return. Execution continues with run_postcar_phase() * calling to chipset_teardown_car below. */ jmp postcar_entry_failure
-chipset_teardown_car: - -/* - * Retrieve return address from stack as it will get trashed below if - * execution is utilizing the cache-as-ram stack. - */ - pop %esp - -#else - - movl %eax, %esp - -/* Register %esp is new stacktop for remaining of romstage. */ - -#endif - - /* Disable cache */ - movl %cr0, %eax - orl $CR0_CacheDisable, %eax - movl %eax, %cr0 - -/* Register %esp is preserved in AMD_DISABLE_STACK. */ - AMD_DISABLE_STACK - -#if CONFIG(POSTCAR_STAGE) - - jmp *%esp - -#else - - /* enable cache */ - movl %cr0, %eax - andl $0x9fffffff, %eax - movl %eax, %cr0 - - call romstage_after_car - -#endif - - /* Should never see this postcode */ - post_code(0xaf) - -stop: - hlt - jmp stop - /* These are here for linking purposes. */ .weak early_all_cores, romstage_main early_all_cores: @@ -165,6 +116,8 @@ postcar_entry_failure: /* Should never see this postcode */ post_code(0xae) +stop: + hlt jmp stop
_cache_as_ram_setup_end: diff --git a/src/drivers/amd/agesa/exit_car.S b/src/drivers/amd/agesa/exit_car.S new file mode 100644 index 0000000..f9d056e --- /dev/null +++ b/src/drivers/amd/agesa/exit_car.S @@ -0,0 +1,37 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2011 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <gcccar.inc> +#include <cpu/x86/cache.h> + +.code32 +.globl chipset_teardown_car + +chipset_teardown_car: + pop %esp + + /* Disable cache */ + movl %cr0, %eax + orl $CR0_CacheDisable, %eax + movl %eax, %cr0 + + AMD_DISABLE_STACK + + /* enable cache */ + movl %cr0, %eax + andl $(~(CR0_CD | CR0_NW)), %eax + movl %eax, %cr0 + + jmp *%esp