summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/riscv/boot.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/arch/riscv/boot.c b/src/arch/riscv/boot.c
index a59f9d15ec..6f744d3211 100644
--- a/src/arch/riscv/boot.c
+++ b/src/arch/riscv/boot.c
@@ -31,10 +31,12 @@ static void do_arch_prog_run(struct arch_prog_run_args *args)
fdt = prog_entry_arg(prog);
if (ENV_RAMSTAGE && prog_type(prog) == PROG_PAYLOAD) {
- if (CONFIG(RISCV_OPENSBI))
+ if (CONFIG(RISCV_OPENSBI)) {
+ // tell OpenSBI to switch to Supervisor mode before jumping to payload
run_payload_opensbi(prog, fdt, args->opensbi, RISCV_PAYLOAD_MODE_S);
- else
+ } else {
run_payload(prog, fdt, RISCV_PAYLOAD_MODE_S);
+ }
} else {
void (*doit)(int hart_id, void *fdt, void *arg) = prog_entry(prog);
doit(hart_id, fdt, prog_entry_arg(prog));