#![feature(panic_info_message)] #![no_std] #![no_main] use core::arch::global_asm; use sbi::{console_put_char, shutdown}; use lang_items::console; mod lang_items; mod sbi; // 汇编脚本引入, 调整内核的内存布局之后, 会跳入到 rust_main中执行 global_asm!(include_str!("entry.asm")); extern "C" { fn stext(); fn etext(); fn sbss(); fn ebss(); fn boot_stack_top_bound(); fn boot_stack_lower_bound(); } #[no_mangle] pub fn rust_main(){ init_bss(); println!("stext: {:#x}, etext: {:#x}", stext as usize, etext as usize); println!("sbss: {:#x}, ebss: {:#x}", sbss as usize, ebss as usize); println!("boot_stack_top_bound: {:#x}, boot_stack_lower_bound: {:#x}", boot_stack_top_bound as usize, boot_stack_lower_bound as usize); panic!("my panic"); } /// ## 初始化bss段 /// fn init_bss() { unsafe { (sbss as usize..ebss as usize).for_each(|p| (p as *mut u8).write_unaligned(0)) } }