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.
367 lines
6.7 KiB
367 lines
6.7 KiB
// #pragma comment(exestr, "@(#) halp.h 1.1 95/09/28 15:33:24 nec")
|
|
/*++ 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:
|
|
|
|
L0001 1994.9.20 kbnes!kuriyama(A)
|
|
-Modify for R94A original halfxs\mips\halp.h
|
|
-add #include"r94axxx.h "
|
|
L0002 Thu Oct 13 18:09:33 JST 1994 kbnes!kuriyama(A)
|
|
- Del HalpDisplayLED
|
|
- Del HalpLEDDisplayLock
|
|
- Del HalpLEDControlBase
|
|
- Add READ_REGISTER_DWORD
|
|
ADD001 [email protected] Mon Oct 17 20:31:21 JST 1994
|
|
- add data definitions for HalReportResourceUsage
|
|
CMP001 [email protected] Tue Oct 18 15:15:11 JST 1994
|
|
- resolve compile error
|
|
ADD002 [email protected] Fri Nov 25 15:46:03 1994
|
|
add HalpGetStatusRegister() definition
|
|
S0003 [email protected] Fri Mar 31 16:51:00 JST 1995
|
|
add _IPI_LIMIT_ support
|
|
H0004 [email protected] Sun Jun 25 14:39:38 1995
|
|
- Merge build 1057
|
|
H0005 [email protected] Thu Jul 20 20:03:30 1995
|
|
- Merge code for ESM from J94C
|
|
H0006 [email protected] Sat Aug 12 19:23:03 1995
|
|
- Removed _J94C_ definitions.
|
|
_J94C_ definition indicates that the status of
|
|
the dump switch can acknowledge from Self-test
|
|
register.
|
|
S0007 [email protected] Wed Aug 23 20:18:18 JST 1995
|
|
- change for x86bios support
|
|
H0008 [email protected] Wed Aug 30 12:23:36 1995
|
|
- add spinlock to support PCI Fast Back-to-back transfer.
|
|
|
|
--*/
|
|
|
|
#ifndef _HALP_
|
|
#define _HALP_
|
|
|
|
#if defined(NT_UP)
|
|
|
|
#undef NT_UP
|
|
|
|
#endif
|
|
|
|
#include "nthal.h"
|
|
#include "hal.h" // H0004
|
|
|
|
#ifndef _HALI_ // H0004
|
|
#include "..\inc\hali.h"
|
|
#endif
|
|
|
|
#if defined(_DUO_)
|
|
|
|
#if defined(_R94A_)
|
|
|
|
#include "r94adma.h"
|
|
#include "r94adef.h"
|
|
#include "r94aint.h"
|
|
|
|
#else // _R94A_
|
|
|
|
#include "duodma.h"
|
|
#include "duodef.h"
|
|
#include "duoint.h"
|
|
|
|
#endif // _R94A_
|
|
|
|
#endif
|
|
|
|
#if defined(_JAZZ_)
|
|
|
|
#include "jazzdma.h"
|
|
#include "jazzdef.h"
|
|
#include "jazzint.h"
|
|
|
|
#endif
|
|
|
|
#include "jxhalp.h"
|
|
|
|
#if defined(USE_BIOS_EMULATOR) // H0004
|
|
|
|
#include "xm86.h"
|
|
#include "x86new.h"
|
|
|
|
#endif
|
|
|
|
|
|
//
|
|
// Define function prototypes.
|
|
//
|
|
|
|
PADAPTER_OBJECT
|
|
HalpAllocateAdapter(
|
|
IN ULONG MapRegistersPerChannel,
|
|
IN PVOID AdapterBaseVa,
|
|
IN PVOID MapRegisterBase
|
|
);
|
|
|
|
ULONG
|
|
HalpAllocateTbEntry (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpFreeTbEntry (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpCacheErrorRoutine (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpCalibrateStall (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpClockInterrupt0 (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpClockInterrupt1 (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpCreateDmaStructures (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpDmaDispatch(
|
|
IN PKINTERRUPT Interrupt,
|
|
IN PVOID ServiceContext
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitializeDisplay0 (
|
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitializeDisplay1 (
|
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpInitializeInterrupts (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpIpiInterrupt (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpMapFixedTbEntries (
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpMapIoSpace (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpProfileInterrupt (
|
|
VOID
|
|
);
|
|
|
|
#if defined(R4000)
|
|
|
|
ULONG
|
|
HalpReadCountRegister (
|
|
VOID
|
|
);
|
|
|
|
ULONG
|
|
HalpWriteCompareRegisterAndClear (
|
|
IN ULONG Value
|
|
);
|
|
|
|
#endif
|
|
|
|
VOID
|
|
HalpStallInterrupt (
|
|
VOID
|
|
);
|
|
|
|
// S0007
|
|
// change prototype HalpInitializeX86DisplayAdapter()
|
|
|
|
BOOLEAN
|
|
HalpInitializeX86DisplayAdapter(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpResetX86DisplayAdapter(
|
|
VOID
|
|
);
|
|
|
|
#if defined(_R94A_)
|
|
VOID
|
|
READ_REGISTER_DWORD(
|
|
PLARGE_INTEGER,
|
|
PVOID
|
|
);
|
|
|
|
VOID
|
|
WRITE_REGISTER_DWORD(
|
|
PLARGE_INTEGER,
|
|
PVOID
|
|
);
|
|
|
|
VOID
|
|
HalpGetStatusRegister (
|
|
IN PULONG Variable
|
|
);
|
|
|
|
BOOLEAN
|
|
HalNvramWrite(
|
|
ULONG Offset,
|
|
ULONG Count,
|
|
PVOID Buffer
|
|
);
|
|
|
|
BOOLEAN
|
|
HalNvramRead(
|
|
ULONG Offset,
|
|
ULONG Count,
|
|
PVOID Buffer
|
|
);
|
|
|
|
BOOLEAN
|
|
HalpNvramReadWrite(
|
|
ULONG Offset,
|
|
ULONG Count,
|
|
PVOID Buffer,
|
|
ULONG Write
|
|
);
|
|
#endif
|
|
|
|
//
|
|
// Define external references.
|
|
//
|
|
|
|
extern KSPIN_LOCK HalpBeepLock;
|
|
extern USHORT HalpBuiltinInterruptEnable;
|
|
extern ULONG HalpCurrentTimeIncrement;
|
|
extern KSPIN_LOCK HalpDisplayAdapterLock;
|
|
extern KAFFINITY HalpEisaBusAffinity;
|
|
extern ULONG HalpNextIntervalCount;
|
|
extern ULONG HalpNextTimeIncrement;
|
|
extern ULONG HalpNewTimeIncrement;
|
|
extern ULONG HalpProfileCountRate;
|
|
extern ULONG HalpStallScaleFactor;
|
|
extern KSPIN_LOCK HalpSystemInterruptLock;
|
|
extern KSPIN_LOCK HalpIpiRequestLock;
|
|
extern KSPIN_LOCK Ecc1bitDisableLock;// H005
|
|
extern KSPIN_LOCK Ecc1bitRoutineLock;// H005
|
|
extern KSPIN_LOCK HalpPCIBackToBackLock; // H008
|
|
|
|
|
|
// ADD001
|
|
//
|
|
// Resource usage information
|
|
//
|
|
|
|
#if !defined (_R94A_)
|
|
#pragma pack(1)
|
|
#endif
|
|
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;
|
|
#if !defined (_R94A_)
|
|
#pragma pack()
|
|
#endif
|
|
|
|
#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;
|
|
// CMP001
|
|
extern ADDRESS_USAGE HalpDefaultPcIoSpace;
|
|
extern ADDRESS_USAGE HalpEisaIoSpace;
|
|
extern ADDRESS_USAGE HalpMapRegisterMemorySpace;
|
|
|
|
#define HalpRegisterAddressUsage(a) \
|
|
(a)->Next = HalpAddressUsageList, HalpAddressUsageList = (a);
|
|
|
|
// CMP001
|
|
#define IRQ_PREFERRED 0x02
|
|
#define IRQ_VALID 0x01
|
|
|
|
// CMP001
|
|
VOID
|
|
HalpReportResourceUsage (
|
|
IN PUNICODE_STRING HalName,
|
|
IN INTERFACE_TYPE DeviceInterfaceToUse
|
|
);
|
|
|
|
//
|
|
// H0004: from halx86/i386/halp.h
|
|
// Temp definitions to thunk into supporting new bus extension format
|
|
//
|
|
|
|
VOID
|
|
HalpRegisterInternalBusHandlers (
|
|
VOID
|
|
);
|
|
|
|
PBUS_HANDLER
|
|
HalpAllocateBusHandler (
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN BUS_DATA_TYPE BusDataType,
|
|
IN ULONG BusNumber,
|
|
IN INTERFACE_TYPE ParentBusDataType,
|
|
IN ULONG ParentBusNumber,
|
|
IN ULONG BusSpecificData
|
|
);
|
|
|
|
#define HalpHandlerForBus HaliHandlerForBus
|
|
#define HalpSetBusHandlerParent(c,p) (c)->ParentHandler = p;
|
|
|
|
#if DBG
|
|
int printNvramData(void);
|
|
#endif // DBG
|
|
|
|
#endif // _HALP_
|