gdt support in rust

This commit is contained in:
Jack Halford 2018-04-12 17:59:14 +02:00
parent 8a3e3a2324
commit f138d77e4d
4 changed files with 20 additions and 29 deletions

View file

@ -10,7 +10,7 @@ static TSS: Once<tss::TaskStateSegment> = Once::new();
pub fn init() {
let tss = tss::TaskStateSegment::new();
let tss = TSS.call_once(|| {
let mut tss = tss::TaskStateSegment::new();
let tss = tss::TaskStateSegment::new();
tss
});
@ -21,14 +21,25 @@ pub fn init() {
let mut gdt = gdt::Gdt::new();
code_selector = gdt.add_entry(gdt::Descriptor::kernel_code_segment());
tss_selector = gdt.add_entry(gdt::Descriptor::tss_segment(&tss));
println!("cs: {:?}", code_selector);
gdt
});
// gdt.load();
// unsafe {
// // reload code segment register
// set_cs(code_selector);
// // load TSS
// load_tss(tss_selector);
// }
println!("0 upper: {:#x}", gdt.table[0] as u32);
println!("0 lower: {:#x}", gdt.table[0] >> 32 as u32);
println!("1 upper: {:#x}", gdt.table[1] as u32);
println!("1 lower: {:#x}", gdt.table[1] >> 32 as u32);
println!("2 upper: {:#x}", gdt.table[2] as u32);
println!("2 lower: {:#x}", gdt.table[2] >> 32 as u32);
println!("3 upper: {:#x}", gdt.table[3] as u32);
println!("3 lower: {:#x}", gdt.table[3] >> 32 as u32);
flush!();
gdt.load();
unsafe {
// reload code segment register
set_cs(code_selector);
// load TSS
load_tss(tss_selector);
}
}

View file

@ -101,12 +101,6 @@ impl InactivePageTable {
temporary_page: &mut TemporaryPage,
) -> InactivePageTable {
{
println!("mapping temp page:");
println!("frame: {:?}", frame);
flush!();
// unsafe {
// asm!("hlt");
// }
let table = temporary_page.map_table_frame(frame.clone(), active_table);
table.zero();

View file

@ -46,20 +46,6 @@ pub fn init(boot_info: &multiboot2::BootInformation) {
memory_map_tag.memory_areas(),
);
println!("memory areas from the f allocator:");
for area in memory_map_tag.memory_areas() {
println!(
" start: {:#x}, end: {:#x} length: {:#x}",
area.start_address(),
area.end_address(),
area.size()
);
}
flush!();
// unsafe {
// asm!("hlt");
// }
let frame_allocator = RecycleAllocator::new(bump_allocator);
// let stack_allocator = {

@ -1 +1 @@
Subproject commit ae98bfcd4f30217a4bfe944549d222bb07f81deb
Subproject commit f5e4cb879953ebbeba28a1eaa28bf531424e6824