5 #ifndef __INTERNAL_HAL_HAL_H
6 #define __INTERNAL_HAL_HAL_H
8 #define HAL_APC_REQUEST 0
9 #define HAL_DPC_REQUEST 1
12 // Kernel Debugger Port Definition
14 typedef struct _KD_PORT_INFORMATION
19 } KD_PORT_INFORMATION
, *PKD_PORT_INFORMATION
;
22 VOID FASTCALL
HalInitializeDisplay (struct _ROS_LOADER_PARAMETER_BLOCK
*LoaderBlock
);
23 VOID FASTCALL
HalClearDisplay (UCHAR CharAttribute
);
26 PADAPTER_OBJECT STDCALL
HalpAllocateAdapterEx(ULONG NumberOfMapRegisters
,BOOLEAN IsMaster
, BOOLEAN Dma32BitAddresses
);
29 VOID
HalpInitBusHandlers (VOID
);
32 VOID NTAPI
HalpInitPICs(VOID
);
35 VOID
HalpCalibrateStallExecution(VOID
);
38 VOID
HalpInitPciBus (VOID
);
41 VOID
HalpStartEnumerator (VOID
);
44 VOID
HalpInitDma (VOID
);
47 PVOID
HalpMapPhysMemory(ULONG PhysAddr
, ULONG Size
);
49 /* Non-generic initialization */
50 VOID
HalpInitPhase0 (PROS_LOADER_PARAMETER_BLOCK LoaderBlock
);
51 VOID
HalpInitPhase1(VOID
);
52 VOID NTAPI
HalpClockInterrupt(VOID
);
56 HalpQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass
,
59 OUT PULONG ReturnedLength
);
61 /* Non-standard functions */
63 HalReleaseDisplayOwnership();
66 HalQueryDisplayOwnership();
69 #define Ki386SaveFlags(x) __asm__ __volatile__("pushfl ; popl %0":"=g" (x): /* no input */)
70 #define Ki386RestoreFlags(x) __asm__ __volatile__("pushl %0 ; popfl": /* no output */ :"g" (x):"memory")
71 #define Ki386DisableInterrupts() __asm__ __volatile__("cli\n\t")
72 #define Ki386EnableInterrupts() __asm__ __volatile__("sti\n\t")
73 #define Ki386HaltProcessor() __asm__ __volatile__("hlt\n\t")
74 #define Ki386RdTSC(x) __asm__ __volatile__("rdtsc\n\t" : "=A" (x.u.LowPart), "=d" (x.u.HighPart))
75 #define Ki386Rdmsr(msr,val1,val2) __asm__ __volatile__("rdmsr" : "=a" (val1), "=d" (val2) : "c" (msr))
76 #define Ki386Wrmsr(msr,val1,val2) __asm__ __volatile__("wrmsr" : /* no outputs */ : "c" (msr), "a" (val1), "d" (val2))
77 #define Ki386ReadFsByte(offset,x) __asm__ __volatile__("movb %%fs:%c1,%0" : "=q" (x) : "i" (offset))
78 #define Ki386WriteFsByte(offset,x) __asm__ __volatile__("movb %0,%%fs:%c1" : : "q" ((UCHAR)x), "i" (offset))
80 #elif defined(_MSC_VER)
81 #define Ki386SaveFlags(x) __asm pushfd __asm pop x;
82 #define Ki386RestoreFlags(x) __asm push x __asm popfd;
83 #define Ki386DisableInterrupts() __asm cli
84 #define Ki386EnableInterrupts() __asm sti
85 #define Ki386HaltProcessor() __asm hlt
87 #error Unknown compiler for inline assembler
90 typedef struct tagHALP_HOOKS
92 void (*InitPciBus
)(ULONG BusNumber
, PBUS_HANDLER BusHandler
);
93 } HALP_HOOKS
, *PHALP_HOOKS
;
95 extern HALP_HOOKS HalpHooks
;
97 #endif /* __INTERNAL_HAL_HAL_H */