Implement x86_64 arch functions

This commit is contained in:
Jeremy Soller
2020-09-06 14:18:01 -06:00
parent f801a40908
commit 379294b59f
2 changed files with 8 additions and 8 deletions
+6 -8
View File
@@ -27,26 +27,24 @@ impl Arch for X8664Arch {
#[inline(always)]
unsafe fn invalidate(address: VirtualAddress) {
//TODO: invlpg address
unimplemented!();
asm!("invlpg [{0}]", in(reg) address.data());
}
#[inline(always)]
unsafe fn invalidate_all() {
//TODO: mov cr3, cr3
unimplemented!();
Self::set_table(Self::table());
}
#[inline(always)]
unsafe fn table() -> PhysicalAddress {
//TODO: return cr3
unimplemented!();
let address: usize;
asm!("mov rax, cr3", out("rax") address);
PhysicalAddress::new(address)
}
#[inline(always)]
unsafe fn set_table(address: PhysicalAddress) {
//TODO: mov cr3, address
unimplemented!();
asm!("mov cr3, rax", in("rax") address.data());
}
}
+2
View File
@@ -1,3 +1,5 @@
#![feature(asm)]
pub use crate::{
arch::Arch,
arch::emulate::*,