mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 03:03:16 +00:00
- Call KiDispatchInterrupt through an interrupt gate instead of directly.
svn path=/trunk/; revision=23657
This commit is contained in:
parent
bbd5e3237f
commit
44804d565e
2 changed files with 5 additions and 3 deletions
|
@ -626,14 +626,15 @@ _HalpEndSoftwareInterrupt@4:
|
||||||
SoftwareInt:
|
SoftwareInt:
|
||||||
/* Check if there are pending software interrupts */
|
/* Check if there are pending software interrupts */
|
||||||
mov [fs:KPCR_IRQL], cl
|
mov [fs:KPCR_IRQL], cl
|
||||||
|
#if 0
|
||||||
mov eax, [fs:KPCR_IDR]
|
mov eax, [fs:KPCR_IDR]
|
||||||
mov al, SoftIntByteTable[eax]
|
mov al, SoftIntByteTable[eax]
|
||||||
cmp al, cl
|
cmp al, cl
|
||||||
ja DoCall2
|
ja DoCall2
|
||||||
|
#endif
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
DoCall2:
|
DoCall2:
|
||||||
|
|
||||||
/* There are pending softwate interrupts, call their handlers */
|
/* There are pending softwate interrupts, call their handlers */
|
||||||
add esp, 8
|
add esp, 8
|
||||||
jmp SoftIntHandlerTable2[eax*4]
|
jmp SoftIntHandlerTable2[eax*4]
|
||||||
|
|
|
@ -23,6 +23,8 @@ UCHAR Table[8] =
|
||||||
2, 2, 2, 2
|
2, 2, 2, 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
VOID HalpDispatchInterrupt(VOID);
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
extern ULONG KiI8259MaskTable[];
|
extern ULONG KiI8259MaskTable[];
|
||||||
|
@ -55,8 +57,7 @@ HalpLowerIrql(KIRQL NewIrql)
|
||||||
{
|
{
|
||||||
if (Table[KeGetPcr()->IRR] == DISPATCH_LEVEL)
|
if (Table[KeGetPcr()->IRR] == DISPATCH_LEVEL)
|
||||||
{
|
{
|
||||||
KeGetPcr()->IRR &= ~4;
|
HalpDispatchInterrupt();
|
||||||
KiDispatchInterrupt();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
KeGetPcr()->Irql = APC_LEVEL;
|
KeGetPcr()->Irql = APC_LEVEL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue