Author: akhaldi Date: Thu May 12 20:06:21 2016 New Revision: 71326
URL: http://svn.reactos.org/svn/reactos?rev=71326&view=rev Log: [0.4.1] Merge the hal fix by Thomas in r71307. CORE-11123
Added: branches/ros-branch-0_4_1/reactos/hal/halx86/up/pic.S - copied unchanged from r71307, trunk/reactos/hal/halx86/up/pic.S Modified: branches/ros-branch-0_4_1/ (props changed) branches/ros-branch-0_4_1/reactos/ (props changed) branches/ros-branch-0_4_1/reactos/hal/halx86/pic.cmake branches/ros-branch-0_4_1/reactos/hal/halx86/up/pic.c
Propchange: branches/ros-branch-0_4_1/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu May 12 20:06:21 2016 @@ -1 +1 @@ -/trunk:71217,71231,71245,71252,71255,71296,71309,71318 +/trunk:71217,71231,71245,71252,71255,71296,71307,71309,71318
Propchange: branches/ros-branch-0_4_1/reactos/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu May 12 20:06:21 2016 @@ -20,4 +20,4 @@ /branches/usb-bringup:51335,51337,51341-51343,51348,51350,51353,51355,51365-51369,51372,51384-54388,54396-54398,54736-54737,54752-54754,54756-54760,54762,54764-54765,54767-54768,54772,54774-54777,54781,54787,54790-54792,54797-54798,54806,54808,54834-54838,54843,54850,54852,54856,54858-54859 /branches/usb-bringup-trunk:55019-55543,55548-55554,55556-55567 /branches/wlan-bringup:54809-54998 -/trunk/reactos:71217,71231-71232,71245,71252,71262,71279,71296,71309,71318 +/trunk/reactos:71217,71231-71232,71245,71252,71262,71279,71296,71307,71309,71318
Modified: branches/ros-branch-0_4_1/reactos/hal/halx86/pic.cmake URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_1/reactos/hal/hal... ============================================================================== --- branches/ros-branch-0_4_1/reactos/hal/halx86/pic.cmake [iso-8859-1] (original) +++ branches/ros-branch-0_4_1/reactos/hal/halx86/pic.cmake [iso-8859-1] Thu May 12 20:06:21 2016 @@ -1,7 +1,8 @@
list(APPEND HAL_PIC_ASM_SOURCE generic/systimer.S - generic/trap.S) + generic/trap.S + up/pic.S)
list(APPEND HAL_PIC_SOURCE generic/profil.c
Modified: branches/ros-branch-0_4_1/reactos/hal/halx86/up/pic.c URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_1/reactos/hal/hal... ============================================================================== --- branches/ros-branch-0_4_1/reactos/hal/halx86/up/pic.c [iso-8859-1] (original) +++ branches/ros-branch-0_4_1/reactos/hal/halx86/up/pic.c [iso-8859-1] Thu May 12 20:06:21 2016 @@ -11,6 +11,11 @@ #include <hal.h> #define NDEBUG #include <debug.h> + +VOID +NTAPI +HalpEndSoftwareInterrupt(IN KIRQL OldIrql, + IN PKTRAP_FRAME TrapFrame);
/* GLOBALS ********************************************************************/
@@ -263,7 +268,7 @@ * so it will always preempt until we reach PROFILE_LEVEL. */ 0b00000000000000000001011111110000, /* IRQL 20 */ - 0b00000000000000000001001111110000, /* IRQL 20 */ + 0b00000000000000000001001111110000, /* IRQL 21 */ 0b00000000000000000001000111110000, /* IRQL 22 */ 0b00000000000000000001000011110000, /* IRQL 23 */ 0b00000000000000000001000001110000, /* IRQL 24 */ @@ -732,15 +737,17 @@ KeGetPcr()->IRR &= ~(1 << Irql); }
-VOID -NTAPI -HalpEndSoftwareInterrupt(IN KIRQL OldIrql, - IN PKTRAP_FRAME TrapFrame) +PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY +NTAPI +HalpEndSoftwareInterrupt2(IN KIRQL OldIrql, + IN PKTRAP_FRAME TrapFrame) { ULONG PendingIrql, PendingIrqlMask, PendingIrqMask; PKPCR Pcr = KeGetPcr(); PIC_MASK Mask;
+ UNREFERENCED_PARAMETER(TrapFrame); + /* Set old IRQL */ Pcr->Irql = OldIrql;
@@ -749,10 +756,10 @@ { /* Check for pending software interrupts and compare with current IRQL */ PendingIrqlMask = Pcr->IRR & FindHigherIrqlMask[OldIrql]; - if (!PendingIrqlMask) return; + if (!PendingIrqlMask) return NULL;
/* Check for in-service delayed interrupt */ - if (Pcr->IrrActive & 0xFFFFFFF0) return; + if (Pcr->IrrActive & 0xFFFFFFF0) return NULL;
/* Check if pending IRQL affects hardware state */ BitScanReverse(&PendingIrql, PendingIrqlMask); @@ -777,10 +784,11 @@ else { /* No need to loop checking for hardware interrupts */ - SWInterruptHandlerTable2[PendingIrql](TrapFrame); - UNREACHABLE; + return SWInterruptHandlerTable2[PendingIrql]; } } + + return NULL; }
/* EDGE INTERRUPT DISMISSAL FUNCTIONS *****************************************/