Take CPU number from processor block
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 50s
Builds / ExectOS (i686) (push) Successful in 48s

This commit is contained in:
Rafal Kupiec 2024-05-08 21:59:18 +02:00
parent 38b0b2ac7d
commit c34b6ff6c1
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
7 changed files with 18 additions and 15 deletions

View File

@ -21,7 +21,7 @@
*/ */
XTAPI XTAPI
VOID VOID
HlInitializeProcessor(IN ULONG CpuNumber) HlInitializeProcessor()
{ {
PKPROCESSOR_BLOCK ProcessorBlock; PKPROCESSOR_BLOCK ProcessorBlock;
KAFFINITY Affinity; KAFFINITY Affinity;
@ -31,20 +31,19 @@ HlInitializeProcessor(IN ULONG CpuNumber)
/* Set initial stall factor, CPU number and mask interrupts */ /* Set initial stall factor, CPU number and mask interrupts */
ProcessorBlock->StallScaleFactor = INITIAL_STALL_FACTOR; ProcessorBlock->StallScaleFactor = INITIAL_STALL_FACTOR;
ProcessorBlock->CpuNumber = CpuNumber;
ProcessorBlock->Idr = 0xFFFFFFFF; ProcessorBlock->Idr = 0xFFFFFFFF;
/* Record processor block in the processors table */ /* Record processor block in the processors table */
HlpProcessorsIdentity[CpuNumber].ProcessorBlock = ProcessorBlock; HlpProcessorsIdentity[ProcessorBlock->CpuNumber].ProcessorBlock = ProcessorBlock;
/* Set processor affinity */ /* Set processor affinity */
Affinity = (KAFFINITY) 1 << CpuNumber; Affinity = (KAFFINITY) 1 << ProcessorBlock->CpuNumber;
/* Apply affinity to a set of processors */ /* Apply affinity to a set of processors */
HlpActiveProcessors |= Affinity; HlpActiveProcessors |= Affinity;
/* Initialize APIC for this processor */ /* Initialize APIC for this processor */
HlpInitializePic(CpuNumber); HlpInitializePic();
/* Set the APIC running level */ /* Set the APIC running level */
HlSetRunLevel(KeGetCurrentProcessorBlock()->RunLevel); HlSetRunLevel(KeGetCurrentProcessorBlock()->RunLevel);

View File

@ -187,11 +187,12 @@ HlpHandlePicSpuriousService(VOID)
*/ */
XTAPI XTAPI
VOID VOID
HlpInitializeApic(IN ULONG CpuNumber) HlpInitializeApic()
{ {
APIC_BASE_REGISTER BaseRegister; APIC_BASE_REGISTER BaseRegister;
APIC_LVT_REGISTER LvtRegister; APIC_LVT_REGISTER LvtRegister;
APIC_SPURIOUS_REGISTER SpuriousRegister; APIC_SPURIOUS_REGISTER SpuriousRegister;
ULONG CpuNumber;
/* Check if this is an x2APIC compatible machine */ /* Check if this is an x2APIC compatible machine */
if(HlpCheckX2ApicSupport()) if(HlpCheckX2ApicSupport())
@ -205,6 +206,9 @@ HlpInitializeApic(IN ULONG CpuNumber)
HlpApicMode = APIC_MODE_COMPAT; HlpApicMode = APIC_MODE_COMPAT;
} }
/* Get processor number */
CpuNumber = KeGetCurrentProcessorNumber();
/* Enable the APIC */ /* Enable the APIC */
BaseRegister.LongLong = ArReadModelSpecificRegister(APIC_LAPIC_MSR_BASE); BaseRegister.LongLong = ArReadModelSpecificRegister(APIC_LAPIC_MSR_BASE);
BaseRegister.Enable = 1; BaseRegister.Enable = 1;
@ -281,9 +285,9 @@ HlpInitializeApic(IN ULONG CpuNumber)
*/ */
XTAPI XTAPI
VOID VOID
HlpInitializePic(IN ULONG CpuNumber) HlpInitializePic()
{ {
/* Disable legacy PIC and initialize APIC */ /* Disable legacy PIC and initialize APIC */
HlDisableLegacyPic(); HlDisableLegacyPic();
HlpInitializeApic(CpuNumber); HlpInitializeApic();
} }

View File

@ -48,11 +48,11 @@ HlpHandlePicSpuriousService(VOID);
XTAPI XTAPI
VOID VOID
HlpInitializeApic(IN ULONG CpuNumber); HlpInitializeApic();
XTAPI XTAPI
VOID VOID
HlpInitializePic(IN ULONG CpuNumber); HlpInitializePic();
XTFASTCALL XTFASTCALL
KRUNLEVEL KRUNLEVEL

View File

@ -68,6 +68,6 @@ HlSetRunLevel(IN KRUNLEVEL RunLevel);
XTAPI XTAPI
VOID VOID
HlInitializeProcessor(IN ULONG CpuNumber); HlInitializeProcessor();
#endif /* __XTOSKRNL_HLI_H */ #endif /* __XTOSKRNL_HLI_H */

View File

@ -48,11 +48,11 @@ HlpHandlePicSpuriousService(VOID);
XTAPI XTAPI
VOID VOID
HlpInitializeApic(IN ULONG CpuNumber); HlpInitializeApic();
XTAPI XTAPI
VOID VOID
HlpInitializePic(IN ULONG CpuNumber); HlpInitializePic();
XTFASTCALL XTFASTCALL
KRUNLEVEL KRUNLEVEL

View File

@ -77,7 +77,7 @@ KepInitializeMachine(VOID)
HlInitializeFrameBuffer(); HlInitializeFrameBuffer();
/* Initialize processor */ /* Initialize processor */
HlInitializeProcessor(0); HlInitializeProcessor();
} }
/** /**

View File

@ -77,7 +77,7 @@ KepInitializeMachine(VOID)
HlInitializeFrameBuffer(); HlInitializeFrameBuffer();
/* Initialize processor */ /* Initialize processor */
HlInitializeProcessor(0); HlInitializeProcessor();
} }
/** /**