- Get MP hal and Generic HAL to build too.
[reactos.git] / reactos / hal / halx86 / mp / mpsirql.c
index 48be827..c22dd31 100644 (file)
 
 /* INCLUDES *****************************************************************/
 
-#include <ddk/ntddk.h>
-#include <internal/ke.h>
-#include <internal/ps.h>
-#include <ntos/minmax.h>
-#include <halirq.h>
 #include <hal.h>
-#include <mps.h>
-#include <apic.h>
-
 #define NDEBUG
-#include <internal/debug.h>
+#include <debug.h>
 
 /* GLOBALS ******************************************************************/;
 
 
 /* FUNCTIONS ****************************************************************/
 
+#undef KeGetCurrentIrql
 KIRQL STDCALL KeGetCurrentIrql (VOID)
 /*
  * PURPOSE: Returns the current irq level
@@ -40,7 +33,7 @@ KIRQL STDCALL KeGetCurrentIrql (VOID)
   Ki386SaveFlags(Flags);
   Ki386DisableInterrupts();
 
-  irql = Ki386ReadFsByte(offsetof(KPCR, Irql));
+  Ki386ReadFsByte(FIELD_OFFSET(KPCR, Irql), irql);
   if (irql > HIGH_LEVEL)
     {
       DPRINT1 ("CurrentIrql %x\n", irql);
@@ -54,6 +47,7 @@ KIRQL STDCALL KeGetCurrentIrql (VOID)
 }
 
 
+#undef KeSetCurrentIrql
 VOID KeSetCurrentIrql (KIRQL NewIrql)
 /*
  * PURPOSE: Sets the current irq level without taking any action
@@ -67,7 +61,7 @@ VOID KeSetCurrentIrql (KIRQL NewIrql)
   }
   Ki386SaveFlags(Flags);
   Ki386DisableInterrupts();
-  Ki386WriteFsByte(offsetof(KPCR, Irql), NewIrql);
+  Ki386WriteFsByte(FIELD_OFFSET(KPCR, Irql), NewIrql);
   if (Flags & X86_EFLAGS_IF)
     {
       Ki386EnableInterrupts();
@@ -75,9 +69,10 @@ VOID KeSetCurrentIrql (KIRQL NewIrql)
 }
 
 VOID 
-HalpLowerIrql(KIRQL NewIrql, BOOL FromHalEndSystemInterrupt)
+HalpLowerIrql(KIRQL NewIrql, BOOLEAN FromHalEndSystemInterrupt)
 {
   ULONG Flags;
+  UCHAR DpcRequested;
   if (NewIrql >= DISPATCH_LEVEL)
     {
       KeSetCurrentIrql (NewIrql);
@@ -89,9 +84,10 @@ HalpLowerIrql(KIRQL NewIrql, BOOL FromHalEndSystemInterrupt)
     {
       KeSetCurrentIrql (DISPATCH_LEVEL);
       APICWrite(APIC_TPR, IRQL2TPR (DISPATCH_LEVEL) & APIC_TPR_PRI);
-      if (FromHalEndSystemInterrupt || Ki386ReadFsByte(offsetof(KPCR, HalReserved[HAL_DPC_REQUEST])))
+      Ki386ReadFsByte(FIELD_OFFSET(KIPCR, HalReserved[HAL_DPC_REQUEST]), DpcRequested);
+      if (FromHalEndSystemInterrupt || DpcRequested)
         {
-          Ki386WriteFsByte(offsetof(KPCR, HalReserved[HAL_DPC_REQUEST]), 0);
+          Ki386WriteFsByte(FIELD_OFFSET(KIPCR, HalReserved[HAL_DPC_REQUEST]), 0);
           Ki386EnableInterrupts();
           KiDispatchInterrupt();
           if (!(Flags & X86_EFLAGS_IF))
@@ -163,7 +159,7 @@ KfLowerIrql (KIRQL  NewIrql)
  *
  * NOTES
  */
-
+#undef KeLowerIrql
 VOID STDCALL
 KeLowerIrql (KIRQL NewIrql)
 {
@@ -237,6 +233,7 @@ KfRaiseIrql (KIRQL  NewIrql)
  * NOTES
  *     Calls KfRaiseIrql
  */
+#undef KeRaiseIrql
 VOID STDCALL
 KeRaiseIrql (KIRQL     NewIrql,
        PKIRQL  OldIrql)
@@ -389,11 +386,11 @@ HalRequestSoftwareInterrupt(IN KIRQL Request)
   switch (Request)
   {
     case APC_LEVEL:
-      Ki386WriteFsByte(offsetof(KPCR, HalReserved[HAL_APC_REQUEST]), 1);
+      Ki386WriteFsByte(FIELD_OFFSET(KIPCR, HalReserved[HAL_APC_REQUEST]), 1);
       break;
 
     case DISPATCH_LEVEL:
-      Ki386WriteFsByte(offsetof(KPCR, HalReserved[HAL_DPC_REQUEST]), 1);
+      Ki386WriteFsByte(FIELD_OFFSET(KIPCR, HalReserved[HAL_DPC_REQUEST]), 1);
       break;
       
     default: