Formatting
All checks were successful
Continuous Integration / Check (push) Successful in 43s
Continuous Integration / Clippy (push) Successful in 40s

This commit is contained in:
August 2026-06-23 15:21:52 +00:00
parent 629ba0f6ce
commit cc2d5cfea9
Signed by: shibedrill
SSH Key Fingerprint: SHA256:M0m3JW1s38BgO2t0fG146Yxd9OJ2IOqkvCAsuRHQ6Pw
5 changed files with 47 additions and 25 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use nix

View File

@ -1,4 +1,7 @@
{ {
"rust-analyzer.cargo.target": "x86_64-unknown-none", "rust-analyzer.cargo.target": "x86_64-unknown-none",
"rust-analyzer.check.allTargets": false, "rust-analyzer.check.allTargets": false,
"nixEnvPicker.terminalActivateCommand": "nix-shell",
"nixEnvSelector.nixFile": "${workspaceFolder}/shell.nix",
"nixEnvSelector.useFlakes": false,
} }

View File

@ -11,10 +11,12 @@ pub fn nop() {
pub fn long_mode() -> bool { pub fn long_mode() -> bool {
let mut output: u32; let mut output: u32;
unsafe { asm!( unsafe {
asm!(
"mov eax, 0x80000001", "mov eax, 0x80000001",
"cpuid", "cpuid",
out("edx") output, out("edx") output,
) } )
}
output.bit(29) output.bit(29)
} }

View File

@ -8,8 +8,8 @@ use intbits::Bits;
use x86_64::structures::gdt; use x86_64::structures::gdt;
use x86_64::structures::gdt::*; use x86_64::structures::gdt::*;
use crate::log_info;
use crate::log::*; use crate::log::*;
use crate::log_info;
use crate::memory::alloc::format; use crate::memory::alloc::format;
#[allow(dead_code)] #[allow(dead_code)]
@ -74,7 +74,6 @@ pub fn dump_gdt() {
entry.access() entry.access()
); );
} }
} }
#[derive(Debug)] #[derive(Debug)]
@ -107,8 +106,20 @@ impl TryFrom<&gdt::Entry> for SegmentType {
0b0001 => Ok(SegmentType::Tss16Avail), 0b0001 => Ok(SegmentType::Tss16Avail),
0b0010 => Ok(SegmentType::Ldt), 0b0010 => Ok(SegmentType::Ldt),
0b0011 => Ok(SegmentType::Tss16Busy), 0b0011 => Ok(SegmentType::Tss16Busy),
0b1001 => {if flags.contains(gdt::DescriptorFlags::LONG_MODE) { Ok(SegmentType::Tss64Avail) } else { Ok(SegmentType::Tss32Avail) }}, 0b1001 => {
0b1011 => {if flags.contains(gdt::DescriptorFlags::LONG_MODE) { Ok(SegmentType::Tss64Busy) } else { Ok(SegmentType::Tss32Busy) }}, if flags.contains(gdt::DescriptorFlags::LONG_MODE) {
Ok(SegmentType::Tss64Avail)
} else {
Ok(SegmentType::Tss32Avail)
}
}
0b1011 => {
if flags.contains(gdt::DescriptorFlags::LONG_MODE) {
Ok(SegmentType::Tss64Busy)
} else {
Ok(SegmentType::Tss32Busy)
}
}
_ => Err(()), _ => Err(()),
} }
} }

View File

@ -29,9 +29,14 @@ use limine::firmware_type::FirmwareType;
use spin::mutex::Mutex; use spin::mutex::Mutex;
use crate::{ use crate::{
arch::{asm, x86_64::{ arch::{
cpuid::{CPUID, virt_supported}, gdt::dump_gdt, asm,
}}, memory::HHDM_RESPONSE, x86_64::{
cpuid::{CPUID, virt_supported},
gdt::dump_gdt,
},
},
memory::HHDM_RESPONSE,
}; };
lazy_static! { lazy_static! {