mirror of
https://github.com/reactos/reactos.git
synced 2025-02-28 19:32:59 +00:00
[NTOS][HAL:APIC] Call HalBegin/EndSystemInterrupt from clock handler
This commit is contained in:
parent
1f647e4479
commit
5ebd478325
5 changed files with 13 additions and 3 deletions
|
@ -743,7 +743,6 @@ HalDisableSystemInterrupt(
|
||||||
IOApicWrite(IOAPIC_REDTBL + 2 * Index, ReDirReg.Long0);
|
IOApicWrite(IOAPIC_REDTBL + 2 * Index, ReDirReg.Long0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _M_AMD64
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NTAPI
|
NTAPI
|
||||||
HalBeginSystemInterrupt(
|
HalBeginSystemInterrupt(
|
||||||
|
@ -826,6 +825,7 @@ HalEndSystemInterrupt(
|
||||||
|
|
||||||
/* IRQL MANAGEMENT ************************************************************/
|
/* IRQL MANAGEMENT ************************************************************/
|
||||||
|
|
||||||
|
#ifndef _M_AMD64
|
||||||
KIRQL
|
KIRQL
|
||||||
NTAPI
|
NTAPI
|
||||||
KeGetCurrentIrql(VOID)
|
KeGetCurrentIrql(VOID)
|
||||||
|
|
|
@ -191,6 +191,9 @@ HalpClockInterruptHandler(IN PKTRAP_FRAME TrapFrame)
|
||||||
|
|
||||||
/* Update the system time -- on x86 the kernel will exit this trap */
|
/* Update the system time -- on x86 the kernel will exit this trap */
|
||||||
KeUpdateSystemTime(TrapFrame, LastIncrement, Irql);
|
KeUpdateSystemTime(TrapFrame, LastIncrement, Irql);
|
||||||
|
|
||||||
|
/* End the interrupt */
|
||||||
|
KiEndInterrupt(Irql, TrapFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -586,7 +586,6 @@ HalInitializeBios(
|
||||||
#ifdef _M_AMD64
|
#ifdef _M_AMD64
|
||||||
#define KfLowerIrql KeLowerIrql
|
#define KfLowerIrql KeLowerIrql
|
||||||
#define KiEnterInterruptTrap(TrapFrame) /* We do all neccessary in asm code */
|
#define KiEnterInterruptTrap(TrapFrame) /* We do all neccessary in asm code */
|
||||||
#define HalBeginSystemInterrupt(Irql, Vector, OldIrql) ((*(OldIrql) = PASSIVE_LEVEL), TRUE)
|
|
||||||
#endif // _M_AMD64
|
#endif // _M_AMD64
|
||||||
|
|
||||||
extern BOOLEAN HalpNMIInProgress;
|
extern BOOLEAN HalpNMIInProgress;
|
||||||
|
|
|
@ -356,7 +356,10 @@ KiEndInterrupt(IN KIRQL Irql,
|
||||||
{
|
{
|
||||||
/* Make sure this is from the clock handler */
|
/* Make sure this is from the clock handler */
|
||||||
ASSERT(TrapFrame->ErrorCode == 0xc10c4);
|
ASSERT(TrapFrame->ErrorCode == 0xc10c4);
|
||||||
//KeLowerIrql(Irql);
|
|
||||||
|
/* Disable interrupts and end the interrupt */
|
||||||
|
_disable();
|
||||||
|
HalEndSystemInterrupt(Irql, TrapFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
|
|
|
@ -77,7 +77,10 @@ KeUpdateSystemTime(IN PKTRAP_FRAME TrapFrame,
|
||||||
|
|
||||||
/* Increase interrupt count and end the interrupt */
|
/* Increase interrupt count and end the interrupt */
|
||||||
Prcb->InterruptCount++;
|
Prcb->InterruptCount++;
|
||||||
|
|
||||||
|
#ifdef _M_IX86 // x86 optimization
|
||||||
KiEndInterrupt(Irql, TrapFrame);
|
KiEndInterrupt(Irql, TrapFrame);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Note: non-x86 return back to the caller! */
|
/* Note: non-x86 return back to the caller! */
|
||||||
return;
|
return;
|
||||||
|
@ -131,8 +134,10 @@ KeUpdateSystemTime(IN PKTRAP_FRAME TrapFrame,
|
||||||
Prcb->InterruptCount++;
|
Prcb->InterruptCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _M_IX86 // x86 optimization
|
||||||
/* Disable interrupts and end the interrupt */
|
/* Disable interrupts and end the interrupt */
|
||||||
KiEndInterrupt(Irql, TrapFrame);
|
KiEndInterrupt(Irql, TrapFrame);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
Loading…
Reference in a new issue