program loading: add prog_run() function
The prog_run() function abstracts away what is required for running a given program. Within it, there are 2 calls: 1. platform_prog_run() and 2. arch_prog_run(). The platform_prog_run() allows for a chipset to intercept a program that will be run. This allows for CPU switching as currently needed in t124 and t132. Change-Id: I22a5dd5bfb1018e7e46475e47ac993a0941e2a8c Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/8846 Tested-by: build bot (Jenkins) Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com> Reviewed-by: Marc Jones <marc.jones@se-eng.com>
This commit is contained in:
committed by
Aaron Durbin
parent
3948e5392b
commit
b3847e6424
@@ -18,7 +18,7 @@
|
||||
#
|
||||
subdirs-y += loaders
|
||||
|
||||
bootblock-y += arch_ops.c
|
||||
bootblock-y += prog_ops.c
|
||||
bootblock-y += cbfs.c cbfs_core.c
|
||||
bootblock-$(CONFIG_COMMON_CBFS_SPI_WRAPPER) += cbfs_spi.c
|
||||
|
||||
@@ -26,7 +26,7 @@ bootblock-$(CONFIG_CONSOLE_CBMEM) += cbmem_console.c
|
||||
bootblock-y += memchr.c
|
||||
bootblock-y += memcmp.c
|
||||
|
||||
verstage-y += arch_ops.c
|
||||
verstage-y += prog_ops.c
|
||||
verstage-y += delay.c
|
||||
verstage-y += cbfs.c
|
||||
verstage-y += memcmp.c
|
||||
@@ -35,7 +35,7 @@ verstage-$(CONFIG_COMMON_CBFS_SPI_WRAPPER) += cbfs_spi.c
|
||||
verstage-y += tlcl.c
|
||||
verstage-$(CONFIG_GENERIC_UDELAY) += timer.c
|
||||
|
||||
romstage-y += arch_ops.c
|
||||
romstage-y += prog_ops.c
|
||||
romstage-y += memchr.c
|
||||
romstage-y += memcmp.c
|
||||
$(foreach arch,$(ARCH_SUPPORTED),\
|
||||
@@ -60,7 +60,7 @@ romstage-$(CONFIG_ARCH_ROMSTAGE_X86_32) += gcc.c
|
||||
ramstage-$(CONFIG_ARCH_RAMSTAGE_X86_32) += gcc.c
|
||||
endif
|
||||
|
||||
ramstage-y += arch_ops.c
|
||||
ramstage-y += prog_ops.c
|
||||
ramstage-y += hardwaremain.c
|
||||
ramstage-y += selfboot.c
|
||||
ramstage-y += coreboot_table.c
|
||||
|
@@ -83,7 +83,7 @@ out:
|
||||
|
||||
void payload_run(void)
|
||||
{
|
||||
const struct payload *payload = &global_payload;
|
||||
struct payload *payload = &global_payload;
|
||||
|
||||
/* Reset to booting from this image as late as possible */
|
||||
boot_successful();
|
||||
|
@@ -48,7 +48,7 @@ load_ramstage(const struct ramstage_loader_ops *ops,
|
||||
|
||||
timestamp_add_now(TS_END_COPYRAM);
|
||||
|
||||
stage_exit(prog_entry(ramstage));
|
||||
prog_run(ramstage);
|
||||
}
|
||||
|
||||
static void run_ramstage_from_resume(struct romstage_handoff *handoff,
|
||||
@@ -60,7 +60,7 @@ static void run_ramstage_from_resume(struct romstage_handoff *handoff,
|
||||
|
||||
if (prog_entry(ramstage) != NULL) {
|
||||
printk(BIOS_DEBUG, "Jumping to image.\n");
|
||||
stage_exit(prog_entry(ramstage));
|
||||
prog_run(ramstage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -38,5 +38,5 @@ void run_romstage(void)
|
||||
halt();
|
||||
}
|
||||
|
||||
stage_exit(prog_entry(&romstage));
|
||||
prog_run(&romstage);
|
||||
}
|
||||
|
@@ -26,3 +26,14 @@ void __attribute__ ((weak)) arch_segment_loaded(uintptr_t start, size_t size,
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
void prog_run(struct prog *prog)
|
||||
{
|
||||
platform_prog_run(prog);
|
||||
arch_prog_run(prog);
|
||||
}
|
||||
|
||||
void __attribute__ ((weak)) platform_prog_run(struct prog *prog)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
Reference in New Issue
Block a user