diff options
author | Rizwan Qureshi <rizwan.qureshi@intel.com> | 2016-08-26 21:08:50 +0530 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-09-12 19:50:18 +0200 |
commit | b1b44d34e39e52edfe5521d0671d685962529885 (patch) | |
tree | 15727ff574bb359a71b1db8f77a59e1ae961b6e4 /src/arch | |
parent | d2e92e461db62cc8c22de5ac6925b5fdf864c0ed (diff) |
arch/x86: Always compile postcar library in romstage
postcar_loader.c has a useful library of funtions for
setting up stack and MTRRs. Make it available in romstage
irrespective of CONFIG_POSTCAR_STAGE for use in stack setup
after Dram init.
The final step of moving the used and max MTRRs on to stack
is moved to a new function, that can be used outside of
postcar phase.
Change-Id: I322b12577d74268d03fe42a9744648763693cddd
Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com>
Reviewed-on: https://review.coreboot.org/16331
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/x86/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/x86/include/arch/cpu.h | 6 | ||||
-rw-r--r-- | src/arch/x86/postcar_loader.c | 18 |
3 files changed, 19 insertions, 7 deletions
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index 9b16add329..38a2a8ccba 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -213,7 +213,7 @@ romstage-y += memcpy.c romstage-y += memmove.c romstage-y += memset.c romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c -romstage-$(CONFIG_POSTCAR_STAGE) += postcar_loader.c +romstage-y += postcar_loader.c romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c ifneq ($(CONFIG_ROMCC),y) diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h index 5c26bcf74d..faa237565c 100644 --- a/src/arch/x86/include/arch/cpu.h +++ b/src/arch/x86/include/arch/cpu.h @@ -274,6 +274,12 @@ void postcar_frame_add_mtrr(struct postcar_frame *pcf, uintptr_t addr, size_t size, int type); /* + * Push used MTRR and Max MTRRs on to the stack + * and return pointer to stack top. + */ +void *postcar_commit_mtrrs(struct postcar_frame *pcf); + +/* * Load and run a program that takes control of execution that * tears down CAR and loads ramstage. The postcar_frame object * indicates how to set up the frame. If caching is enabled at diff --git a/src/arch/x86/postcar_loader.c b/src/arch/x86/postcar_loader.c index cc1d460585..b5d8db0e1b 100644 --- a/src/arch/x86/postcar_loader.c +++ b/src/arch/x86/postcar_loader.c @@ -84,6 +84,17 @@ void postcar_frame_add_mtrr(struct postcar_frame *pcf, pcf->num_var_mttrs++; } +void *postcar_commit_mtrrs(struct postcar_frame *pcf) +{ + /* + * Place the number of used variable MTRRs on stack then max number + * of variable MTRRs supported in the system. + */ + stack_push(pcf, pcf->num_var_mttrs); + stack_push(pcf, pcf->max_var_mttrs); + return (void *) pcf->stack; +} + void run_postcar_phase(struct postcar_frame *pcf) { struct prog prog = @@ -93,12 +104,7 @@ void run_postcar_phase(struct postcar_frame *pcf) .prog = &prog, }; - /* - * Place the number of used variable MTRRs on stack then max number - * of variable MTRRs supported in the system. - */ - stack_push(pcf, pcf->num_var_mttrs); - stack_push(pcf, pcf->max_var_mttrs); + postcar_commit_mtrrs(pcf); if (prog_locate(&prog)) die("Failed to locate after CAR program.\n"); |