#![feature(asm)]
|
|
#![feature(unique)]
|
|
#![feature(const_fn)]
|
|
#![feature(lang_items)]
|
|
#![no_std]
|
|
|
|
#[macro_use]
|
|
extern crate log;
|
|
extern crate rlibc;
|
|
extern crate spin;
|
|
extern crate volatile;
|
|
|
|
mod arch;
|
|
#[macro_use]
|
|
mod macros;
|
|
mod misc;
|
|
mod logger;
|
|
|
|
use arch::x86_64::device::vga_console;
|
|
|
|
#[no_mangle]
|
|
pub extern fn kernel_main() {
|
|
//////////// !!! WARNING !!! ////////////
|
|
// THE STACK IS LARGER NOW, BUT //
|
|
// WE STILL HAVE NO GUARD PAGE //
|
|
/////////////////////////////////////////
|
|
|
|
vga_console::WRITER.lock().clear_screen();
|
|
println!("--- Sparkle v{} booting! ---", ::misc::VERSION);
|
|
|
|
logger::init().expect("Logger failed to launch!");
|
|
|
|
|
|
loop {}
|
|
}
|
|
|
|
#[lang = "eh_personality"]
|
|
#[no_mangle]
|
|
pub extern fn eh_personality() {}
|
|
#[lang = "panic_fmt"]
|
|
#[no_mangle]
|
|
pub extern fn panic_fmt() -> ! {loop{}}
|
|
|
|
#[allow(non_snake_case)]
|
|
#[no_mangle]
|
|
pub extern "C" fn _Unwind_Resume() -> ! {
|
|
// we should hlt here
|
|
loop {}
|
|
}
|