This commit is contained in:
mii443
2025-07-01 23:23:22 +09:00
parent feedb40c58
commit bfd301d3b7
2 changed files with 12 additions and 13 deletions

View File

@ -4,3 +4,8 @@ pub const BANNER: &str = r#" _
| | | | __/ | | (_) \__ \
|_| |_|\___|_|___\___/|___/
|_____| "#;
pub const PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
pub const PKG_NAME: &str = env!("CARGO_PKG_NAME");
pub const KERNEL_STACK_SIZE: usize = 1024 * 1024;

View File

@ -9,39 +9,33 @@ use core::arch::asm;
use core::panic::PanicInfo;
use core::ptr::addr_of;
use crate::constant::BANNER;
pub const PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
pub const PKG_NAME: &str = env!("CARGO_PKG_NAME");
const STACK_SIZE: usize = 1024 * 1024;
use crate::constant::{BANNER, KERNEL_STACK_SIZE, PKG_VERSION};
#[repr(C, align(16))]
struct AlignedStack {
stack: [u8; STACK_SIZE],
stack: [u8; KERNEL_STACK_SIZE],
}
#[used]
static mut KERNEL_STACK: AlignedStack = AlignedStack {
stack: [0; STACK_SIZE],
stack: [0; KERNEL_STACK_SIZE],
};
#[unsafe(no_mangle)]
pub extern "sysv64" fn asm_main() -> ! {
unsafe {
let stack_base = addr_of!(KERNEL_STACK.stack) as *const u8;
let stack_top = stack_base.add(STACK_SIZE);
let stack_top = stack_base.add(KERNEL_STACK_SIZE);
asm!(
"mov rsp, {stack_top}",
"call {main}",
"2:",
"hlt",
"jmp 2b",
stack_top = in(reg) stack_top,
main = sym main,
options(noreturn)
main = sym main
)
}
hlt_loop();
}
#[panic_handler]