Visual C++ backend for rbuild (for now just a hacked mingw backend) and related compi...
[reactos.git] / include / ndk / halfuncs.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 halfuncs.h
8
9 Abstract:
10
11 Function definitions for the HAL.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _HALFUNCS_H
20 #define _HALFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <haltypes.h>
27 #include <ketypes.h>
28
29 #ifndef NTOS_MODE_USER
30
31 //
32 // Private HAL Callbacks
33 //
34 #define HalHandlerForBus HALPRIVATEDISPATCH->HalHandlerForBus
35 #define HalHandlerForConfigSpace HALPRIVATEDISPATCH->HalHandlerForConfigSpace
36 #define HalLocateHiberRanges HALPRIVATEDISPATCH->HalLocateHiberRanges
37 #define HalRegisterBusHandler HALPRIVATEDISPATCH->HalRegisterBusHandler
38 #define HalSetWakeEnable HALPRIVATEDISPATCH->HalSetWakeEnable
39 #define HalSetWakeAlarm HALPRIVATEDISPATCH->HalSetWakeAlarm
40 #define HalPciTranslateBusAddress HALPRIVATEDISPATCH->HalPciTranslateBusAddress
41 #define HalPciAssignSlotResources HALPRIVATEDISPATCH->HalPciAssignSlotResources
42 #define HalHaltSystem HALPRIVATEDISPATCH->HalHaltSystem
43 #define HalFindBusAddressTranslation HALPRIVATEDISPATCH->HalFindBusAddressTranslation
44 #define HalResetDisplay HALPRIVATEDISPATCH->HalResetDisplay
45 #define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters
46 #define KdSetupPciDeviceForDebugging HALPRIVATEDISPATCH->KdSetupPciDeviceForDebugging
47 #define KdReleasePciDeviceforDebugging HALPRIVATEDISPATCH->KdReleasePciDeviceforDebugging
48 #define KdGetAcpiTablePhase0 HALPRIVATEDISPATCH->KdGetAcpiTablePhase0
49 #define KdCheckPowerButton HALPRIVATEDISPATCH->KdCheckPowerButton
50 #define HalVectorToIDTEntry HALPRIVATEDISPATCH->HalVectorToIDTEntry
51 #define KdMapPhysicalMemory64 HALPRIVATEDISPATCH->KdMapPhysicalMemory64
52 #define KdUnmapVirtualAddress HALPRIVATEDISPATCH->KdUnmapVirtualAddress
53
54 //
55 // The DDK steals these away from you.
56 //
57 #ifdef _MSC_VER
58 void __cdecl _enable(void);
59 void __cdecl _disable(void);
60 #pragma intrinsic(_enable)
61 #pragma intrinsic(_disable)
62 #endif
63
64 //
65 // Display Functions
66 //
67 NTHALAPI
68 VOID
69 NTAPI
70 HalDisplayString(
71 IN PCHAR String
72 );
73
74 //
75 // Initialization Functions
76 //
77 NTHALAPI
78 BOOLEAN
79 NTAPI
80 HalAllProcessorsStarted(
81 VOID
82 );
83
84 #ifdef _ARC_
85 NTHALAPI
86 VOID
87 NTAPI
88 HalInitializeProcessor(
89 ULONG ProcessorNumber,
90 struct _LOADER_PARAMETER_BLOCK *LoaderBlock
91 );
92
93 NTHALAPI
94 BOOLEAN
95 NTAPI
96 HalInitSystem(
97 ULONG BootPhase,
98 struct _LOADER_PARAMETER_BLOCK *LoaderBlock
99 );
100
101 NTHALAPI
102 BOOLEAN
103 NTAPI
104 HalStartNextProcessor(
105 IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
106 IN PKPROCESSOR_STATE ProcessorState
107 );
108
109 #endif
110
111 NTHALAPI
112 VOID
113 NTAPI
114 HalReturnToFirmware(
115 FIRMWARE_REENTRY Action
116 );
117
118 //
119 // CPU Routines
120 //
121 NTHALAPI
122 VOID
123 NTAPI
124 HalProcessorIdle(
125 VOID
126 );
127
128 //
129 // Interrupt Functions
130 //
131 NTHALAPI
132 BOOLEAN
133 NTAPI
134 HalBeginSystemInterrupt(
135 KIRQL Irql,
136 ULONG Vector,
137 PKIRQL OldIrql
138 );
139
140 VOID
141 FASTCALL
142 HalClearSoftwareInterrupt(
143 IN KIRQL Request
144 );
145
146 NTHALAPI
147 BOOLEAN
148 NTAPI
149 HalDisableSystemInterrupt(
150 ULONG Vector,
151 KIRQL Irql
152 );
153
154 NTHALAPI
155 BOOLEAN
156 NTAPI
157 HalEnableSystemInterrupt(
158 ULONG Vector,
159 KIRQL Irql,
160 KINTERRUPT_MODE InterruptMode
161 );
162
163 NTHALAPI
164 VOID
165 NTAPI
166 HalEndSystemInterrupt(
167 KIRQL Irql,
168 ULONG Vector
169 );
170
171 #ifdef _ARM_ // FIXME: ndk/arm? armddk.h?
172 ULONG
173 HalGetInterruptSource(
174 VOID
175 );
176 #endif
177
178 NTHALAPI
179 VOID
180 NTAPI
181 HalReportResourceUsage(
182 VOID
183 );
184
185 NTHALAPI
186 VOID
187 FASTCALL
188 HalRequestSoftwareInterrupt(
189 KIRQL SoftwareInterruptRequested
190 );
191
192 NTHALAPI
193 VOID
194 NTAPI
195 HalRequestIpi(
196 KAFFINITY TargetSet
197 );
198
199 NTHALAPI
200 VOID
201 NTAPI
202 HalHandleNMI(
203 PVOID NmiInfo
204 );
205
206 //
207 // Environment Functions
208 //
209 #ifdef _ARC_
210 NTHALAPI
211 ARC_STATUS
212 NTAPI
213 HalSetEnvironmentVariable(
214 IN PCH Name,
215 IN PCH Value
216 );
217
218 NTHALAPI
219 ARC_STATUS
220 NTAPI
221 HalGetEnvironmentVariable(
222 IN PCH Variable,
223 IN USHORT Length,
224 OUT PCH Buffer
225 );
226 #endif
227
228 //
229 // Time Functions
230 //
231 NTHALAPI
232 BOOLEAN
233 NTAPI
234 HalQueryRealTimeClock(
235 IN PTIME_FIELDS RtcTime
236 );
237
238 NTHALAPI
239 BOOLEAN
240 NTAPI
241 HalSetRealTimeClock(
242 IN PTIME_FIELDS RtcTime
243 );
244
245 #endif
246 #endif