1999-07-28 20:28:47 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 1999, Stefan Esser <se@freebsd.org>
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice unmodified, this list of conditions, and the following
|
|
|
|
* disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*
|
1999-08-28 01:08:13 +00:00
|
|
|
* $FreeBSD$
|
1999-07-28 20:28:47 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _ARC_TYPES_H_
|
|
|
|
#define _ARC_TYPES_H_
|
|
|
|
|
|
|
|
#define ESUCCESS 0
|
|
|
|
|
|
|
|
typedef u_int8_t BOOLEAN;
|
|
|
|
typedef u_int16_t WCHAR;
|
|
|
|
|
|
|
|
typedef int64_t fpos_t;
|
|
|
|
|
|
|
|
/* XXX the following types are defined in ARC but are not currently used */
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
typedef void VOID;
|
|
|
|
|
|
|
|
typedef int8_t CHAR;
|
|
|
|
typedef int16_t SHORT;
|
|
|
|
typedef int32_t LONG;
|
|
|
|
typedef int64_t LONGLONG;
|
|
|
|
|
|
|
|
typedef u_int8_t UCHAR;
|
|
|
|
typedef u_int16_t USHORT;
|
|
|
|
typedef u_int32_t ULONG;
|
|
|
|
typedef u_int64_t ULONGLONG;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The following ARC types conflict with <sys/types.h> !
|
|
|
|
* They are not used in the ARC wrapper functions or ARC structs
|
|
|
|
* currently, and thus may be left alone for now. In case the
|
|
|
|
* wrappers or structs are converted to use them, it is suggested
|
|
|
|
* to prefix them with "arc" to avoid type clashes (if linking
|
|
|
|
* against libstand.a which expects the FreeBSD declarations).
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef u_int32_t size_t;
|
|
|
|
typedef int64_t clock_t;
|
|
|
|
typedef int64_t off_t;
|
|
|
|
typedef int32_t time_t;
|
|
|
|
|
|
|
|
#endif /* 0 */
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int32_t adr;
|
|
|
|
} arcptr;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
u_int32_t SPBSignature;
|
|
|
|
u_int32_t SPBLength;
|
|
|
|
u_int16_t Version;
|
|
|
|
u_int16_t Revision;
|
|
|
|
arcptr RestartBlockP;
|
|
|
|
arcptr DebugBlockP;
|
|
|
|
arcptr GEVectorP;
|
|
|
|
arcptr ULTBMissVectorP;
|
|
|
|
u_int32_t FirmwareVectorLength;
|
|
|
|
arcptr FirmwareVectorP;
|
|
|
|
u_int32_t PrivateVectorLength;
|
|
|
|
arcptr PrivateVectorP;
|
|
|
|
u_int32_t AdapterCount;
|
|
|
|
struct {
|
|
|
|
u_int32_t AdapterType;
|
|
|
|
u_int32_t AdapterVectorLength;
|
|
|
|
arcptr AdapterVectorP;
|
|
|
|
} Adapters[1];
|
|
|
|
} SPB;
|
|
|
|
|
|
|
|
/* ARC function specific data types */
|
|
|
|
|
|
|
|
typedef enum{
|
|
|
|
SystemClass,
|
|
|
|
ProcessorClass,
|
|
|
|
CacheClass,
|
|
|
|
AdapterClass,
|
|
|
|
ControllerClass,
|
|
|
|
PeripheralClass,
|
|
|
|
MemoryClass,
|
|
|
|
MaximumClass
|
|
|
|
} CONFIGURATION_CLASS;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
ArcSystem,
|
|
|
|
CentralProcessor,
|
|
|
|
FloatingPointProcessor,
|
|
|
|
PrimaryIcache,
|
|
|
|
PrimaryDcache,
|
|
|
|
SecondaryIcache,
|
|
|
|
SecondaryDcache,
|
|
|
|
SecondaryCache,
|
|
|
|
EisaAdapter,
|
|
|
|
TcAdapter,
|
|
|
|
ScsiAdapter,
|
|
|
|
DtiAdapter,
|
|
|
|
MultiFunctionAdapter,
|
|
|
|
DiskController,
|
|
|
|
TapeController,
|
|
|
|
CdromController,
|
|
|
|
WormController,
|
|
|
|
SerialController,
|
|
|
|
NetworkController,
|
|
|
|
DisplayController,
|
|
|
|
ParallelController,
|
|
|
|
PointerController,
|
|
|
|
KeyboardController,
|
|
|
|
AudioController,
|
|
|
|
OtherController,
|
|
|
|
DiskPeripheral,
|
|
|
|
FloppyDiskPeripheral,
|
|
|
|
TapePeripheral,
|
|
|
|
ModemPeripheral,
|
|
|
|
MonitorPeripheral,
|
|
|
|
PrinterPeripheral,
|
|
|
|
PointerPeripheral,
|
|
|
|
KeyboardPeripheral,
|
|
|
|
TerminalPeripheral,
|
|
|
|
OtherPeripheral,
|
|
|
|
LinePeripheral,
|
|
|
|
NetworkPeripheral,
|
|
|
|
SystemMemory,
|
|
|
|
MaximumType
|
|
|
|
} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
Failed = 0x01,
|
|
|
|
ReadOnly = 0x02,
|
|
|
|
Removable = 0x04,
|
|
|
|
ConsoleIn = 0x08,
|
|
|
|
ConsoleOut = 0x10,
|
|
|
|
Input = 0x20,
|
|
|
|
Output = 0x40
|
|
|
|
} IDENTIFIERFLAG;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
CONFIGURATION_CLASS Class;
|
|
|
|
CONFIGURATION_TYPE Type;
|
|
|
|
IDENTIFIERFLAG Flags;
|
|
|
|
u_int16_t Version;
|
|
|
|
u_int16_t Revision;
|
|
|
|
u_int32_t Key;
|
|
|
|
u_int32_t AffinityMask;
|
|
|
|
u_int32_t ConfigurationDataLength;
|
|
|
|
u_int32_t IdentifierLength;
|
|
|
|
arcptr Identifier;
|
|
|
|
} CONFIGURATION_COMPONENT, *PCONFIGURATION_COMPONENT;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int8_t VendorId[8];
|
|
|
|
int8_t ProductId[8];
|
|
|
|
} SYSTEM_ID;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
MemoryExceptionBlock,
|
|
|
|
MemorySystemBlock,
|
|
|
|
MemoryFree,
|
|
|
|
MemoryBad,
|
|
|
|
MemoryLoadedProgram,
|
|
|
|
MemoryFirmwareTemporary,
|
|
|
|
MemoryFirmwarePermanent,
|
|
|
|
MemoryFreeContiguous,
|
|
|
|
MemorySpecialMemory,
|
|
|
|
MemoryMaximum
|
|
|
|
} MEMORY_TYPE;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
MEMORY_TYPE Type;
|
|
|
|
u_int32_t BasePage;
|
|
|
|
u_int32_t PageCount;
|
|
|
|
} MEMORY_DESCRIPTOR;
|
|
|
|
|
|
|
|
typedef struct _TIME_FIELDS{
|
|
|
|
u_int16_t Year; /* 1601 .. */
|
|
|
|
u_int16_t Month; /* 1 .. 12 */
|
|
|
|
u_int16_t Day; /* 1 .. 31 */
|
|
|
|
u_int16_t Hour; /* 0 .. 23 */
|
|
|
|
u_int16_t Minute; /* 0 .. 59 */
|
|
|
|
u_int16_t Second; /* 0 .. 59 */
|
|
|
|
u_int16_t Milliseconds; /* 0 .. 999 */
|
|
|
|
u_int16_t Weekday; /* 0 .. 6 = Sunday .. Saturday */
|
|
|
|
} TIME_FIELDS, *PTIME_FIELDS;
|
|
|
|
|
|
|
|
#define StandardIn 0
|
|
|
|
#define StandardOut 1
|
|
|
|
|
|
|
|
#define ReadOnlyFile 0x01
|
|
|
|
#define HiddenFile 0x02
|
|
|
|
#define SystemFile 0x04
|
|
|
|
#define ArchiveFile 0x08
|
|
|
|
#define DirectoryFile 0x10
|
|
|
|
#define DeleteFile 0x20
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
u_int32_t FileNameLength;
|
|
|
|
u_int8_t FileAttribute;
|
|
|
|
int8_t FileName[32];
|
|
|
|
} DIRECTORY_ENTRY;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
OpenReadOnly,
|
|
|
|
OpenWriteOnly,
|
|
|
|
OpenReadWrite,
|
|
|
|
CreateWriteOnly,
|
|
|
|
CreateReadWrite,
|
|
|
|
SupersedeWriteOnly,
|
|
|
|
SupersedeReadWrite,
|
|
|
|
OpenDirectory,
|
|
|
|
CreateDirectory,
|
|
|
|
OpenMaximumMode
|
|
|
|
} OPEN_MODE;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
SeekAbsolute,
|
|
|
|
SeekRelative,
|
|
|
|
SeekMaximum
|
|
|
|
} SEEK_MODE;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
MountLoadMedia,
|
|
|
|
MountUnloadMedia,
|
|
|
|
MountMaximum
|
|
|
|
} MOUNT_OPERATION;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
fpos_t StartingAddress;
|
|
|
|
fpos_t EndingAddress;
|
|
|
|
fpos_t CurrentAddress;
|
|
|
|
CONFIGURATION_TYPE Type;
|
|
|
|
u_int32_t FileNameLength;
|
|
|
|
u_int8_t Attributes;
|
|
|
|
int8_t FileName[32];
|
|
|
|
} FILE_INFORMATION;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
u_int16_t CursorXPosition;
|
|
|
|
u_int16_t CursorYPosition;
|
|
|
|
u_int16_t CursorMaxXPosition;
|
|
|
|
u_int16_t CursorMaxYPosition;
|
|
|
|
u_int8_t ForegroundColor;
|
|
|
|
u_int8_t BackgroundColor;
|
|
|
|
BOOLEAN HighIntensity;
|
|
|
|
BOOLEAN Underscored;
|
|
|
|
BOOLEAN ReverseVideo;
|
|
|
|
} ARC_DISPLAY_STATUS;
|
|
|
|
|
|
|
|
/* vendor function specific data types */
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
u_int32_t ProcessorId;
|
|
|
|
u_int32_t ProcessorRevision;
|
|
|
|
u_int32_t ProcessorPageSize;
|
|
|
|
u_int32_t NumberOfPhysicalAddressBits;
|
|
|
|
u_int32_t MaximumAddressSpaceNumber;
|
|
|
|
u_int32_t ProcessorCycleCounterPeriod;
|
|
|
|
u_int32_t SystemRevision;
|
|
|
|
u_int8_t SystemSerialNumber[16];
|
|
|
|
u_int8_t FirmwareVersion[16];
|
|
|
|
u_int8_t FirmwareBuildTimeStamp[12];
|
|
|
|
} EXTENDED_SYSTEM_INFORMATION, *PEXTENDED_SYSTEM_INFORMATION;
|
|
|
|
|
|
|
|
#endif /* _ARC_TYPES_H_ */
|