arch/x86: move postcar main logic into C
The console_init(), MTRR printing, and loading ramstage logic was previously all in assembly. Move that logic into C code so that future features can more easily be added into the postcar boot flow. BUG=chrome-os-partner:57513 Change-Id: I332140f569caf0803570fd635d894295de8c0018 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/16618 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Andrey Petrov <andrey.petrov@intel.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
parent
c701393e20
commit
6b0cebccc4
|
@ -287,6 +287,7 @@ postcar-y += memmove.c
|
||||||
postcar-y += memset.c
|
postcar-y += memset.c
|
||||||
postcar-y += memlayout.ld
|
postcar-y += memlayout.ld
|
||||||
postcar-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
postcar-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
|
postcar-y += postcar.c
|
||||||
postcar-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
postcar-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||||
|
|
||||||
LDFLAGS_postcar += -Map $(objcbfs)/postcar.map
|
LDFLAGS_postcar += -Map $(objcbfs)/postcar.map
|
||||||
|
|
|
@ -26,11 +26,6 @@ stack_top:
|
||||||
.text
|
.text
|
||||||
.global _start
|
.global _start
|
||||||
_start:
|
_start:
|
||||||
#if IS_ENABLED(CONFIG_POSTCAR_CONSOLE)
|
|
||||||
/* Enable the console */
|
|
||||||
call console_init
|
|
||||||
#endif /* CONFIG_POSTCAR_CONSOLE */
|
|
||||||
|
|
||||||
/* chipset_teardown_car() is expected to disable cache-as-ram. */
|
/* chipset_teardown_car() is expected to disable cache-as-ram. */
|
||||||
call chipset_teardown_car
|
call chipset_teardown_car
|
||||||
|
|
||||||
|
@ -113,13 +108,8 @@ _start:
|
||||||
wrmsr
|
wrmsr
|
||||||
#endif /* CONFIG_SOC_SETS_MSRS */
|
#endif /* CONFIG_SOC_SETS_MSRS */
|
||||||
|
|
||||||
/* Display the MTRRs */
|
/* Call into main for postcar. */
|
||||||
#if IS_ENABLED(CONFIG_POSTCAR_CONSOLE)
|
call main
|
||||||
call soc_display_mtrrs
|
|
||||||
#endif /* CONFIG_POSTCAR_CONSOLE */
|
|
||||||
|
|
||||||
/* Load and run ramstage. */
|
|
||||||
call copy_and_run
|
|
||||||
/* Should never return. */
|
/* Should never return. */
|
||||||
1:
|
1:
|
||||||
jmp 1b
|
jmp 1b
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright 2016 Google, 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 <console/console.h>
|
||||||
|
#include <main_decl.h>
|
||||||
|
#include <program_loading.h>
|
||||||
|
#include <soc/intel/common/util.h>
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
console_init();
|
||||||
|
|
||||||
|
/* Display the MTRRs */
|
||||||
|
if (IS_ENABLED(CONFIG_DISPLAY_MTRRS))
|
||||||
|
soc_display_mtrrs();
|
||||||
|
|
||||||
|
/* Load and run ramstage. */
|
||||||
|
run_ramstage();
|
||||||
|
}
|
Loading…
Reference in New Issue