[HAL]
[reactos.git] / reactos / hal / halx86 / include / halp.h
index 8940589..3ab0f7b 100644 (file)
@@ -4,6 +4,13 @@
 
 #pragma once
 
+
+#ifdef _MSC_VER
+#define REGISTERCALL FASTCALL
+#else
+#define REGISTERCALL __attribute__((regparm(3)))
+#endif
+
 typedef struct _HAL_BIOS_FRAME
 {
     ULONG SegSs;
@@ -28,10 +35,9 @@ VOID
 );
 
 typedef
-FASTCALL
 VOID
-DECLSPEC_NORETURN
-(*PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)(
+ATTRIB_NORETURN
+(FASTCALL *PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)(
     IN PKTRAP_FRAME TrapFrame
 );
 
@@ -42,8 +48,11 @@ DECLSPEC_NORETURN
 #define CMOS_CONTROL_PORT       (PUCHAR)0x70
 #define CMOS_DATA_PORT          (PUCHAR)0x71
 #define RTC_REGISTER_A          0x0A
+#define   RTC_REG_A_UIP         0x80
 #define RTC_REGISTER_B          0x0B
-#define RTC_REG_A_UIP           0x80
+#define   RTC_REG_B_PI          0x40
+#define RTC_REGISTER_C          0x0C
+#define RTC_REGISTER_D          0x0D
 #define RTC_REGISTER_CENTURY    0x32
 
 /* Usage flags */
@@ -409,15 +418,14 @@ typedef struct _PIC_MASK
 
 typedef
 BOOLEAN
-__attribute__((regparm(3)))
-(*PHAL_DISMISS_INTERRUPT)(
+( REGISTERCALL *PHAL_DISMISS_INTERRUPT)(
     IN KIRQL Irql,
     IN ULONG Irq,
     OUT PKIRQL OldIrql
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrqGeneric(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -425,7 +433,7 @@ HalpDismissIrqGeneric(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq15(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -433,7 +441,7 @@ HalpDismissIrq15(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq13(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -441,7 +449,7 @@ HalpDismissIrq13(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq07(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -449,7 +457,7 @@ HalpDismissIrq07(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrqLevel(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -457,7 +465,7 @@ HalpDismissIrqLevel(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq15Level(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -465,7 +473,7 @@ HalpDismissIrq15Level(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq13Level(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -473,7 +481,7 @@ HalpDismissIrq13Level(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq07Level(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -485,6 +493,25 @@ HalpHardwareInterruptLevel(
     VOID
 );
 
+//
+// Hack Flags
+//
+#define HALP_REVISION_FROM_HACK_FLAGS(x)    ((x) >> 24)
+#define HALP_REVISION_HACK_FLAGS(x)         ((x) >> 12)
+#define HALP_HACK_FLAGS(x)                  ((x) & 0xFFF)
+
+//
+// Feature flags
+//
+#define HALP_CARD_FEATURE_FULL_DECODE   0x0001
+
+//
+// Match Flags
+//
+#define HALP_CHECK_CARD_REVISION_ID     0x10000
+#define HALP_CHECK_CARD_SUBVENDOR_ID    0x20000
+#define HALP_CHECK_CARD_SUBSYSTEM_ID    0x40000
+
 //
 // Mm PTE/PDE to Hal PTE/PDE
 //
@@ -539,8 +566,8 @@ VOID NTAPI HalpInitializePICs(IN BOOLEAN EnableInterrupts);
 VOID HalpApcInterrupt(VOID);
 VOID HalpDispatchInterrupt(VOID);
 VOID HalpDispatchInterrupt2(VOID);
-VOID FASTCALL DECLSPEC_NORETURN HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
-VOID FASTCALL DECLSPEC_NORETURN HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
+DECLSPEC_NORETURN VOID FASTCALL HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
+DECLSPEC_NORETURN VOID FASTCALL HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
 
 /* timer.c */
 VOID NTAPI HalpInitializeClock(VOID);
@@ -659,7 +686,7 @@ HaliHaltSystem(
 );
 
 //
-// CMOS initialization
+// CMOS Routines
 //
 VOID
 NTAPI
@@ -667,6 +694,19 @@ HalpInitializeCmos(
     VOID
 );
 
+UCHAR
+NTAPI
+HalpReadCmos(
+    IN UCHAR Reg
+);
+
+VOID
+NTAPI
+HalpWriteCmos(
+    IN UCHAR Reg,
+    IN UCHAR Value
+);
+
 //
 // Spinlock for protecting CMOS access
 //
@@ -751,6 +791,12 @@ HalpIs16BitPortDecodeSupported(
     VOID
 );
 
+NTSTATUS
+NTAPI
+HalpQueryAcpiResourceRequirements(
+    OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements
+);
+
 VOID
 FASTCALL
 KeUpdateSystemTime(
@@ -759,6 +805,27 @@ KeUpdateSystemTime(
     IN KIRQL OldIrql
 );
 
+VOID
+NTAPI
+HalpInitBusHandlers(
+    VOID
+);
+
+NTSTATUS
+NTAPI
+HaliInitPnpDriver(
+    VOID
+);
+
+VOID
+NTAPI
+HalpDebugPciDumpBus(
+    IN ULONG i,
+    IN ULONG j,
+    IN ULONG k,
+    IN PPCI_COMMON_CONFIG PciData
+);
+
 #ifdef _M_AMD64
 #define KfLowerIrql KeLowerIrql
 #ifndef CONFIG_SMP
@@ -785,3 +852,8 @@ extern KAFFINITY HalpActiveProcessors;
 extern BOOLEAN HalDisableFirmwareMapper;
 extern PWCHAR HalHardwareIdString;
 extern PWCHAR HalName;
+
+extern KAFFINITY HalpDefaultInterruptAffinity;
+
+extern IDTUsageFlags HalpIDTUsageFlags[MAXIMUM_IDTVECTOR];
+