From da6f981a6a1a78b0f6c2093b994109fac1424f97 Mon Sep 17 00:00:00 2001 From: pantonshire Date: Sat, 26 Jul 2025 18:01:59 +0100 Subject: [PATCH] move gdt, use fixed addr --- include/layout.s | 2 +- stage_2/main.s | 6 ++---- stage_3/src/main.rs | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/layout.s b/include/layout.s index b4c04ed..21666c4 100644 --- a/include/layout.s +++ b/include/layout.s @@ -9,7 +9,7 @@ %define S2_DATA S2_LOAD_ADDR %define S2_ENTRYPOINT (S2_DATA_ADDR + S2_DATA_LEN) -%define GDT_ADDR 0xc000 +%define GDT_FLAT_ADDR 0xe000 %define S3_LOAD_ADDR 0x10000 ; %define MEMMAP 0x6a00 diff --git a/stage_2/main.s b/stage_2/main.s index 2341436..f4e490f 100644 --- a/stage_2/main.s +++ b/stage_2/main.s @@ -39,7 +39,7 @@ s2_main: ; Copy the GDT mov cx, GDT_FLAT_LEN mov si, gdt_flat - mov di, GDT_ADDR + mov di, GDT_FLAT_ADDR rep movsb ; Ensure interrupts are definitely disabled. @@ -86,9 +86,7 @@ section .s3_data gdt_flat_slice: dw GDT_FLAT_LEN - dd gdt_flat - -global gdt_flat_slice + dd GDT_FLAT_ADDR ; Segment descriptor layout ; | Range (bits) | Field | diff --git a/stage_3/src/main.rs b/stage_3/src/main.rs index 15569fe..98f3ed0 100644 --- a/stage_3/src/main.rs +++ b/stage_3/src/main.rs @@ -35,7 +35,7 @@ pub extern "C" fn _start() -> ! { com::try_com1_init(); } - let gdt_ptr = ptr::with_exposed_provenance::(0xc000); + let gdt_ptr = ptr::with_exposed_provenance::(0xe000); let gdt_slice = unsafe { slice::from_raw_parts(gdt_ptr, 4) }; vga_println!("hello from rust :)");