Use entry_point! to typecheck the entry point and get the boot info.
This commit is contained in:
parent
f4cc148d83
commit
3d5cebdab4
16
src/main.rs
16
src/main.rs
@ -17,6 +17,8 @@ use vga_buffer; // required for custom panic handler
|
|||||||
use dendrobates_tinctoreus_azureus::hlt_loop;
|
use dendrobates_tinctoreus_azureus::hlt_loop;
|
||||||
use x86_64;
|
use x86_64;
|
||||||
|
|
||||||
|
use bootloader::BootInfo;
|
||||||
|
|
||||||
// Custom panic handler, required for freestanding program
|
// Custom panic handler, required for freestanding program
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
#[panic_handler]
|
#[panic_handler]
|
||||||
@ -28,9 +30,10 @@ fn panic(info: &PanicInfo) -> ! {
|
|||||||
hlt_loop();
|
hlt_loop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
entry_point!(kernel_main);
|
||||||
|
|
||||||
// Kernel entry point
|
// Kernel entry point
|
||||||
#[no_mangle]
|
pub extern "C" fn kernal_main(boot_info: &'static BootInfo) -> ! {
|
||||||
pub extern "C" fn _start() -> ! {
|
|
||||||
// TODO: Take care of cpuid stuff and set-up all floating point exetnsions
|
// TODO: Take care of cpuid stuff and set-up all floating point exetnsions
|
||||||
// TODO: We may also need to enable debug registers ?
|
// TODO: We may also need to enable debug registers ?
|
||||||
|
|
||||||
@ -44,6 +47,15 @@ pub extern "C" fn _start() -> ! {
|
|||||||
|
|
||||||
x86_64::instructions::interrupts::int3();
|
x86_64::instructions::interrupts::int3();
|
||||||
|
|
||||||
|
use x86_64::registers::control::Cr3;
|
||||||
|
|
||||||
|
let (level_4_page_table, flags) = Cr3::read();
|
||||||
|
println!(
|
||||||
|
"Level 4 page table at: {:?}, flags {:?}",
|
||||||
|
level_4_page_table.start_address(),
|
||||||
|
flags
|
||||||
|
);
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
*(0xdeadbeef as *mut u64) = 42;
|
*(0xdeadbeef as *mut u64) = 42;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user