From f84fc02eaf2a2f77f7e0548b504cb08c55943e19 Mon Sep 17 00:00:00 2001 From: ParrotXray Date: Wed, 7 May 2025 01:42:54 +0800 Subject: [PATCH] fix: Fixed a small problem --- src/kernel/asm/x86/gdt.rs | 6 +++--- src/kernel/kernel.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/kernel/asm/x86/gdt.rs b/src/kernel/asm/x86/gdt.rs index dd7d045..7e46db4 100644 --- a/src/kernel/asm/x86/gdt.rs +++ b/src/kernel/asm/x86/gdt.rs @@ -24,9 +24,9 @@ pub const fn seg_lim_l(x: u64) -> u64 { x & 0x0ffff } #[allow(dead_code)] pub const fn seg_lim_h(x: u64) -> u64 { x & 0xf0000 } #[allow(dead_code)] -pub const fn seg_base_l(x: u64) -> u64 { (x & 0x0000ffff) << 16 } +pub const fn seg_base_l(x: u64) -> u64 { ((x & 0x0000ffff) << 16) } #[allow(dead_code)] -pub const fn seg_base_m(x: u64) -> u64 { (x & 0x00ff0000) >> 16 } +pub const fn seg_base_m(x: u64) -> u64 { ((x & 0x00ff0000) >> 16) } #[allow(dead_code)] pub const fn seg_base_h(x: u64) -> u64 { x & 0xff000000 } @@ -98,7 +98,7 @@ pub static mut _GDT_LIMIT: u16 = (mem::size_of::<[u64; GDT_ENTRY]>() - 1) as u16 #[no_mangle] pub fn _set_gdt_entry(index: usize, base: u64, limit: u64, flags: u64) { unsafe { - _GDT[index] = seg_base_h(base) | flags | seg_lim_h(limit) | seg_base_h(base); + _GDT[index] = seg_base_h(base) | flags | seg_lim_h(limit) | seg_base_m(base); _GDT[index] <<= 32; _GDT[index] |= seg_base_l(base) | seg_lim_l(limit); } diff --git a/src/kernel/kernel.rs b/src/kernel/kernel.rs index 322e283..3618820 100644 --- a/src/kernel/kernel.rs +++ b/src/kernel/kernel.rs @@ -41,7 +41,7 @@ pub extern "C" fn _kernel_main() { println!("10: {}, 16: {:x}", value, value); unsafe { - let x = gdt::_GDT_LIMIT; + let x = gdt::_GDT_LIMIT; println!("GDT Limit: {}", x); }