|
|
|
@ -11,6 +11,7 @@ mod lang_items;
|
|
|
|
|
#[no_mangle]
|
|
|
|
|
#[link_section = ".text.entry"]
|
|
|
|
|
pub extern "C" fn _start() -> ! {
|
|
|
|
|
clear_bss();
|
|
|
|
|
syscall::sys_exit(main());
|
|
|
|
|
panic!("unreachable after sys_exit!");
|
|
|
|
|
}
|
|
|
|
@ -21,3 +22,12 @@ fn main() -> i32 {
|
|
|
|
|
panic!("Cannot find main!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn clear_bss() {
|
|
|
|
|
extern "C" {
|
|
|
|
|
fn start_bss();
|
|
|
|
|
fn end_bss();
|
|
|
|
|
}
|
|
|
|
|
(start_bss as usize..end_bss as usize).for_each(|addr| {
|
|
|
|
|
unsafe { (addr as *mut u8).write_volatile(0); }
|
|
|
|
|
});
|
|
|
|
|
}
|