diff --git a/xtoskrnl/hl/x86/cpu.c b/xtoskrnl/hl/x86/cpu.c index ba1219f..146d359 100644 --- a/xtoskrnl/hl/x86/cpu.c +++ b/xtoskrnl/hl/x86/cpu.c @@ -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); diff --git a/xtoskrnl/hl/x86/pic.c b/xtoskrnl/hl/x86/pic.c index 56cf77e..7283ccc 100644 --- a/xtoskrnl/hl/x86/pic.c +++ b/xtoskrnl/hl/x86/pic.c @@ -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(); } diff --git a/xtoskrnl/includes/amd64/hli.h b/xtoskrnl/includes/amd64/hli.h index 653f6a1..cddcf02 100644 --- a/xtoskrnl/includes/amd64/hli.h +++ b/xtoskrnl/includes/amd64/hli.h @@ -48,11 +48,11 @@ HlpHandlePicSpuriousService(VOID); XTAPI VOID -HlpInitializeApic(IN ULONG CpuNumber); +HlpInitializeApic(); XTAPI VOID -HlpInitializePic(IN ULONG CpuNumber); +HlpInitializePic(); XTFASTCALL KRUNLEVEL diff --git a/xtoskrnl/includes/hli.h b/xtoskrnl/includes/hli.h index e9db2d2..d62d75d 100644 --- a/xtoskrnl/includes/hli.h +++ b/xtoskrnl/includes/hli.h @@ -68,6 +68,6 @@ HlSetRunLevel(IN KRUNLEVEL RunLevel); XTAPI VOID -HlInitializeProcessor(IN ULONG CpuNumber); +HlInitializeProcessor(); #endif /* __XTOSKRNL_HLI_H */ diff --git a/xtoskrnl/includes/i686/hli.h b/xtoskrnl/includes/i686/hli.h index b7d5d2a..62f5dbd 100644 --- a/xtoskrnl/includes/i686/hli.h +++ b/xtoskrnl/includes/i686/hli.h @@ -48,11 +48,11 @@ HlpHandlePicSpuriousService(VOID); XTAPI VOID -HlpInitializeApic(IN ULONG CpuNumber); +HlpInitializeApic(); XTAPI VOID -HlpInitializePic(IN ULONG CpuNumber); +HlpInitializePic(); XTFASTCALL KRUNLEVEL diff --git a/xtoskrnl/ke/amd64/krnlinit.c b/xtoskrnl/ke/amd64/krnlinit.c index 57a6bdd..c2b7cc9 100644 --- a/xtoskrnl/ke/amd64/krnlinit.c +++ b/xtoskrnl/ke/amd64/krnlinit.c @@ -77,7 +77,7 @@ KepInitializeMachine(VOID) HlInitializeFrameBuffer(); /* Initialize processor */ - HlInitializeProcessor(0); + HlInitializeProcessor(); } /** diff --git a/xtoskrnl/ke/i686/krnlinit.c b/xtoskrnl/ke/i686/krnlinit.c index 485613d..1a5ca5f 100644 --- a/xtoskrnl/ke/i686/krnlinit.c +++ b/xtoskrnl/ke/i686/krnlinit.c @@ -77,7 +77,7 @@ KepInitializeMachine(VOID) HlInitializeFrameBuffer(); /* Initialize processor */ - HlInitializeProcessor(0); + HlInitializeProcessor(); } /**