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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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