3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the HAL.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
28 #include <section_attribs.h>
30 #ifndef NTOS_MODE_USER
33 // Private HAL Callbacks
35 #define HalHandlerForBus HALPRIVATEDISPATCH->HalHandlerForBus
36 #define HalHandlerForConfigSpace HALPRIVATEDISPATCH->HalHandlerForConfigSpace
37 #define HalLocateHiberRanges HALPRIVATEDISPATCH->HalLocateHiberRanges
38 #define HalRegisterBusHandler HALPRIVATEDISPATCH->HalRegisterBusHandler
39 #define HalSetWakeEnable HALPRIVATEDISPATCH->HalSetWakeEnable
40 #define HalSetWakeAlarm HALPRIVATEDISPATCH->HalSetWakeAlarm
41 #define HalPciTranslateBusAddress HALPRIVATEDISPATCH->HalPciTranslateBusAddress
42 #define HalPciAssignSlotResources HALPRIVATEDISPATCH->HalPciAssignSlotResources
43 #define HalHaltSystem HALPRIVATEDISPATCH->HalHaltSystem
44 #define HalFindBusAddressTranslation HALPRIVATEDISPATCH->HalFindBusAddressTranslation
45 #define HalResetDisplay HALPRIVATEDISPATCH->HalResetDisplay
46 #define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters
47 #define KdSetupPciDeviceForDebugging HALPRIVATEDISPATCH->KdSetupPciDeviceForDebugging
48 #define KdReleasePciDeviceforDebugging HALPRIVATEDISPATCH->KdReleasePciDeviceforDebugging
49 #define KdGetAcpiTablePhase0 HALPRIVATEDISPATCH->KdGetAcpiTablePhase0
50 #define KdCheckPowerButton HALPRIVATEDISPATCH->KdCheckPowerButton
51 #define HalVectorToIDTEntry HALPRIVATEDISPATCH->HalVectorToIDTEntry
52 #define KdMapPhysicalMemory64 HALPRIVATEDISPATCH->KdMapPhysicalMemory64
53 #define KdUnmapVirtualAddress HALPRIVATEDISPATCH->KdUnmapVirtualAddress
66 // Initialization Functions
71 HalAllProcessorsStarted(
79 HalInitializeProcessor(
80 _In_ ULONG ProcessorNumber
,
81 _In_
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
90 _In_
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
96 HalStartNextProcessor(
97 _In_
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
,
98 _In_ PKPROCESSOR_STATE ProcessorState
107 _In_ FIRMWARE_REENTRY Action
121 // Interrupt Functions
126 HalBeginSystemInterrupt(
134 HalClearSoftwareInterrupt(
141 HalDisableSystemInterrupt(
149 HalEnableSystemInterrupt(
152 _In_ KINTERRUPT_MODE InterruptMode
159 HalEndSystemInterrupt(
161 _In_ PKTRAP_FRAME TrapFrame
167 HalEndSystemInterrupt(
173 #ifdef _ARM_ // FIXME: ndk/arm? armddk.h?
175 HalGetInterruptSource(
184 HalReportResourceUsage(
191 HalRequestSoftwareInterrupt(
192 _In_ KIRQL SoftwareInterruptRequested
199 _In_ KAFFINITY TargetSet
212 HalSystemVectorDispatchEntry(
214 _Out_ PKINTERRUPT_ROUTINE
**FlatDispatch
,
215 _Out_ PKINTERRUPT_ROUTINE
*NoConnection
224 HalAdjustResourceList(
225 _Inout_ PIO_RESOURCE_REQUIREMENTS_LIST
*pResourceList
229 // Environment Functions
235 HalSetEnvironmentVariable(
243 HalGetEnvironmentVariable(
251 // Profiling Functions
255 HalStartProfileInterrupt(
256 _In_ KPROFILE_SOURCE ProfileSource
262 HalStopProfileInterrupt(
263 _In_ KPROFILE_SOURCE ProfileSource
269 HalSetProfileInterval(
270 _In_ ULONG_PTR Interval
279 HalQueryRealTimeClock(
280 _In_ PTIME_FIELDS RtcTime
287 _In_ PTIME_FIELDS RtcTime