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.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 {
let mut output: u32;
unsafe { asm!(
unsafe {
asm!(
"mov eax, 0x80000001",
"cpuid",
out("edx") output,
) }
)
}
output.bit(29)
}

View File

@ -8,8 +8,8 @@ use intbits::Bits;
use x86_64::structures::gdt;
use x86_64::structures::gdt::*;
use crate::log_info;
use crate::log::*;
use crate::log_info;
use crate::memory::alloc::format;
#[allow(dead_code)]
@ -74,7 +74,6 @@ pub fn dump_gdt() {
entry.access()
);
}
}
#[derive(Debug)]
@ -107,8 +106,20 @@ impl TryFrom<&gdt::Entry> for SegmentType {
0b0001 => Ok(SegmentType::Tss16Avail),
0b0010 => Ok(SegmentType::Ldt),
0b0011 => Ok(SegmentType::Tss16Busy),
0b1001 => {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) }},
0b1001 => {
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(()),
}
}

View File

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