X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=hal%2Fhalx86%2Finclude%2Fhalp.h;h=9c03a96f43d7080f20024d1f3271789ddf0ab438;hp=f27b7a3909a8fc602f51abb6b8f263ed0672f244;hb=9ab3246d4368eb8498ccb01a4359161e4c36ef7a;hpb=e1ef07874175603f7e980194c4bfe511bff4e3c5 diff --git a/hal/halx86/include/halp.h b/hal/halx86/include/halp.h index f27b7a3909a..9c03a96f43d 100644 --- a/hal/halx86/include/halp.h +++ b/hal/halx86/include/halp.h @@ -4,23 +4,6 @@ #pragma once -#define PLACE_IN_SECTION(s) __attribute__((section (s))) -#ifdef __GNUC__ -#define INIT_FUNCTION -#define PAGE_LOCKED_FUNCTION PLACE_IN_SECTION("pagelk") -#define PAGE_UNLOCKED_FUNCTION PLACE_IN_SECTION("pagepo") -#else -#define INIT_FUNCTION -#define PAGE_LOCKED_FUNCTION -#define PAGE_UNLOCKED_FUNCTION -#endif - -#ifdef _MSC_VER -#define REGISTERCALL FASTCALL -#else -#define REGISTERCALL __attribute__((regparm(3))) -#endif - #ifdef CONFIG_SMP #define HAL_BUILD_TYPE (DBG ? PRCB_BUILD_DEBUG : 0) #else @@ -46,13 +29,12 @@ typedef struct _HAL_BIOS_FRAME typedef VOID -(*PHAL_SW_INTERRUPT_HANDLER)( +(__cdecl *PHAL_SW_INTERRUPT_HANDLER)( VOID ); typedef VOID -ATTRIB_NORETURN (FASTCALL *PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)( IN PKTRAP_FRAME TrapFrame ); @@ -60,6 +42,10 @@ ATTRIB_NORETURN #define HAL_APC_REQUEST 0 #define HAL_DPC_REQUEST 1 +/* HAL profiling offsets in KeGetPcr()->HalReserved[] */ +#define HAL_PROFILING_INTERVAL 0 +#define HAL_PROFILING_MULTIPLIER 1 + /* CMOS Registers and Ports */ #define CMOS_CONTROL_PORT (PUCHAR)0x70 #define CMOS_DATA_PORT (PUCHAR)0x71 @@ -68,6 +54,7 @@ ATTRIB_NORETURN #define RTC_REGISTER_B 0x0B #define RTC_REG_B_PI 0x40 #define RTC_REGISTER_C 0x0C +#define RTC_REG_C_IRQ 0x80 #define RTC_REGISTER_D 0x0D #define RTC_REGISTER_CENTURY 0x32 @@ -434,14 +421,14 @@ typedef struct _PIC_MASK typedef BOOLEAN -( REGISTERCALL *PHAL_DISMISS_INTERRUPT)( +(NTAPI *PHAL_DISMISS_INTERRUPT)( IN KIRQL Irql, IN ULONG Irq, OUT PKIRQL OldIrql ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrqGeneric( IN KIRQL Irql, IN ULONG Irq, @@ -449,7 +436,7 @@ HalpDismissIrqGeneric( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrq15( IN KIRQL Irql, IN ULONG Irq, @@ -457,7 +444,7 @@ HalpDismissIrq15( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrq13( IN KIRQL Irql, IN ULONG Irq, @@ -465,7 +452,7 @@ HalpDismissIrq13( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrq07( IN KIRQL Irql, IN ULONG Irq, @@ -473,7 +460,7 @@ HalpDismissIrq07( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrqLevel( IN KIRQL Irql, IN ULONG Irq, @@ -481,7 +468,7 @@ HalpDismissIrqLevel( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrq15Level( IN KIRQL Irql, IN ULONG Irq, @@ -489,7 +476,7 @@ HalpDismissIrq15Level( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrq13Level( IN KIRQL Irql, IN ULONG Irq, @@ -497,7 +484,7 @@ HalpDismissIrq13Level( ); BOOLEAN -REGISTERCALL +NTAPI HalpDismissIrq07Level( IN KIRQL Irql, IN ULONG Irq, @@ -505,6 +492,7 @@ HalpDismissIrq07Level( ); VOID +__cdecl HalpHardwareInterruptLevel( VOID ); @@ -561,6 +549,7 @@ typedef struct _HalAddressUsage PADAPTER_OBJECT NTAPI HalpAllocateAdapterEx(ULONG NumberOfMapRegisters,BOOLEAN IsMaster, BOOLEAN Dma32BitAddresses); /* sysinfo.c */ +INIT_FUNCTION VOID NTAPI HalpRegisterVector(IN UCHAR Flags, @@ -568,6 +557,7 @@ HalpRegisterVector(IN UCHAR Flags, IN ULONG SystemVector, IN KIRQL Irql); +INIT_FUNCTION VOID NTAPI HalpEnableInterruptHandler(IN UCHAR Flags, @@ -579,16 +569,19 @@ HalpEnableInterruptHandler(IN UCHAR Flags, /* pic.c */ VOID NTAPI HalpInitializePICs(IN BOOLEAN EnableInterrupts); -VOID HalpApcInterrupt(VOID); -VOID HalpDispatchInterrupt(VOID); -VOID HalpDispatchInterrupt2(VOID); +VOID __cdecl HalpApcInterrupt(VOID); +VOID __cdecl HalpDispatchInterrupt(VOID); +PHAL_SW_INTERRUPT_HANDLER __cdecl HalpDispatchInterrupt2(VOID); DECLSPEC_NORETURN VOID FASTCALL HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame); DECLSPEC_NORETURN VOID FASTCALL HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame); +/* profil.c */ +extern BOOLEAN HalpProfilingStopped; + /* timer.c */ -VOID NTAPI HalpInitializeClock(VOID); -VOID HalpClockInterrupt(VOID); -VOID HalpProfileInterrupt(VOID); +INIT_FUNCTION VOID NTAPI HalpInitializeClock(VOID); +VOID __cdecl HalpClockInterrupt(VOID); +VOID __cdecl HalpProfileInterrupt(VOID); VOID NTAPI @@ -598,7 +591,7 @@ HalpCalibrateStallExecution(VOID); VOID HalpInitPciBus (VOID); /* dma.c */ -VOID HalpInitDma (VOID); +INIT_FUNCTION VOID HalpInitDma (VOID); /* Non-generic initialization */ VOID HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock); @@ -617,12 +610,14 @@ HalpCheckPowerButton( VOID ); +INIT_FUNCTION VOID NTAPI HalpRegisterKdSupportFunctions( VOID ); +INIT_FUNCTION NTSTATUS NTAPI HalpSetupPciDeviceForDebugging( @@ -630,6 +625,7 @@ HalpSetupPciDeviceForDebugging( IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice ); +INIT_FUNCTION NTSTATUS NTAPI HalpReleasePciDeviceForDebugging( @@ -639,15 +635,31 @@ HalpReleasePciDeviceForDebugging( // // Memory routines // -ULONG_PTR +ULONG64 NTAPI HalpAllocPhysicalMemory( IN PLOADER_PARAMETER_BLOCK LoaderBlock, - IN ULONG_PTR MaxAddress, + IN ULONG64 MaxAddress, IN PFN_NUMBER PageCount, IN BOOLEAN Aligned ); +PVOID +NTAPI +HalpMapPhysicalMemory64Vista( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN PFN_COUNT PageCount, + IN BOOLEAN FlushCurrentTLB +); + +VOID +NTAPI +HalpUnmapVirtualAddressVista( + IN PVOID VirtualAddress, + IN PFN_COUNT NumberPages, + IN BOOLEAN FlushCurrentTLB +); + PVOID NTAPI HalpMapPhysicalMemory64( @@ -696,7 +708,7 @@ HalpExitToV86( ); VOID -DECLSPEC_NORETURN +__cdecl HalpRealModeStart( VOID ); @@ -713,6 +725,7 @@ HaliHaltSystem( // // CMOS Routines // +INIT_FUNCTION VOID NTAPI HalpInitializeCmos( @@ -747,6 +760,12 @@ HalpReleaseCmosSpinLock( VOID ); +VOID +NTAPI +HalpInitializeLegacyPICs( + VOID +); + NTSTATUS NTAPI HalpOpenRegistryKey( @@ -757,36 +776,42 @@ HalpOpenRegistryKey( IN BOOLEAN Create ); +INIT_FUNCTION VOID NTAPI HalpGetNMICrashFlag( VOID ); +INIT_FUNCTION BOOLEAN NTAPI HalpGetDebugPortTable( VOID ); +INIT_FUNCTION VOID NTAPI HalpReportSerialNumber( VOID ); +INIT_FUNCTION NTSTATUS NTAPI HalpMarkAcpiHal( VOID ); +INIT_FUNCTION VOID NTAPI HalpBuildAddressMap( VOID ); +INIT_FUNCTION VOID NTAPI HalpReportResourceUsage( @@ -794,6 +819,7 @@ HalpReportResourceUsage( IN INTERFACE_TYPE InterfaceType ); +INIT_FUNCTION ULONG NTAPI HalpIs16BitPortDecodeSupported( @@ -814,6 +840,7 @@ KeUpdateSystemTime( IN KIRQL OldIrql ); +INIT_FUNCTION VOID NTAPI HalpInitBusHandlers( @@ -826,6 +853,7 @@ HaliInitPnpDriver( VOID ); +INIT_FUNCTION VOID NTAPI HalpDebugPciDumpBus( @@ -843,6 +871,14 @@ HalpInitProcessor( ); #ifdef _M_AMD64 + +VOID +NTAPI +HalInitializeBios( + _In_ ULONG Unknown, + _In_ PLOADER_PARAMETER_BLOCK LoaderBlock +); + #define KfLowerIrql KeLowerIrql #define KiEnterInterruptTrap(TrapFrame) /* We do all neccessary in asm code */ #define KiEoiHelper(TrapFrame) return /* Just return to the caller */