2021-11-17 14:42:54 +00:00
|
|
|
pub mod drivers;
|
|
|
|
pub mod init;
|
|
|
|
#[naked]
|
|
|
|
#[no_mangle]
|
|
|
|
unsafe extern "C" fn _boot() -> ! {
|
|
|
|
#[rustfmt::skip]
|
|
|
|
asm!("
|
|
|
|
csrw sie, zero
|
|
|
|
csrci sstatus, 2
|
|
|
|
|
|
|
|
.option push
|
|
|
|
.option norelax
|
|
|
|
lla gp, __global_pointer$
|
|
|
|
.option pop
|
|
|
|
|
|
|
|
lla sp, __tmp_stack_top
|
|
|
|
|
|
|
|
lla t0, __bss_start
|
|
|
|
lla t1, __bss_end
|
|
|
|
|
|
|
|
1:
|
|
|
|
beq t0, t1, 2f
|
|
|
|
sd zero, (t0)
|
|
|
|
addi t0, t0, 8
|
|
|
|
j 1b
|
|
|
|
|
|
|
|
2:
|
|
|
|
j {}
|
|
|
|
",
|
|
|
|
sym _start, options(noreturn));
|
|
|
|
}
|
2021-11-23 11:53:06 +00:00
|
|
|
|
2021-11-18 06:35:50 +00:00
|
|
|
use crate::serial::SERIAL;
|
2021-11-23 11:53:06 +00:00
|
|
|
|
2021-11-17 14:42:54 +00:00
|
|
|
extern "C" fn _start() -> ! {
|
2021-11-18 06:35:50 +00:00
|
|
|
SERIAL.lock().out(format_args!("Hi"));
|
2021-11-17 14:42:54 +00:00
|
|
|
sloop()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn sloop() -> ! {
|
|
|
|
loop {
|
|
|
|
unsafe { asm!("nop") };
|
|
|
|
}
|
|
|
|
}
|