Replace CPUID queries with cached PRCB feature bits
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in -59m0s
Builds / ExectOS (amd64, debug) (push) Successful in -58m55s
Builds / ExectOS (i686, release) (push) Successful in 1m39s
Builds / ExectOS (amd64, release) (push) Successful in 1m44s

This commit is contained in:
2026-05-15 09:13:56 +02:00
parent 14cbd63b01
commit efff262fb5

View File

@@ -78,28 +78,13 @@ XTAPI
BOOLEAN BOOLEAN
HL::Pic::CheckApicSupport(VOID) HL::Pic::CheckApicSupport(VOID)
{ {
CPUID_REGISTERS CpuRegisters; PKPROCESSOR_CONTROL_BLOCK Prcb;
/* Prepare CPUID registers */ /* Get current processor control block */
CpuRegisters.Leaf = CPUID_GET_STANDARD1_FEATURES; Prcb = KE::Processor::GetCurrentProcessorControlBlock();
CpuRegisters.SubLeaf = 0;
CpuRegisters.Eax = 0;
CpuRegisters.Ebx = 0;
CpuRegisters.Ecx = 0;
CpuRegisters.Edx = 0;
/* Get CPUID */ /* Return APIC status */
AR::CpuFunc::CpuId(&CpuRegisters); return (Prcb->CpuId.FeatureBits & KCF_APIC) ? TRUE : FALSE;
/* Check APIC status from the CPUID results */
if(!(CpuRegisters.Edx & CPUID_FEATURES_EDX_APIC))
{
/* APIC is not supported */
return FALSE;
}
/* APIC is supported */
return TRUE;
} }
/** /**
@@ -116,28 +101,13 @@ XTAPI
BOOLEAN BOOLEAN
HL::Pic::CheckX2ApicSupport(VOID) HL::Pic::CheckX2ApicSupport(VOID)
{ {
CPUID_REGISTERS CpuRegisters; PKPROCESSOR_CONTROL_BLOCK Prcb;
/* Prepare CPUID registers */ /* Get current processor control block */
CpuRegisters.Leaf = CPUID_GET_STANDARD1_FEATURES; Prcb = KE::Processor::GetCurrentProcessorControlBlock();
CpuRegisters.SubLeaf = 0;
CpuRegisters.Eax = 0;
CpuRegisters.Ebx = 0;
CpuRegisters.Ecx = 0;
CpuRegisters.Edx = 0;
/* Get CPUID */ /* Return x2APIC status */
AR::CpuFunc::CpuId(&CpuRegisters); return (Prcb->CpuId.FeatureBits & KCF_X2APIC) ? TRUE : FALSE;
/* Check x2APIC status from the CPUID results */
if(!(CpuRegisters.Ecx & CPUID_FEATURES_ECX_X2APIC))
{
/* x2APIC is not supported */
return FALSE;
}
/* x2APIC is supported */
return TRUE;
} }
/** /**