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
);
65 VOID NTAPI
HalpInitNonBusHandler (VOID
);
70 HalpRegisterVector(IN UCHAR Flags
,
72 IN ULONG SystemVector
,
77 HalpEnableInterruptHandler(IN UCHAR Flags
,
79 IN ULONG SystemVector
,
82 IN KINTERRUPT_MODE Mode
);
85 VOID NTAPI
HalpInitPICs(VOID
);
88 VOID NTAPI
HalpInitializeClock(VOID
);
92 HalpCalibrateStallExecution(VOID
);
95 VOID
HalpInitPciBus (VOID
);
98 VOID
HalpInitDma (VOID
);
100 /* Non-generic initialization */
101 VOID
HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock
);
102 VOID
HalpInitPhase1(VOID
);
103 VOID NTAPI
HalpClockInterrupt(VOID
);
104 VOID NTAPI
HalpProfileInterrupt(VOID
);
111 HalpCheckPowerButton(
117 HalpRegisterKdSupportFunctions(
123 HalpSetupPciDeviceForDebugging(
124 IN PVOID LoaderBlock
,
125 IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
130 HalpReleasePciDeviceForDebugging(
131 IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
139 HalpMapPhysicalMemory64(
140 IN PHYSICAL_ADDRESS PhysicalAddress
,
146 HalpUnmapVirtualAddress(
147 IN PVOID VirtualAddress
,
154 HaliQuerySystemInformation(
155 IN HAL_QUERY_INFORMATION_CLASS InformationClass
,
158 OUT PULONG ReturnedLength
163 HaliSetSystemInformation(
164 IN HAL_SET_INFORMATION_CLASS InformationClass
,
174 HalpBiosDisplayReset(
209 // Processor Halt Routine
218 // CMOS initialization
227 // Spinlock for protecting CMOS access
231 HalpAcquireSystemHardwareSpinLock(
237 HalpReleaseCmosSpinLock(
242 #define KfLowerIrql KeLowerIrql
244 /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */
245 #define KiAcquireSpinLock(SpinLock)
246 #define KiReleaseSpinLock(SpinLock)
247 #define KfAcquireSpinLock(SpinLock) KfRaiseIrql(DISPATCH_LEVEL);
248 #define KfReleaseSpinLock(SpinLock, OldIrql) KeLowerIrql(OldIrql);
249 #endif // !CONFIG_SMP
252 extern PVOID HalpRealModeStart
;
253 extern PVOID HalpRealModeEnd
;
255 extern ADDRESS_USAGE HalpDefaultIoSpace
;
257 extern KSPIN_LOCK HalpSystemHardwareLock
;
259 extern PADDRESS_USAGE HalpAddressUsageList
;
261 #endif /* __INTERNAL_HAL_HAL_H */