diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/arm/boot.c | 5 | ||||
-rw-r--r-- | src/arch/arm64/boot.c | 5 | ||||
-rw-r--r-- | src/arch/mips/boot.c | 5 | ||||
-rw-r--r-- | src/arch/riscv/boot.c | 5 | ||||
-rw-r--r-- | src/arch/x86/boot/boot.c | 18 |
5 files changed, 11 insertions, 27 deletions
diff --git a/src/arch/arm/boot.c b/src/arch/arm/boot.c index 6a2934b86e..806e0d10ff 100644 --- a/src/arch/arm/boot.c +++ b/src/arch/arm/boot.c @@ -29,8 +29,3 @@ void arch_prog_run(struct prog *prog) doit = prog_entry(prog); doit(prog_entry_arg(prog)); } - -void arch_payload_run(struct payload *payload) -{ - arch_prog_run(&payload->prog); -} diff --git a/src/arch/arm64/boot.c b/src/arch/arm64/boot.c index b5e375193e..312ffdddc9 100644 --- a/src/arch/arm64/boot.c +++ b/src/arch/arm64/boot.c @@ -77,8 +77,3 @@ void arch_prog_run(struct prog *prog) doit(prog_entry_arg(prog)); } - -void arch_payload_run(struct payload *payload) -{ - arch_prog_run(&payload->prog); -} diff --git a/src/arch/mips/boot.c b/src/arch/mips/boot.c index ebc45bb682..549d4833ca 100644 --- a/src/arch/mips/boot.c +++ b/src/arch/mips/boot.c @@ -24,8 +24,3 @@ void arch_prog_run(struct prog *prog) { stage_exit(prog_entry(prog)); } - -void arch_payload_run(struct payload *payload) -{ - arch_prog_run(&payload->prog); -} diff --git a/src/arch/riscv/boot.c b/src/arch/riscv/boot.c index f66c02ff2e..d273430085 100644 --- a/src/arch/riscv/boot.c +++ b/src/arch/riscv/boot.c @@ -26,8 +26,3 @@ void arch_prog_run(struct prog *prog) doit = prog_entry(prog); doit(prog_entry_arg(prog)); } - -void arch_payload_run(struct payload *payload) -{ - arch_prog_run(&payload->prog); -} diff --git a/src/arch/x86/boot/boot.c b/src/arch/x86/boot/boot.c index d5365842d2..08fabcfb4f 100644 --- a/src/arch/x86/boot/boot.c +++ b/src/arch/x86/boot/boot.c @@ -123,18 +123,22 @@ static void jmp_payload(void *entry, unsigned long buffer, unsigned long size) ); } -void arch_payload_run(struct payload *payload) +static void try_payload(struct prog *prog) { - if (IS_ENABLED(CONFIG_RELOCATABLE_RAMSTAGE)) - jmp_payload_no_bounce_buffer(prog_entry(&payload->prog)); - else - jmp_payload(prog_entry(&payload->prog), - (uintptr_t)payload->bounce.data, - payload->bounce.size); + if (prog->type == PROG_PAYLOAD) { + if (IS_ENABLED(CONFIG_RELOCATABLE_RAMSTAGE)) + jmp_payload_no_bounce_buffer(prog_entry(prog)); + else + jmp_payload(prog_entry(prog), + (uintptr_t)prog_start(prog), + prog_size(prog)); + } } void arch_prog_run(struct prog *prog) { + if (ENV_RAMSTAGE) + try_payload(prog); __asm__ volatile ( "jmp *%%edi\n" :: "D"(prog_entry(prog)) |