move gdt, use fixed addr

refactor
pantonshire 5 months ago
parent f0289cd753
commit da6f981a6a

@ -9,7 +9,7 @@
%define S2_DATA S2_LOAD_ADDR %define S2_DATA S2_LOAD_ADDR
%define S2_ENTRYPOINT (S2_DATA_ADDR + S2_DATA_LEN) %define S2_ENTRYPOINT (S2_DATA_ADDR + S2_DATA_LEN)
%define GDT_ADDR 0xc000 %define GDT_FLAT_ADDR 0xe000
%define S3_LOAD_ADDR 0x10000 %define S3_LOAD_ADDR 0x10000
; %define MEMMAP 0x6a00 ; %define MEMMAP 0x6a00

@ -39,7 +39,7 @@ s2_main:
; Copy the GDT ; Copy the GDT
mov cx, GDT_FLAT_LEN mov cx, GDT_FLAT_LEN
mov si, gdt_flat mov si, gdt_flat
mov di, GDT_ADDR mov di, GDT_FLAT_ADDR
rep movsb rep movsb
; Ensure interrupts are definitely disabled. ; Ensure interrupts are definitely disabled.
@ -86,9 +86,7 @@ section .s3_data
gdt_flat_slice: gdt_flat_slice:
dw GDT_FLAT_LEN dw GDT_FLAT_LEN
dd gdt_flat dd GDT_FLAT_ADDR
global gdt_flat_slice
; Segment descriptor layout ; Segment descriptor layout
; | Range (bits) | Field | ; | Range (bits) | Field |

@ -35,7 +35,7 @@ pub extern "C" fn _start() -> ! {
com::try_com1_init(); com::try_com1_init();
} }
let gdt_ptr = ptr::with_exposed_provenance::<u64>(0xc000); let gdt_ptr = ptr::with_exposed_provenance::<u64>(0xe000);
let gdt_slice = unsafe { slice::from_raw_parts(gdt_ptr, 4) }; let gdt_slice = unsafe { slice::from_raw_parts(gdt_ptr, 4) };
vga_println!("hello from rust :)"); vga_println!("hello from rust :)");

Loading…
Cancel
Save