mirror of https://github.com/lianthony/NT4.0
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.
267 lines
5.4 KiB
267 lines
5.4 KiB
/*
|
|
* Copyright (c) 1995 FirePower Systems, Inc.
|
|
* DO NOT DISTRIBUTE without permission
|
|
*
|
|
* $RCSfile: halp.h $
|
|
* $Revision: 1.20 $
|
|
* $Date: 1996/05/14 02:33:08 $
|
|
* $Locker: $
|
|
*/
|
|
|
|
/*++ BUILD Version: 0003 // Increment this if a change has global effects
|
|
|
|
Copyright (c) 1991-1993 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 "ppcdef.h"
|
|
|
|
#include "hal.h"
|
|
#include "pxhalp.h"
|
|
|
|
|
|
|
|
|
|
// Debug prints. see pxdisp.c
|
|
#include <stdarg.h>
|
|
|
|
VOID HalpDebugPrint( PCHAR Format, ... );
|
|
VOID HalpForceDisplay( PCHAR Format, ... );
|
|
|
|
//
|
|
// 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 HalpHandlerForBus HaliHandlerForBus
|
|
|
|
#define SPRANGEPOOL NonPagedPool // for now, until crashdump is fixed
|
|
//
|
|
// Define function prototypes.
|
|
//
|
|
|
|
BOOLEAN
|
|
HalpGrowMapBuffers(
|
|
PADAPTER_OBJECT AdapterObject,
|
|
ULONG Amount
|
|
);
|
|
|
|
PADAPTER_OBJECT
|
|
HalpAllocateAdapter(
|
|
IN ULONG MapRegistersPerChannel,
|
|
IN PVOID AdapterBaseVa,
|
|
IN PVOID MapRegisterBase
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
HalpCalibrateTimingValues (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitializeInterrupts (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpIpiInterrupt (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitializeDisplay (
|
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpMapIoSpace (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitPciIsaBridge (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpHandleIoError (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitPlanar (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpHandleMemoryError(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpHandleProfileInterrupt (
|
|
IN PKINTERRUPT Interrupt,
|
|
IN PVOID ServiceContext,
|
|
IN PVOID TrapFrame
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
HalpInitSuperIo(
|
|
VOID
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
NTSTATUS
|
|
HalpAdjustResourceListLimits (
|
|
IN PBUS_HANDLER BusHandler,
|
|
IN PBUS_HANDLER RootHandler,
|
|
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList,
|
|
IN ULONG MinimumMemoryAddress,
|
|
IN ULONG MaximumMemoryAddress,
|
|
IN ULONG MinimumPrefetchMemoryAddress,
|
|
IN ULONG MaximumPrefetchMemoryAddress,
|
|
IN BOOLEAN LimitedIOSupport,
|
|
IN ULONG MinimumPortAddress,
|
|
IN ULONG MaximumPortAddress,
|
|
IN PUCHAR IrqTable,
|
|
IN ULONG IrqTableLength,
|
|
IN ULONG MinimumDmaChannel,
|
|
IN ULONG MaximumDmaChannel
|
|
);
|
|
|
|
|
|
//
|
|
// 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 HalpNewTimeIncrement;
|
|
|
|
|
|
#define IRQ_VALID 0x01
|
|
#define IRQ_PREFERRED 0x02
|
|
|
|
#endif // _HALP_
|