arch/arm: Pass cbmem_top to ramstage via calling argument
This solution is very generic and can in principle be implemented on all arch/soc. Instead trying to figure out which files can be removed from stages and which cbmem_top implementations need with preprocessor, rename all cbmem_top implementation to cbmem_top_romstage. Mechanisms set in place to pass on information from rom- to ram-stage will be placed in a followup commit. Change-Id: If31f0f1de17ffc92c9397f32b26db25aff4b7cab Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36145 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
@@ -17,6 +17,7 @@ config ARCH_ROMSTAGE_ARM
|
||||
config ARCH_RAMSTAGE_ARM
|
||||
bool
|
||||
select ARCH_ARM
|
||||
select RAMSTAGE_CBMEM_TOP_ARG
|
||||
|
||||
source src/arch/arm/armv4/Kconfig
|
||||
source src/arch/arm/armv7/Kconfig
|
||||
|
@@ -14,8 +14,9 @@
|
||||
#ifndef __ARCH_STAGES_H
|
||||
#define __ARCH_STAGES_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <main_decl.h>
|
||||
|
||||
void stage_entry(void);
|
||||
void stage_entry(uintptr_t stage_arg);
|
||||
|
||||
#endif
|
||||
|
@@ -22,13 +22,16 @@
|
||||
* .text.stage_entry section created by -ffunction-sections).
|
||||
*/
|
||||
|
||||
#include <cbmem.h>
|
||||
#include <arch/stages.h>
|
||||
#include <arch/cache.h>
|
||||
|
||||
/**
|
||||
* generic stage entry point. override this if board specific code is needed.
|
||||
*/
|
||||
__weak void stage_entry(void)
|
||||
__weak void stage_entry(uintptr_t stage_arg)
|
||||
{
|
||||
if (!ENV_ROMSTAGE_OR_BEFORE)
|
||||
_cbmem_top_ptr = stage_arg;
|
||||
main();
|
||||
}
|
||||
|
Reference in New Issue
Block a user