[CMAKE]
[reactos.git] / hal / halx86 / include / halp.h
index c74ae1b..cbb372a 100644 (file)
@@ -4,6 +4,23 @@
 
 #pragma once
 
+#define PLACE_IN_SECTION(s)    __attribute__((section (s)))
+#ifdef __GNUC__
+#define INIT_FUNCTION          PLACE_IN_SECTION("init")
+#define PAGE_LOCKED_FUNCTION   PLACE_IN_SECTION("pagelk")
+#define PAGE_UNLOCKED_FUNCTION PLACE_IN_SECTION("pagepo")
+#else
+#define INIT_FUNCTION
+#define PAGE_LOCKED_FUNCTION   
+#define PAGE_UNLOCKED_FUNCTION 
+#endif
+
+#ifdef _MSC_VER
+#define REGISTERCALL FASTCALL
+#else
+#define REGISTERCALL __attribute__((regparm(3)))
+#endif
+
 typedef struct _HAL_BIOS_FRAME
 {
     ULONG SegSs;
@@ -28,10 +45,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 +58,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 +428,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 +443,7 @@ HalpDismissIrqGeneric(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq15(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -433,7 +451,7 @@ HalpDismissIrq15(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq13(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -441,7 +459,7 @@ HalpDismissIrq13(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq07(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -449,7 +467,7 @@ HalpDismissIrq07(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrqLevel(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -457,7 +475,7 @@ HalpDismissIrqLevel(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq15Level(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -465,7 +483,7 @@ HalpDismissIrq15Level(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq13Level(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -473,7 +491,7 @@ HalpDismissIrq13Level(
 );
 
 BOOLEAN
-__attribute__((regparm(3)))
+REGISTERCALL
 HalpDismissIrq07Level(
     IN KIRQL Irql,
     IN ULONG Irq,
@@ -558,8 +576,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);
@@ -678,7 +696,7 @@ HaliHaltSystem(
 );
 
 //
-// CMOS initialization
+// CMOS Routines
 //
 VOID
 NTAPI
@@ -686,6 +704,19 @@ HalpInitializeCmos(
     VOID
 );
 
+UCHAR
+NTAPI
+HalpReadCmos(
+    IN UCHAR Reg
+);
+
+VOID
+NTAPI
+HalpWriteCmos(
+    IN UCHAR Reg,
+    IN UCHAR Value
+);
+
 //
 // Spinlock for protecting CMOS access
 //
@@ -790,6 +821,21 @@ 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