diff options
Diffstat (limited to 'private/ntos/boot/veneer/vrheader.h')
-rw-r--r-- | private/ntos/boot/veneer/vrheader.h | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/private/ntos/boot/veneer/vrheader.h b/private/ntos/boot/veneer/vrheader.h new file mode 100644 index 000000000..8f757bb1e --- /dev/null +++ b/private/ntos/boot/veneer/vrheader.h @@ -0,0 +1,325 @@ +/* + * Copyright (c) 1995 FirePower Systems, Inc. + * + * $RCSfile: vrheader.h $ + * $Revision: 1.10 $ + * $Date: 1996/01/11 08:03:25 $ + * $Locker: $ + * + */ + +/* + * From nt/public/sdk/inc/ntdef.h + */ + +// +// Physical address. +// + +typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; + +// +// Cardinal Data Types [0 - 2**N-2) +// + +typedef char CCHAR; // winnt +typedef short CSHORT; +typedef ULONG CLONG; + +typedef CCHAR *PCCHAR; +typedef CSHORT *PCSHORT; +typedef CLONG *PCLONG; + + + +/* + * From nt/public/sdk/inc/ntconfig.h + */ + +// +// Defines the Type in the RESOURCE_DESCRIPTOR +// + +typedef enum _CM_RESOURCE_TYPE { + CmResourceTypeNull = 0, // Reserved + CmResourceTypePort, + CmResourceTypeInterrupt, + CmResourceTypeMemory, + CmResourceTypeDma, + CmResourceTypeDeviceSpecific, + CmResourceTypeMaximum +} CM_RESOURCE_TYPE; + +// +// Defines the ShareDisposition in the RESOURCE_DESCRIPTOR +// + +typedef enum _CM_SHARE_DISPOSITION { + CmResourceShareUndetermined = 0, // Reserved + CmResourceShareDeviceExclusive, + CmResourceShareDriverExclusive, + CmResourceShareShared +} CM_SHARE_DISPOSITION; + +// +// Define the bit masks for Flags when type is CmResourceTypeInterrupt +// + +#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0 +#define CM_RESOURCE_INTERRUPT_LATCHED 1 + +// +// Define the bit masks for Flags when type is CmResourceTypeInterrupt +// + +#define CM_RESOURCE_MEMORY_READ_WRITE 0 +#define CM_RESOURCE_MEMORY_READ_ONLY 1 +#define CM_RESOURCE_MEMORY_WRITE_ONLY 2 + +// +// Define the bit masks for Flags when type is CmResourceTypePort +// + +#define CM_RESOURCE_PORT_MEMORY 0 +#define CM_RESOURCE_PORT_IO 1 + + +// +// This structure defines one type of resource used by a driver. +// +// There can only be *1* DeviceSpecificData block. It must be located at +// the end of all resource descriptors in a full descriptor block. +// + +// +// BUGBUG Make sure alignment is made properly by compiler; otherwise move +// flags back to the top of the structure (common to all members of the +// union). +// + +#pragma pack(4) +typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { + UCHAR Type; + UCHAR ShareDisposition; + USHORT Flags; + union { + + // + // Range of port numbers, inclusive. These are physical, bus + // relative. The value should be the same as the one passed to + // HalTranslateBusAddress(). + // + + struct { + PHYSICAL_ADDRESS Start; + ULONG Length; + } Port; + + // + // IRQL and vector. Should be same values as were passed to + // HalGetInterruptVector(). + // + + struct { + ULONG Level; + ULONG Vector; + ULONG Affinity; + } Interrupt; + + // + // Range of memory addresses, inclusive. These are physical, bus + // relative. The value should be the same as the one passed to + // HalTranslateBusAddress(). + // + + struct { + PHYSICAL_ADDRESS Start; // 64 bit physical addresses. + ULONG Length; + } Memory; + + // + // Physical DMA channel. + // + + struct { + ULONG Channel; + ULONG Port; + ULONG Reserved1; + } Dma; + + // + // Device Specific information defined by the driver. + // The DataSize field indicates the size of the data in bytes. The + // data is located immediately after the DeviceSpecificData field in + // the structure. + // + + struct { + ULONG DataSize; + ULONG Reserved1; + ULONG Reserved2; + } DeviceSpecificData; + } u; +} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR; +#pragma pack() + +// +// A Partial Resource List is what can be found in the ARC firmware +// or will be generated by ntdetect.com. +// The configuration manager will transform this structure into a Full +// resource descriptor when it is about to store it in the regsitry. +// +// Note: There must a be a convention to the order of fields of same type, +// (defined on a device by device basis) so that the fields can make sense +// to a driver (i.e. when multiple memory ranges are necessary). +// + +typedef struct _CM_PARTIAL_RESOURCE_LIST { + USHORT Version; + USHORT Revision; + ULONG Count; + CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]; +} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST; + +// +// Define the structures used to interpret configuration data of +// \\Registry\machine\hardware\description tree. +// Basically, these structures are used to interpret component +// sepcific data. +// + +// +// Define DEVICE_FLAGS +// + +typedef struct _DEVICE_FLAGS { + ULONG Failed : 1; + ULONG ReadOnly : 1; + ULONG Removable : 1; + ULONG ConsoleIn : 1; + ULONG ConsoleOut : 1; + ULONG Input : 1; + ULONG Output : 1; +} DEVICE_FLAGS, *PDEVICE_FLAGS; + +// +// Define Component Information structure +// + +typedef struct _CM_COMPONENT_INFORMATION { + DEVICE_FLAGS Flags; + ULONG Version; + ULONG Key; + ULONG AffinityMask; +} CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION; + + +/* + * From nt/public/sdk/inc/ntppc.h + */ + +#define KSEG0_BASE 0x00000000 /* ? 0x800000000 */ + + +/* + * From nt/private/ntos/inc/nthal.h + */ + +// +// Time conversion routines +// + +typedef struct _TIME_FIELDS { + CSHORT Year; // range [1601...] + CSHORT Month; // range [1..12] + CSHORT Day; // range [1..31] + CSHORT Hour; // range [0..23] + CSHORT Minute; // range [0..59] + CSHORT Second; // range [0..59] + CSHORT Milliseconds;// range [0..999] + CSHORT Weekday; // range [0..6] == [Sunday..Saturday] +} TIME_FIELDS; +typedef TIME_FIELDS *PTIME_FIELDS; + +// +// PowerPC page size = 4 KB +// + +#define PAGE_SIZE (ULONG)0x1000 + +// +// Define the number of trailing zeroes in a page aligned virtual address. +// This is used as the shift count when shifting virtual addresses to +// virtual page numbers. +// + +#define PAGE_SHIFT 12L + +// +// The device data record for the Floppy peripheral. +// + +typedef struct _CM_FLOPPY_DEVICE_DATA { + USHORT Version; + USHORT Revision; + CHAR Size[8]; + ULONG MaxDensity; + ULONG MountDensity; + // + // New data fields for version >= 2.0 + // + UCHAR StepRateHeadUnloadTime; + UCHAR HeadLoadTime; + UCHAR MotorOffTime; + UCHAR SectorLengthCode; + UCHAR SectorPerTrack; + UCHAR ReadWriteGapLength; + UCHAR DataTransferLength; + UCHAR FormatGapLength; + UCHAR FormatFillCharacter; + UCHAR HeadSettleTime; + UCHAR MotorSettleTime; + UCHAR MaximumTrackValue; + UCHAR DataTransferRate; +} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA; + +// +// The device data record for the serial controller. +// + +typedef struct _CM_SERIAL_DEVICE_DATA { + USHORT Version; + USHORT Revision; + ULONG BaudClock; +} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA; + +/* +******************************************************************************** +** +** The following is derived from fparch.h in the nthals\halfire\ppc +** directory +** +** +** +******************************************************************************** +*/ +// +// These names are not sacrosanct, and should be revised upon input from Susan, +// Jim, and anyone else interested. +// +enum scope_use { + ENG, + MFG, + TEST, + CUST + }; + +enum rel_state { + GENERAL, + OFFICIAL, + TESTING, + CONTROLLED, + LAB + }; + + |