diff --git a/src/main.rs b/src/main.rs index 420df16..cf4e06a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,10 +14,11 @@ mod uart; unsafe extern "C" fn _enter() -> ! { use core::arch::asm; asm!( + // load hartid into t0; if t0 =/= 0, then jump to busy loop "csrr t0, mhartid", "bnez t0, 3f", // before we use the `la` pseudo-instruction for the first time, - // we need to set `gp` (google linker relaxation) + // we need to set `gp` (look up linker relaxation) ".option push", // pushes the current option stack ".option norelax", // disable relaxation so we can properly set `gp` // this instruction compiles to: @@ -41,6 +42,7 @@ unsafe extern "C" fn _enter() -> ! { "2:", // BSS is clear! "j 4f", + // busy loop if hartid =/= 0 "3:", "wfi", "j 3b",