From 5331a7cff9ebf6f92542eee53e6556a4d5a0dc75 Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Wed, 23 Oct 2019 17:07:15 +0200 Subject: Program loading: Handoff cbmem_top via calling arguments There are a lot of different implementations to pass information from romstage to ramstage. These could all be unified by passing this information via cbmem. Often however these methods exist for that very purpose. This solves this by passing cbmem_top via the programs arguments. Change-Id: Id2031f7bb81ce65fc318313c270eb1fbae3b2114 Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/c/coreboot/+/36272 Reviewed-by: Nico Huber Reviewed-by: Aaron Durbin Tested-by: build bot (Jenkins) --- src/lib/prog_loaders.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/lib/prog_loaders.c') diff --git a/src/lib/prog_loaders.c b/src/lib/prog_loaders.c index 5048c99418..183a22bff0 100644 --- a/src/lib/prog_loaders.c +++ b/src/lib/prog_loaders.c @@ -96,6 +96,8 @@ static void run_ramstage_from_resume(struct prog *ramstage) /* Load the cached ramstage to runtime location. */ stage_cache_load_stage(STAGE_RAMSTAGE, ramstage); + prog_set_arg(ramstage, cbmem_top()); + if (prog_entry(ramstage) != NULL) { printk(BIOS_DEBUG, "Jumping to image.\n"); prog_run(ramstage); @@ -148,6 +150,9 @@ void run_ramstage(void) timestamp_add_now(TS_END_COPYRAM); + /* This overrides the arg fetched from the relocatable module */ + prog_set_arg(&ramstage, cbmem_top()); + prog_run(&ramstage); fail: -- cgit v1.2.3