/* dma.c */
VOID HalpInitDma (VOID);
+/* mem.c */
+PVOID HalpMapPhysMemory(ULONG PhysAddr, ULONG Size);
+
/* Non-generic initialization */
VOID HalpInitPhase0 (VOID);
UCHAR Reserved9[30]; /* 0A2h-0BFh */
/* DMA Controller 2 */
- DMA1_CONTROL DmaController2; /* 0C0h-0DFh */
+ DMA1_CONTROL DmaController2; /* 0C0h-0CFh */
/* System Reserved Ports */
- UCHAR SystemReserved[800]; /* 0E0h-3FFh */
+ UCHAR SystemReserved[816]; /* 0D0h-3FFh */
/* Extended DMA Registers, Controller 1 */
UCHAR DmaHighByteCount1[8]; /* 400h-407h */
UCHAR ChannelNumber;
UCHAR AdapterNumber;
USHORT DmaPortAddress;
- UCHAR AdapterMode;
- BOOLEAN NeedsMapRegisters;
+ union {
+ DMA_MODE AdapterMode;
+ UCHAR AdapterModeByte;
+ };
+ BOOLEAN NeedsMapRegisters;
BOOLEAN MasterDevice;
UCHAR Width16Bits;
UCHAR ScatterGather;
#define Ki386EnableInterrupts() __asm__ __volatile__("sti\n\t")
#define Ki386HaltProcessor() __asm__ __volatile__("hlt\n\t")
#define Ki386RdTSC(x) __asm__ __volatile__("rdtsc\n\t" : "=A" (x.u.LowPart), "=d" (x.u.HighPart));
+#define Ki386Rdmsr(msr,val1,val2) __asm__ __volatile__("rdmsr" : "=a" (val1), "=d" (val2) : "c" (msr))
+#define Ki386Wrmsr(msr,val1,val2) __asm__ __volatile__("wrmsr" : /* no outputs */ : "c" (msr), "a" (val1), "d" (val2))
static inline BYTE Ki386ReadFsByte(ULONG offset)
{
BYTE b;
- __asm__ __volatile__("movb %%fs:(%1),%0":"=g" (b):"0" (offset));
+ __asm__ __volatile__("movb %%fs:(%1),%0":"=r" (b):"r" (offset));
return b;
}
static inline VOID Ki386WriteFsByte(ULONG offset, BYTE value)
{
- __asm__ __volatile__("movb %0,%%fs:(%1)"::"r" (value), "r" (offset));
+ __asm__ __volatile__("movb %0,%%fs:(%1)"::"r" (value), "r" (offset));
}
#elif defined(_MSC_VER)
#error Unknown compiler for inline assembler
#endif
+typedef struct tagHALP_HOOKS
+{
+ void (*InitPciBus)(ULONG BusNumber, PBUS_HANDLER BusHandler);
+} HALP_HOOKS, *PHALP_HOOKS;
-
-
+extern HALP_HOOKS HalpHooks;
#endif /* __INTERNAL_HAL_HAL_H */