*
*/
-#ifndef __INTERNAL_HAL_HAL_H
-#define __INTERNAL_HAL_HAL_H
+#pragma once
+
+typedef struct _HAL_BIOS_FRAME
+{
+ ULONG SegSs;
+ ULONG Esp;
+ ULONG EFlags;
+ ULONG SegCs;
+ ULONG Eip;
+ PKTRAP_FRAME TrapFrame;
+ ULONG CsLimit;
+ ULONG CsBase;
+ ULONG CsFlags;
+ ULONG SsLimit;
+ ULONG SsBase;
+ ULONG SsFlags;
+ ULONG Prefix;
+} HAL_BIOS_FRAME, *PHAL_BIOS_FRAME;
+
+typedef
+VOID
+(*PHAL_SW_INTERRUPT_HANDLER)(
+ VOID
+);
+
+typedef
+FASTCALL
+VOID
+DECLSPEC_NORETURN
+(*PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)(
+ IN PKTRAP_FRAME TrapFrame
+);
#define HAL_APC_REQUEST 0
#define HAL_DPC_REQUEST 1
/* Usage flags */
#define IDT_REGISTERED 0x01
#define IDT_LATCHED 0x02
+#define IDT_READ_ONLY 0x04
#define IDT_INTERNAL 0x11
#define IDT_DEVICE 0x21
#define INT_BCD(int) \
(UCHAR)(((int / 10) << 4) + (int % 10))
+//
+// BIOS Interrupts
+//
+#define VIDEO_SERVICES 0x10
+
+//
+// Operations for INT 10h (in AH)
+//
+#define SET_VIDEO_MODE 0x00
+
+//
+// Video Modes for INT10h AH=00 (in AL)
+//
+#define GRAPHICS_MODE_12 0x12 /* 80x30 8x16 640x480 16/256K */
+
//
// Commonly stated as being 1.19318MHz
//
};
} PIC_MASK, *PPIC_MASK;
-typedef
-VOID
-(*PHAL_SW_INTERRUPT_HANDLER)(
- VOID
-);
-
typedef
BOOLEAN
__attribute__((regparm(3)))
OUT PKIRQL OldIrql
);
+BOOLEAN
+__attribute__((regparm(3)))
+HalpDismissIrqLevel(
+ IN KIRQL Irql,
+ IN ULONG Irq,
+ OUT PKIRQL OldIrql
+);
+
+BOOLEAN
+__attribute__((regparm(3)))
+HalpDismissIrq15Level(
+ IN KIRQL Irql,
+ IN ULONG Irq,
+ OUT PKIRQL OldIrql
+);
+
+BOOLEAN
+__attribute__((regparm(3)))
+HalpDismissIrq13Level(
+ IN KIRQL Irql,
+ IN ULONG Irq,
+ OUT PKIRQL OldIrql
+);
+
+BOOLEAN
+__attribute__((regparm(3)))
+HalpDismissIrq07Level(
+ IN KIRQL Irql,
+ IN ULONG Irq,
+ OUT PKIRQL OldIrql
+);
+
+VOID
+HalpHardwareInterruptLevel(
+ VOID
+);
+
+//
+// Feature flags
+//
+#define HALP_CARD_FEATURE_FULL_DECODE 0x0001
+
+//
+// Match Flags
+//
+#define HALP_CHECK_CARD_REVISION_ID 0x10000
+#define HALP_CHECK_CARD_SUBVENDOR_ID 0x20000
+#define HALP_CHECK_CARD_SUBSYSTEM_ID 0x40000
+
//
// Mm PTE/PDE to Hal PTE/PDE
//
/* pic.c */
VOID NTAPI HalpInitializePICs(IN BOOLEAN EnableInterrupts);
+VOID HalpApcInterrupt(VOID);
+VOID HalpDispatchInterrupt(VOID);
+VOID HalpDispatchInterrupt2(VOID);
+VOID FASTCALL DECLSPEC_NORETURN HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
+VOID FASTCALL DECLSPEC_NORETURN HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
-/* udelay.c */
+/* timer.c */
VOID NTAPI HalpInitializeClock(VOID);
+VOID HalpClockInterrupt(VOID);
+VOID HalpProfileInterrupt(VOID);
VOID
NTAPI
/* Non-generic initialization */
VOID HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock);
VOID HalpInitPhase1(VOID);
-VOID NTAPI HalpClockInterrupt(VOID);
-VOID NTAPI HalpProfileInterrupt(VOID);
VOID
NTAPI
);
VOID
-NTAPI
-HalpBiosCall(
- VOID
-);
-
-VOID
-NTAPI
-HalpTrap0D(
- VOID
+FASTCALL
+HalpExitToV86(
+ PKTRAP_FRAME TrapFrame
);
VOID
-NTAPI
-HalpTrap06(
+DECLSPEC_NORETURN
+HalpRealModeStart(
VOID
);
VOID
);
+ULONG
+NTAPI
+HalpAllocPhysicalMemory(
+ IN PLOADER_PARAMETER_BLOCK LoaderBlock,
+ IN ULONG MaxAddress,
+ IN ULONG PageCount,
+ IN BOOLEAN Aligned
+);
+
+PVOID
+NTAPI
+HalpMapPhysicalMemory64(
+ IN PHYSICAL_ADDRESS PhysicalAddress,
+ IN ULONG PageCount
+);
+
+NTSTATUS
+NTAPI
+HalpOpenRegistryKey(
+ IN PHANDLE KeyHandle,
+ IN HANDLE RootKey,
+ IN PUNICODE_STRING KeyName,
+ IN ACCESS_MASK DesiredAccess,
+ IN BOOLEAN Create
+);
+
+VOID
+NTAPI
+HalpGetNMICrashFlag(
+ VOID
+);
+
+BOOLEAN
+NTAPI
+HalpGetDebugPortTable(
+ VOID
+);
+
+VOID
+NTAPI
+HalpReportSerialNumber(
+ VOID
+);
+
+NTSTATUS
+NTAPI
+HalpMarkAcpiHal(
+ VOID
+);
+
+VOID
+NTAPI
+HalpBuildAddressMap(
+ VOID
+);
+
+VOID
+NTAPI
+HalpReportResourceUsage(
+ IN PUNICODE_STRING HalName,
+ IN INTERFACE_TYPE InterfaceType
+);
+
+ULONG
+NTAPI
+HalpIs16BitPortDecodeSupported(
+ VOID
+);
+
+NTSTATUS
+NTAPI
+HalpQueryAcpiResourceRequirements(
+ OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements
+);
+
+VOID
+FASTCALL
+KeUpdateSystemTime(
+ IN PKTRAP_FRAME TrapFrame,
+ IN ULONG Increment,
+ IN KIRQL OldIrql
+);
+
+VOID
+NTAPI
+HalpInitBusHandlers(
+ VOID
+);
+
#ifdef _M_AMD64
#define KfLowerIrql KeLowerIrql
#ifndef CONFIG_SMP
extern BOOLEAN HalpNMIInProgress;
-extern PVOID HalpRealModeStart;
-extern PVOID HalpRealModeEnd;
-
extern ADDRESS_USAGE HalpDefaultIoSpace;
extern KSPIN_LOCK HalpSystemHardwareLock;
extern PADDRESS_USAGE HalpAddressUsageList;
-#endif /* __INTERNAL_HAL_HAL_H */
+extern LARGE_INTEGER HalpPerfCounter;
+
+extern KAFFINITY HalpActiveProcessors;
+
+extern BOOLEAN HalDisableFirmwareMapper;
+extern PWCHAR HalHardwareIdString;
+extern PWCHAR HalName;