prettier asm

This commit is contained in:
Jack Halford 2018-04-12 18:06:50 +02:00
parent fd0915048d
commit ffcb85dd5b
3 changed files with 18 additions and 16 deletions

View file

@ -25,6 +25,8 @@ check_multiboot:
mov al, "0"
jmp error
; minimal page tables (first 8MB identity mapped)
; core page tables will be loaded in rust
set_up_page_tables:
; map P2 table recursively
mov eax, p2_table
@ -32,12 +34,13 @@ set_up_page_tables:
mov [p2_table + 1023 * 4], eax
; identity map first P2 entry to a huge page
mov eax, 0b10000011 ; huge + present + writable
mov [p2_table], eax ; map first entry
mov eax, 0x0 ; 0MB -> 4MB (first page)
or eax, 0b10000011 ; huge + present + writable
mov [p2_table], eax
mov eax, 0b10000011 ; huge + present + writable
or eax, 0x400000 ; 4MB
mov [p2_table + 4], eax ; map second entry
mov eax, 0x400000 ; 4MB -> 8Mb (second page)
or eax, 0b10000011 ; huge + present + writable
mov [p2_table + 4], eax
mov eax, p2_table
mov cr3, eax
@ -61,6 +64,8 @@ stack_bottom:
resb 4096 * 4
stack_top:
; minimal boot gdt (cs & ds)
; core gdt will be loaded in rust
section .gdt
GDTR:
; http://tuttlem.github.io/2014/07/11/a-gdt-primer.html

View file

@ -21,18 +21,17 @@ 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
});
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);
println!("gdt 0 upper: {:#x}", gdt.table[0] as u32);
println!("gdt 0 lower: {:#x}", gdt.table[0] >> 32 as u32);
println!("gdt 1 upper: {:#x}", gdt.table[1] as u32);
println!("gdt 1 lower: {:#x}", gdt.table[1] >> 32 as u32);
println!("gdt 2 upper: {:#x}", gdt.table[2] as u32);
println!("gdt 2 lower: {:#x}", gdt.table[2] >> 32 as u32);
println!("gdt 3 upper: {:#x}", gdt.table[3] as u32);
println!("gdt 3 lower: {:#x}", gdt.table[3] >> 32 as u32);
flush!();
gdt.load();

View file

@ -12,8 +12,6 @@ x86_start:
mov gs, ax
call x86_rust_start
cli ; clear interrupt
HALT:
hlt
jmp HALT