Take CPU number from processor block
This commit is contained in:
parent
38b0b2ac7d
commit
c34b6ff6c1
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -77,7 +77,7 @@ KepInitializeMachine(VOID)
|
|||||||
HlInitializeFrameBuffer();
|
HlInitializeFrameBuffer();
|
||||||
|
|
||||||
/* Initialize processor */
|
/* Initialize processor */
|
||||||
HlInitializeProcessor(0);
|
HlInitializeProcessor();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -77,7 +77,7 @@ KepInitializeMachine(VOID)
|
|||||||
HlInitializeFrameBuffer();
|
HlInitializeFrameBuffer();
|
||||||
|
|
||||||
/* Initialize processor */
|
/* Initialize processor */
|
||||||
HlInitializeProcessor(0);
|
HlInitializeProcessor();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user