Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

239 lines
4.4 KiB

/*++ BUILD Version: 0003 // Increment this if a change has global effects
Copyright (C) 1991-1995 Microsoft Corporation
Module Name:
halp.h
Abstract:
This header file defines the private Hardware Architecture Layer (HAL)
interfaces.
Author:
David N. Cutler (davec) 25-Apr-1991
Revision History:
Jim Wooldridge ([email protected]) Initial PowerPC port
Added PPC specific includes
Changed paramaters to HalpProfileInterrupt
Added function prototype for HalpWriteCompareRegisterAndClear()
Added include for ppcdef.h
--*/
#ifndef _HALP_
#define _HALP_
#if defined(NT_UP)
#undef NT_UP
#endif
#include "nthal.h"
#include "hal.h"
#include "ppcdef.h"
#include "pxhalp.h"
#ifndef _HALI_
#include "..\inc\hali.h"
#endif
//
// Resource usage information
//
#define MAXIMUM_IDTVECTOR 255
typedef struct {
UCHAR Flags;
KIRQL Irql;
UCHAR BusReleativeVector;
} IDTUsage;
typedef struct _HalAddressUsage{
struct _HalAddressUsage *Next;
CM_RESOURCE_TYPE Type; // Port or Memory
UCHAR Flags; // same as IDTUsage.Flags
struct {
ULONG Start;
USHORT Length;
} Element[];
} ADDRESS_USAGE;
#define IDTOwned 0x01 // IDT is not available for others
#define InterruptLatched 0x02 // Level or Latched
#define InternalUsage 0x11 // Report usage on internal bus
#define DeviceUsage 0x21 // Report usage on device bus
extern IDTUsage HalpIDTUsage[];
extern ADDRESS_USAGE *HalpAddressUsageList;
#define HalpRegisterAddressUsage(a) \
(a)->Next = HalpAddressUsageList, HalpAddressUsageList = (a);
#define HalpGetProcessorVersion() KeGetPvr()
#define HalpEnableInterrupts() _enable()
#define HalpDisableInterrupts() _disable()
#define KeFlushWriteBuffer() __builtin_eieio()
//
// Bus handlers
//
PBUS_HANDLER HalpAllocateBusHandler (
IN INTERFACE_TYPE InterfaceType,
IN BUS_DATA_TYPE BusDataType,
IN ULONG BusNumber,
IN BUS_DATA_TYPE ParentBusDataType,
IN ULONG ParentBusNumber,
IN ULONG BusSpecificData
);
#define HalpAllocateConfigSpace HalpAllocateBusHandler
#define SPRANGEPOOL NonPagedPool // for now, until crashdump is fixed
#define HalpHandlerForBus HaliHandlerForBus
#define HalpSetBusHandlerParent(c,p) (c)->ParentHandler = p;
//
// Define function prototypes.
//
BOOLEAN
HalpGrowMapBuffers(
PADAPTER_OBJECT AdapterObject,
ULONG Amount
);
PADAPTER_OBJECT
HalpAllocateAdapter(
IN ULONG MapRegistersPerChannel,
IN PVOID AdapterBaseVa,
IN PVOID MapRegisterBase
);
BOOLEAN
HalpCalibrateStall (
VOID
);
BOOLEAN
HalpInitializeInterrupts (
VOID
);
VOID
HalpIpiInterrupt (
VOID
);
BOOLEAN
HalpInitializeDisplay (
IN PLOADER_PARAMETER_BLOCK LoaderBlock
);
BOOLEAN
HalpMapIoSpace (
VOID
);
ULONG
HalpTranslatePciSlotNumber (
ULONG,
ULONG
);
BOOLEAN
HalpInitPciIsaBridge (
VOID
);
VOID
HalpHandleIoError (
VOID
);
BOOLEAN
HalpInitPlanar (
VOID
);
VOID
HalpHandleMemoryError(
VOID
);
BOOLEAN
HalpHandleProfileInterrupt (
IN PKINTERRUPT Interrupt,
IN PVOID ServiceContext,
IN PVOID TrapFrame
);
BOOLEAN
HalpEnableInterruptHandler (
IN PKINTERRUPT Interrupt,
IN PKSERVICE_ROUTINE ServiceRoutine,
IN PVOID ServiceContext,
IN PKSPIN_LOCK SpinLock OPTIONAL,
IN ULONG Vector,
IN KIRQL Irql,
IN KIRQL SynchronizeIrql,
IN KINTERRUPT_MODE InterruptMode,
IN BOOLEAN ShareVector,
IN CCHAR ProcessorNumber,
IN BOOLEAN FloatingSave,
IN UCHAR ReportFlags,
IN KIRQL BusVector
);
VOID
HalpRegisterVector (
IN UCHAR ReportFlags,
IN ULONG BusInterruptVector,
IN ULONG SystemInterruptVector,
IN KIRQL SystemIrql
);
VOID
HalpReportResourceUsage (
IN PUNICODE_STRING HalName,
IN INTERFACE_TYPE DeviceInterfaceToUse
);
//
// Define external references.
//
extern KSPIN_LOCK HalpBeepLock;
extern KSPIN_LOCK HalpDisplayAdapterLock;
extern KSPIN_LOCK HalpSystemInterruptLock;
extern KAFFINITY HalpIsaBusAffinity;
extern ULONG HalpProfileCount;
extern ULONG HalpCurrentTimeIncrement;
extern ULONG HalpNextTimeIncrement;
extern ULONG HalpNewTimeIncrement;
#define IRQ_VALID 0x01
#define IRQ_PREFERRED 0x02
#endif // _HALP_