5 #ifndef __INTERNAL_HAL_HAL_H
6 #define __INTERNAL_HAL_HAL_H
8 #define HAL_APC_REQUEST 0
9 #define HAL_DPC_REQUEST 1
11 /* CMOS Registers and Ports */
12 #define CMOS_CONTROL_PORT (PUCHAR)0x70
13 #define CMOS_DATA_PORT (PUCHAR)0x71
14 #define RTC_REGISTER_A 0x0A
15 #define RTC_REGISTER_B 0x0B
16 #define RTC_REG_A_UIP 0x80
17 #define RTC_REGISTER_CENTURY 0x32
19 /* Timer Registers and Ports */
20 #define TIMER_CONTROL_PORT 0x43
21 #define TIMER_DATA_PORT0 0x40
23 #define TIMER_BOTH 0x30
27 #define IDT_REGISTERED 0x01
28 #define IDT_LATCHED 0x02
29 #define IDT_INTERNAL 0x11
30 #define IDT_DEVICE 0x21
32 /* Conversion functions */
33 #define BCD_INT(bcd) \
34 (((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F))
35 #define INT_BCD(int) \
36 (UCHAR)(((int / 10) << 4) + (int % 10))
38 typedef struct _IDTUsageFlags
46 UCHAR BusReleativeVector
;
49 typedef struct _HalAddressUsage
51 struct _HalAddressUsage
*Next
;
52 CM_RESOURCE_TYPE Type
;
59 } ADDRESS_USAGE
, *PADDRESS_USAGE
;
62 PADAPTER_OBJECT NTAPI
HalpAllocateAdapterEx(ULONG NumberOfMapRegisters
,BOOLEAN IsMaster
, BOOLEAN Dma32BitAddresses
);
67 HalpRegisterVector(IN UCHAR Flags
,
69 IN ULONG SystemVector
,
74 HalpEnableInterruptHandler(IN UCHAR Flags
,
76 IN ULONG SystemVector
,
79 IN KINTERRUPT_MODE Mode
);
82 VOID NTAPI
HalpInitPICs(VOID
);
85 VOID NTAPI
HalpInitializeClock(VOID
);
89 HalpCalibrateStallExecution(VOID
);
92 VOID
HalpInitPciBus (VOID
);
95 VOID
HalpInitDma (VOID
);
97 /* Non-generic initialization */
98 VOID
HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock
);
99 VOID
HalpInitPhase1(VOID
);
100 VOID NTAPI
HalpClockInterrupt(VOID
);
101 VOID NTAPI
HalpProfileInterrupt(VOID
);
108 HalpCheckPowerButton(
114 HalpRegisterKdSupportFunctions(
120 HalpSetupPciDeviceForDebugging(
121 IN PVOID LoaderBlock
,
122 IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
127 HalpReleasePciDeviceForDebugging(
128 IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
136 HalpMapPhysicalMemory64(
137 IN PHYSICAL_ADDRESS PhysicalAddress
,
143 HalpUnmapVirtualAddress(
144 IN PVOID VirtualAddress
,
151 HaliQuerySystemInformation(
152 IN HAL_QUERY_INFORMATION_CLASS InformationClass
,
155 OUT PULONG ReturnedLength
160 HaliSetSystemInformation(
161 IN HAL_SET_INFORMATION_CLASS InformationClass
,
171 HalpBiosDisplayReset(
206 // Processor Halt Routine
215 // CMOS initialization
224 // Spinlock for protecting CMOS access
228 HalpAcquireSystemHardwareSpinLock(
234 HalpReleaseCmosSpinLock(
239 #define KfLowerIrql KeLowerIrql
241 /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */
242 #define KiAcquireSpinLock(SpinLock)
243 #define KiReleaseSpinLock(SpinLock)
244 #define KfAcquireSpinLock(SpinLock) KfRaiseIrql(DISPATCH_LEVEL);
245 #define KfReleaseSpinLock(SpinLock, OldIrql) KeLowerIrql(OldIrql);
246 #endif // !CONFIG_SMP
249 extern PVOID HalpRealModeStart
;
250 extern PVOID HalpRealModeEnd
;
252 extern ADDRESS_USAGE HalpDefaultIoSpace
;
254 extern KSPIN_LOCK HalpSystemHardwareLock
;
256 extern PADDRESS_USAGE HalpAddressUsageList
;
258 #endif /* __INTERNAL_HAL_HAL_H */