From cffdcee338ea682c74fa778244241e2f060199bf Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 29 May 2015 18:24:28 -0700 Subject: Make boot loader/SBI changes to support SMP Linux --- pk/bbl.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'pk/bbl.c') diff --git a/pk/bbl.c b/pk/bbl.c index f4f0f06..8d52b7d 100644 --- a/pk/bbl.c +++ b/pk/bbl.c @@ -1,6 +1,15 @@ #include "pk.h" #include "vm.h" +volatile int elf_loaded; + +static void enter_entry_point() +{ + write_csr(mepc, current.entry); + asm volatile("eret"); + __builtin_unreachable(); +} + void run_loaded_program(struct mainvars* args) { if (!current.is_supervisor) @@ -10,7 +19,15 @@ void run_loaded_program(struct mainvars* args) #ifdef PK_ENABLE_LOGO print_logo(); #endif - write_csr(mepc, current.entry); - asm volatile("eret"); - __builtin_unreachable(); + mb(); + elf_loaded = 1; + enter_entry_point(); +} + +void boot_other_hart() +{ + while (!elf_loaded) + ; + mb(); + enter_entry_point(); } -- cgit v1.1