mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Try to switch tables, causes boot loop
This commit is contained in:
@@ -109,6 +109,18 @@ impl ActivePageTable {
|
|||||||
|
|
||||||
temporary_page.unmap(self);
|
temporary_page.unmap(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn switch(&mut self, new_table: InactivePageTable) -> InactivePageTable {
|
||||||
|
use x86::controlregs;
|
||||||
|
|
||||||
|
let old_table = InactivePageTable {
|
||||||
|
p4_frame: Frame::containing_address(unsafe { controlregs::cr3() } as usize),
|
||||||
|
};
|
||||||
|
unsafe {
|
||||||
|
controlregs::cr3_write(new_table.p4_frame.start_address() as u64);
|
||||||
|
}
|
||||||
|
old_table
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct InactivePageTable {
|
pub struct InactivePageTable {
|
||||||
@@ -205,4 +217,7 @@ pub fn remap_the_kernel<A>(allocator: &mut A, boot_info: &BootInformation)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let old_table = active_table.switch(new_table);
|
||||||
|
println!("NEW TABLE!!!");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user