diff --git a/src/lib.rs b/src/lib.rs index c56d602..51d0295 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,12 +45,23 @@ pub extern fn rust_main(multiboot_information_address: usize) { kernel_start as usize, kernel_end as usize, multiboot_start, multiboot_end, memory_map_tag.memory_areas()); + enable_nxe_bit(); memory::remap_the_kernel(&mut frame_allocator, boot_info); println!("It did not crash!"); loop {} } +fn enable_nxe_bit() { + use x86_64::registers::msr::{IA32_EFER, rdmsr, wrmsr}; + + let nxe_bit = 1 << 11; + unsafe { + let efer = rdmsr(IA32_EFER); + wrmsr(IA32_EFER, efer | nxe_bit); + } +} + #[lang = "eh_personality"] extern fn eh_personality() {} #[lang = "panic_fmt"]