Refactor spurious interrupt handling to use assembly routine
This commit is contained in:
@@ -117,32 +117,6 @@ HL::Pic::GetCpuApicId(VOID)
|
||||
return (ApicMode == APIC_MODE_COMPAT) ? ((ApicId & 0xFFFFFFFF) >> APIC_XAPIC_LDR_SHIFT) : ApicId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows an APIC spurious interrupts to end up.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
HL::Pic::HandleApicSpuriousService(VOID)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows a PIC spurious interrupts to end up.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
HL::Pic::HandlePicSpuriousService(VOID)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the APIC interrupt controller.
|
||||
*
|
||||
@@ -249,8 +223,7 @@ HL::Pic::InitializeApic(VOID)
|
||||
WriteApicRegister(APIC_LINT1, LvtRegister.Long);
|
||||
|
||||
/* Register interrupt handlers */
|
||||
HL::Irq::SetInterruptHandler(APIC_VECTOR_SPURIOUS, (PVOID)HandleApicSpuriousService);
|
||||
HL::Irq::SetInterruptHandler(PIC1_VECTOR_SPURIOUS, (PVOID)HandlePicSpuriousService);
|
||||
HL::Irq::SetInterruptHandler(APIC_VECTOR_SPURIOUS, (PVOID)ArHandleSpuriousInterrupt);
|
||||
|
||||
/* Clear any pre-existing errors */
|
||||
WriteApicRegister(APIC_ESR, 0);
|
||||
@@ -332,6 +305,9 @@ HL::Pic::InitializeLegacyPic(VOID)
|
||||
|
||||
/* Mask all interrupts on PIC2 port */
|
||||
HL::IoPort::WritePort8(PIC2_DATA_PORT, 0xFF);
|
||||
|
||||
/* Register interrupt handler */
|
||||
HL::Irq::SetInterruptHandler(PIC1_VECTOR_SPURIOUS, (PVOID)ArHandleSpuriousInterrupt);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,8 +34,6 @@ namespace HL
|
||||
private:
|
||||
STATIC XTAPI BOOLEAN CheckApicSupport(VOID);
|
||||
STATIC XTAPI BOOLEAN CheckX2ApicSupport(VOID);
|
||||
STATIC XTCDECL VOID HandleApicSpuriousService(VOID);
|
||||
STATIC XTCDECL VOID HandlePicSpuriousService(VOID);
|
||||
STATIC XTAPI VOID InitializeApic(VOID);
|
||||
STATIC XTAPI VOID InitializeLegacyPic(VOID);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user