mirror of
https://github.com/reactos/reactos.git
synced 2025-07-13 09:44:14 +00:00
- Add the code necessary in the C version of KeLowerIRql to properly mask the PIC, and enable #ifed code in ASM KeRaiseIrql to mask the PIC, since it now works.
svn path=/trunk/; revision=23654
This commit is contained in:
parent
fcdd76f501
commit
132b7c834f
2 changed files with 10 additions and 2 deletions
|
@ -464,14 +464,12 @@ _@KfRaiseIrql@4:
|
||||||
/* Set the new IRQL */
|
/* Set the new IRQL */
|
||||||
mov [fs:KPCR_IRQL], cl
|
mov [fs:KPCR_IRQL], cl
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Mask the interrupts in the PIC */
|
/* Mask the interrupts in the PIC */
|
||||||
mov eax, _KiI8259MaskTable[ecx*4]
|
mov eax, _KiI8259MaskTable[ecx*4]
|
||||||
or eax, [fs:KPCR_IDR]
|
or eax, [fs:KPCR_IDR]
|
||||||
out 0x21, al
|
out 0x21, al
|
||||||
shr eax, 8
|
shr eax, 8
|
||||||
out 0xA1, al
|
out 0xA1, al
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Restore interrupts and return old IRQL */
|
/* Restore interrupts and return old IRQL */
|
||||||
popf
|
popf
|
||||||
|
|
|
@ -51,6 +51,15 @@ VOID HalpEndSystemInterrupt(KIRQL Irql)
|
||||||
VOID STATIC
|
VOID STATIC
|
||||||
HalpLowerIrql(KIRQL NewIrql)
|
HalpLowerIrql(KIRQL NewIrql)
|
||||||
{
|
{
|
||||||
|
ULONG Mask;
|
||||||
|
|
||||||
|
if (KeGetPcr()->Irql > DISPATCH_LEVEL)
|
||||||
|
{
|
||||||
|
Mask = KeGetPcr()->IDR | KiI8259MaskTable[NewIrql];
|
||||||
|
WRITE_PORT_UCHAR((PUCHAR)0x21, (UCHAR)Mask);
|
||||||
|
Mask >>= 8;
|
||||||
|
WRITE_PORT_UCHAR((PUCHAR)0xa1, (UCHAR)Mask);
|
||||||
|
}
|
||||||
if (NewIrql >= PROFILE_LEVEL)
|
if (NewIrql >= PROFILE_LEVEL)
|
||||||
{
|
{
|
||||||
KeGetPcr()->Irql = NewIrql;
|
KeGetPcr()->Irql = NewIrql;
|
||||||
|
@ -112,6 +121,7 @@ KfLowerIrql (KIRQL NewIrql)
|
||||||
HalpLowerIrql(NewIrql);
|
HalpLowerIrql(NewIrql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID STDCALL HalEndSystemInterrupt (KIRQL Irql, ULONG Unknown2)
|
VOID STDCALL HalEndSystemInterrupt (KIRQL Irql, ULONG Unknown2)
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Finish a system interrupt and restore the specified irq level.
|
* FUNCTION: Finish a system interrupt and restore the specified irq level.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue