/branches/dd/boot/arch/ia64/loader/gefi/inc/efipart.h |
---|
0,0 → 1,61 |
#ifndef _EFI_PART_H |
#define _EFI_PART_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efipart.h |
Abstract: |
Info about disk partitions and Master Boot Records |
Revision History |
--*/ |
// |
// |
// |
#define EFI_PARTITION 0xef |
#define MBR_SIZE 512 |
#pragma pack(1) |
typedef struct { |
UINT8 BootIndicator; |
UINT8 StartHead; |
UINT8 StartSector; |
UINT8 StartTrack; |
UINT8 OSIndicator; |
UINT8 EndHead; |
UINT8 EndSector; |
UINT8 EndTrack; |
UINT8 StartingLBA[4]; |
UINT8 SizeInLBA[4]; |
} MBR_PARTITION_RECORD; |
#define EXTRACT_UINT32(D) (UINT32)(D[0] | (D[1] << 8) | (D[2] << 16) | (D[3] << 24)) |
#define MBR_SIGNATURE 0xaa55 |
#define MIN_MBR_DEVICE_SIZE 0x80000 |
#define MBR_ERRATA_PAD 0x40000 // 128 MB |
#define MAX_MBR_PARTITIONS 4 |
typedef struct { |
UINT8 BootStrapCode[440]; |
UINT8 UniqueMbrSignature[4]; |
UINT8 Unknown[2]; |
MBR_PARTITION_RECORD Partition[MAX_MBR_PARTITIONS]; |
UINT16 Signature; |
} MASTER_BOOT_RECORD; |
#pragma pack() |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efilib.h |
---|
0,0 → 1,879 |
#ifndef _EFILIB_INCLUDE_ |
#define _EFILIB_INCLUDE_ |
/*++ |
Copyright (c) 2000 Intel Corporation |
Module Name: |
efilib.h |
Abstract: |
EFI library functions |
Revision History |
--*/ |
#include "efidebug.h" |
#include "efipart.h" |
#include "efilibplat.h" |
#include "efilink.h" |
#include "efirtlib.h" |
#include "pci22.h" |
#include "libsmbios.h" |
// |
// Public read-only data in the EFI library |
// |
extern EFI_SYSTEM_TABLE *ST; |
extern EFI_BOOT_SERVICES *BS; |
extern EFI_RUNTIME_SERVICES *RT; |
extern EFI_GUID DevicePathProtocol; |
extern EFI_GUID LoadedImageProtocol; |
extern EFI_GUID TextInProtocol; |
extern EFI_GUID TextOutProtocol; |
extern EFI_GUID BlockIoProtocol; |
extern EFI_GUID DiskIoProtocol; |
extern EFI_GUID FileSystemProtocol; |
extern EFI_GUID LoadFileProtocol; |
extern EFI_GUID DeviceIoProtocol; |
extern EFI_GUID VariableStoreProtocol; |
extern EFI_GUID LegacyBootProtocol; |
extern EFI_GUID UnicodeCollationProtocol; |
extern EFI_GUID SerialIoProtocol; |
extern EFI_GUID VgaClassProtocol; |
extern EFI_GUID TextOutSpliterProtocol; |
extern EFI_GUID ErrorOutSpliterProtocol; |
extern EFI_GUID TextInSpliterProtocol; |
extern EFI_GUID SimpleNetworkProtocol; |
extern EFI_GUID PxeBaseCodeProtocol; |
extern EFI_GUID PxeCallbackProtocol; |
extern EFI_GUID NetworkInterfaceIdentifierProtocol; |
extern EFI_GUID UiProtocol; |
extern EFI_GUID InternalShellProtocol; |
extern EFI_GUID EfiGlobalVariable; |
extern EFI_GUID GenericFileInfo; |
extern EFI_GUID FileSystemInfo; |
extern EFI_GUID FileSystemVolumeLabelInfo; |
extern EFI_GUID PcAnsiProtocol; |
extern EFI_GUID Vt100Protocol; |
extern EFI_GUID NullGuid; |
extern EFI_GUID UnknownDevice; |
extern EFI_GUID EfiPartTypeSystemPartitionGuid; |
extern EFI_GUID EfiPartTypeLegacyMbrGuid; |
extern EFI_GUID MpsTableGuid; |
extern EFI_GUID AcpiTableGuid; |
extern EFI_GUID SMBIOSTableGuid; |
extern EFI_GUID SalSystemTableGuid; |
// |
// EFI Variable strings |
// |
#define LOAD_OPTION_ACTIVE 0x00000001 |
#define VarLanguageCodes L"LangCodes" |
#define VarLanguage L"Lang" |
#define VarTimeout L"Timeout" |
#define VarConsoleInp L"ConIn" |
#define VarConsoleOut L"ConOut" |
#define VarErrorOut L"ErrOut" |
#define VarBootOption L"Boot%04x" |
#define VarBootOrder L"BootOrder" |
#define VarBootNext L"BootNext" |
#define VarBootCurrent L"BootCurrent" |
#define VarDriverOption L"Driver%04x" |
#define VarDriverOrder L"DriverOrder" |
#define VarConsoleInpDev L"ConInDev" |
#define VarConsoleOutDev L"ConOutDev" |
#define VarErrorOutDev L"ErrOutDev" |
#define LanguageCodeEnglish "eng" |
extern EFI_DEVICE_PATH RootDevicePath[]; |
extern EFI_DEVICE_PATH EndDevicePath[]; |
extern EFI_DEVICE_PATH EndInstanceDevicePath[]; |
// |
// Other public data in the EFI library |
// |
extern EFI_MEMORY_TYPE PoolAllocationType; |
// |
// STATIC - Name is internal to the module |
// INTERNAL - Name is internal to the component (i.e., directory) |
// BOOTSERVCE - Name of a boot service function |
// |
#define STATIC |
#define INTERNAL |
#define BOOTSERVICE |
// |
// Prototypes |
// |
VOID |
InitializeLib ( |
IN EFI_HANDLE ImageHandle, |
IN EFI_SYSTEM_TABLE *SystemTable |
); |
VOID |
InitializeUnicodeSupport ( |
CHAR8 *LangCode |
); |
VOID |
EFIDebugVariable ( |
VOID |
); |
VOID |
SetCrc ( |
IN OUT EFI_TABLE_HEADER *Hdr |
); |
VOID |
SetCrcAltSize ( |
IN UINTN Size, |
IN OUT EFI_TABLE_HEADER *Hdr |
); |
BOOLEAN |
CheckCrc ( |
IN UINTN MaxSize, |
IN OUT EFI_TABLE_HEADER *Hdr |
); |
BOOLEAN |
CheckCrcAltSize ( |
IN UINTN MaxSize, |
IN UINTN Size, |
IN OUT EFI_TABLE_HEADER *Hdr |
); |
UINT32 |
CalculateCrc ( |
UINT8 *pt, |
UINTN Size |
); |
VOID |
ZeroMem ( |
IN VOID *Buffer, |
IN UINTN Size |
); |
VOID |
SetMem ( |
IN VOID *Buffer, |
IN UINTN Size, |
IN UINT8 Value |
); |
VOID |
CopyMem ( |
IN VOID *Dest, |
IN VOID *Src, |
IN UINTN len |
); |
INTN |
CompareMem ( |
IN VOID *Dest, |
IN VOID *Src, |
IN UINTN len |
); |
INTN |
StrCmp ( |
IN CHAR16 *s1, |
IN CHAR16 *s2 |
); |
INTN |
StrnCmp ( |
IN CHAR16 *s1, |
IN CHAR16 *s2, |
IN UINTN len |
); |
INTN |
StriCmp ( |
IN CHAR16 *s1, |
IN CHAR16 *s2 |
); |
VOID |
StrLwr ( |
IN CHAR16 *Str |
); |
VOID |
StrUpr ( |
IN CHAR16 *Str |
); |
VOID |
StrCpy ( |
IN CHAR16 *Dest, |
IN CHAR16 *Src |
); |
VOID |
StrCat ( |
IN CHAR16 *Dest, |
IN CHAR16 *Src |
); |
UINTN |
StrLen ( |
IN CHAR16 *s1 |
); |
UINTN |
StrSize ( |
IN CHAR16 *s1 |
); |
CHAR16 * |
StrDuplicate ( |
IN CHAR16 *Src |
); |
UINTN |
strlena ( |
IN CHAR8 *s1 |
); |
UINTN |
strcmpa ( |
IN CHAR8 *s1, |
IN CHAR8 *s2 |
); |
UINTN |
strncmpa ( |
IN CHAR8 *s1, |
IN CHAR8 *s2, |
IN UINTN len |
); |
UINTN |
xtoi ( |
CHAR16 *str |
); |
UINTN |
Atoi ( |
CHAR16 *str |
); |
BOOLEAN |
MetaMatch ( |
IN CHAR16 *String, |
IN CHAR16 *Pattern |
); |
BOOLEAN |
MetaiMatch ( |
IN CHAR16 *String, |
IN CHAR16 *Pattern |
); |
UINT64 |
LShiftU64 ( |
IN UINT64 Operand, |
IN UINTN Count |
); |
UINT64 |
RShiftU64 ( |
IN UINT64 Operand, |
IN UINTN Count |
); |
UINT64 |
MultU64x32 ( |
IN UINT64 Multiplicand, |
IN UINTN Multiplier |
); |
UINT64 |
DivU64x32 ( |
IN UINT64 Dividend, |
IN UINTN Divisor, |
OUT UINTN *Remainder OPTIONAL |
); |
VOID |
InitializeLock ( |
IN OUT FLOCK *Lock, |
IN EFI_TPL Priority |
); |
VOID |
AcquireLock ( |
IN FLOCK *Lock |
); |
VOID |
ReleaseLock ( |
IN FLOCK *Lock |
); |
INTN |
CompareGuid( |
IN EFI_GUID *Guid1, |
IN EFI_GUID *Guid2 |
); |
VOID * |
AllocatePool ( |
IN UINTN Size |
); |
VOID * |
AllocateZeroPool ( |
IN UINTN Size |
); |
VOID * |
ReallocatePool ( |
IN VOID *OldPool, |
IN UINTN OldSize, |
IN UINTN NewSize |
); |
VOID |
FreePool ( |
IN VOID *p |
); |
VOID |
Output ( |
IN CHAR16 *Str |
); |
VOID |
Input ( |
IN CHAR16 *Prompt OPTIONAL, |
OUT CHAR16 *InStr, |
IN UINTN StrLen |
); |
VOID |
IInput ( |
IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut, |
IN SIMPLE_INPUT_INTERFACE *ConIn, |
IN CHAR16 *Prompt OPTIONAL, |
OUT CHAR16 *InStr, |
IN UINTN StrLen |
); |
UINTN |
Print ( |
IN CHAR16 *fmt, |
... |
); |
UINTN |
SPrint ( |
OUT CHAR16 *Str, |
IN UINTN StrSize, |
IN CHAR16 *fmt, |
... |
); |
CHAR16 * |
PoolPrint ( |
IN CHAR16 *fmt, |
... |
); |
typedef struct { |
CHAR16 *str; |
UINTN len; |
UINTN maxlen; |
} POOL_PRINT; |
CHAR16 * |
CatPrint ( |
IN OUT POOL_PRINT *Str, |
IN CHAR16 *fmt, |
... |
); |
UINTN |
PrintAt ( |
IN UINTN Column, |
IN UINTN Row, |
IN CHAR16 *fmt, |
... |
); |
UINTN |
IPrint ( |
IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, |
IN CHAR16 *fmt, |
... |
); |
UINTN |
IPrintAt ( |
IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, |
IN UINTN Column, |
IN UINTN Row, |
IN CHAR16 *fmt, |
... |
); |
UINTN |
APrint ( |
IN CHAR8 *fmt, |
... |
); |
VOID |
ValueToHex ( |
IN CHAR16 *Buffer, |
IN UINT64 v |
); |
VOID |
ValueToString ( |
IN CHAR16 *Buffer, |
IN BOOLEAN Comma, |
IN INT64 v |
); |
VOID |
TimeToString ( |
OUT CHAR16 *Buffer, |
IN EFI_TIME *Time |
); |
VOID |
GuidToString ( |
OUT CHAR16 *Buffer, |
IN EFI_GUID *Guid |
); |
VOID |
StatusToString ( |
OUT CHAR16 *Buffer, |
EFI_STATUS Status |
); |
VOID |
DumpHex ( |
IN UINTN Indent, |
IN UINTN Offset, |
IN UINTN DataSize, |
IN VOID *UserData |
); |
BOOLEAN |
GrowBuffer( |
IN OUT EFI_STATUS *Status, |
IN OUT VOID **Buffer, |
IN UINTN BufferSize |
); |
EFI_MEMORY_DESCRIPTOR * |
LibMemoryMap ( |
OUT UINTN *NoEntries, |
OUT UINTN *MapKey, |
OUT UINTN *DescriptorSize, |
OUT UINT32 *DescriptorVersion |
); |
VOID * |
LibGetVariable ( |
IN CHAR16 *Name, |
IN EFI_GUID *VendorGuid |
); |
VOID * |
LibGetVariableAndSize ( |
IN CHAR16 *Name, |
IN EFI_GUID *VendorGuid, |
OUT UINTN *VarSize |
); |
EFI_STATUS |
LibDeleteVariable ( |
IN CHAR16 *VarName, |
IN EFI_GUID *VarGuid |
); |
EFI_STATUS |
LibInsertToTailOfBootOrder ( |
IN UINT16 BootOption, |
IN BOOLEAN OnlyInsertIfEmpty |
); |
EFI_STATUS |
LibLocateProtocol ( |
IN EFI_GUID *ProtocolGuid, |
OUT VOID **Interface |
); |
EFI_STATUS |
LibLocateHandle ( |
IN EFI_LOCATE_SEARCH_TYPE SearchType, |
IN EFI_GUID *Protocol OPTIONAL, |
IN VOID *SearchKey OPTIONAL, |
IN OUT UINTN *NoHandles, |
OUT EFI_HANDLE **Buffer |
); |
EFI_STATUS |
LibLocateHandleByDiskSignature ( |
IN UINT8 MBRType, |
IN UINT8 SignatureType, |
IN VOID *Signature, |
IN OUT UINTN *NoHandles, |
OUT EFI_HANDLE **Buffer |
); |
EFI_STATUS |
LibInstallProtocolInterfaces ( |
IN OUT EFI_HANDLE *Handle, |
... |
); |
VOID |
LibUninstallProtocolInterfaces ( |
IN EFI_HANDLE Handle, |
... |
); |
EFI_STATUS |
LibReinstallProtocolInterfaces ( |
IN OUT EFI_HANDLE *Handle, |
... |
); |
EFI_EVENT |
LibCreateProtocolNotifyEvent ( |
IN EFI_GUID *ProtocolGuid, |
IN EFI_TPL NotifyTpl, |
IN EFI_EVENT_NOTIFY NotifyFunction, |
IN VOID *NotifyContext, |
OUT VOID *Registration |
); |
EFI_STATUS |
WaitForSingleEvent ( |
IN EFI_EVENT Event, |
IN UINT64 Timeout OPTIONAL |
); |
VOID |
WaitForEventWithTimeout ( |
IN EFI_EVENT Event, |
IN UINTN Timeout, |
IN UINTN Row, |
IN UINTN Column, |
IN CHAR16 *String, |
IN EFI_INPUT_KEY TimeoutKey, |
OUT EFI_INPUT_KEY *Key |
); |
EFI_FILE_HANDLE |
LibOpenRoot ( |
IN EFI_HANDLE DeviceHandle |
); |
EFI_FILE_INFO * |
LibFileInfo ( |
IN EFI_FILE_HANDLE FHand |
); |
EFI_FILE_SYSTEM_INFO * |
LibFileSystemInfo ( |
IN EFI_FILE_HANDLE FHand |
); |
EFI_FILE_SYSTEM_VOLUME_LABEL_INFO * |
LibFileSystemVolumeLabelInfo ( |
IN EFI_FILE_HANDLE FHand |
); |
BOOLEAN |
ValidMBR( |
IN MASTER_BOOT_RECORD *Mbr, |
IN EFI_BLOCK_IO *BlkIo |
); |
BOOLEAN |
LibMatchDevicePaths ( |
IN EFI_DEVICE_PATH *Multi, |
IN EFI_DEVICE_PATH *Single |
); |
EFI_DEVICE_PATH * |
LibDuplicateDevicePathInstance ( |
IN EFI_DEVICE_PATH *DevPath |
); |
EFI_DEVICE_PATH * |
DevicePathFromHandle ( |
IN EFI_HANDLE Handle |
); |
EFI_DEVICE_PATH * |
DevicePathInstance ( |
IN OUT EFI_DEVICE_PATH **DevicePath, |
OUT UINTN *Size |
); |
UINTN |
DevicePathInstanceCount ( |
IN EFI_DEVICE_PATH *DevicePath |
); |
EFI_DEVICE_PATH * |
AppendDevicePath ( |
IN EFI_DEVICE_PATH *Src1, |
IN EFI_DEVICE_PATH *Src2 |
); |
EFI_DEVICE_PATH * |
AppendDevicePathNode ( |
IN EFI_DEVICE_PATH *Src1, |
IN EFI_DEVICE_PATH *Src2 |
); |
EFI_DEVICE_PATH* |
AppendDevicePathInstance ( |
IN EFI_DEVICE_PATH *Src, |
IN EFI_DEVICE_PATH *Instance |
); |
EFI_DEVICE_PATH * |
FileDevicePath ( |
IN EFI_HANDLE Device OPTIONAL, |
IN CHAR16 *FileName |
); |
UINTN |
DevicePathSize ( |
IN EFI_DEVICE_PATH *DevPath |
); |
EFI_DEVICE_PATH * |
DuplicateDevicePath ( |
IN EFI_DEVICE_PATH *DevPath |
); |
EFI_DEVICE_PATH * |
UnpackDevicePath ( |
IN EFI_DEVICE_PATH *DevPath |
); |
EFI_STATUS |
LibDevicePathToInterface ( |
IN EFI_GUID *Protocol, |
IN EFI_DEVICE_PATH *FilePath, |
OUT VOID **Interface |
); |
CHAR16 * |
DevicePathToStr ( |
EFI_DEVICE_PATH *DevPath |
); |
// |
// BugBug: I need my own include files |
// |
typedef struct { |
UINT8 Register; |
UINT8 Function; |
UINT8 Device; |
UINT8 Bus; |
UINT32 Reserved; |
} EFI_ADDRESS; |
typedef union { |
UINT64 Address; |
EFI_ADDRESS EfiAddress; |
} EFI_PCI_ADDRESS_UNION; |
EFI_STATUS |
PciFindDeviceClass ( |
IN OUT EFI_PCI_ADDRESS_UNION *Address, |
IN UINT8 BaseClass, |
IN UINT8 SubClass |
); |
EFI_STATUS |
PciFindDevice ( |
IN OUT EFI_PCI_ADDRESS_UNION *DeviceAddress, |
IN UINT16 VendorId, |
IN UINT16 DeviceId, |
IN OUT PCI_TYPE00 *Pci |
); |
// |
// SIMPLE_READ_FILE object used to access files |
// |
typedef VOID *SIMPLE_READ_FILE; |
EFI_STATUS |
OpenSimpleReadFile ( |
IN BOOLEAN BootPolicy, |
IN VOID *SourceBuffer OPTIONAL, |
IN UINTN SourceSize, |
IN OUT EFI_DEVICE_PATH **FilePath, |
OUT EFI_HANDLE *DeviceHandle, |
OUT SIMPLE_READ_FILE *SimpleReadHandle |
); |
EFI_STATUS |
ReadSimpleReadFile ( |
IN SIMPLE_READ_FILE SimpleReadHandle, |
IN UINTN Offset, |
IN OUT UINTN *ReadSize, |
OUT VOID *Buffer |
); |
VOID |
CloseSimpleReadFile ( |
IN SIMPLE_READ_FILE SimpleReadHandle |
); |
VOID |
InitializeGuid ( |
VOID |
); |
UINT8 |
DecimaltoBCD( |
IN UINT8 DecValue |
); |
UINT8 |
BCDtoDecimal( |
IN UINT8 BcdValue |
); |
EFI_STATUS |
LibGetSystemConfigurationTable( |
IN EFI_GUID *TableGuid, |
IN OUT VOID **Table |
); |
BOOLEAN |
LibIsValidTextGraphics ( |
IN CHAR16 Graphic, |
OUT CHAR8 *PcAnsi, OPTIONAL |
OUT CHAR8 *Ascii OPTIONAL |
); |
BOOLEAN |
IsValidAscii ( |
IN CHAR16 Ascii |
); |
BOOLEAN |
IsValidEfiCntlChar ( |
IN CHAR16 c |
); |
CHAR16 * |
LibGetUiString ( |
IN EFI_HANDLE Handle, |
IN UI_STRING_TYPE StringType, |
IN ISO_639_2 *LangCode, |
IN BOOLEAN ReturnDevicePathStrOnMismatch |
); |
CHAR8* |
LibGetSmbiosString ( |
IN SMBIOS_STRUCTURE_POINTER *Smbios, |
IN UINT16 StringNumber |
); |
EFI_STATUS |
LibGetSmbiosSystemGuidAndSerialNumber ( |
IN EFI_GUID *SystemGuid, |
OUT CHAR8 **SystemSerialNumber |
); |
EFI_STATUS |
InitializeGlobalIoDevice ( |
IN EFI_DEVICE_PATH *DevicePath, |
IN EFI_GUID *Protocol, |
IN CHAR8 *ErrorStr, |
OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs |
); |
UINT32 |
ReadPort ( |
IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, |
IN EFI_IO_WIDTH Width, |
IN UINTN Port |
); |
UINT32 |
WritePort ( |
IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, |
IN EFI_IO_WIDTH Width, |
IN UINTN Port, |
IN UINTN Data |
); |
UINT32 |
ReadPciConfig ( |
IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, |
IN EFI_IO_WIDTH Width, |
IN UINTN Port |
); |
UINT32 |
WritePciConfig ( |
IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, |
IN EFI_IO_WIDTH Width, |
IN UINTN Port, |
IN UINTN Data |
); |
extern EFI_DEVICE_IO_INTERFACE *GlobalIoFncs; |
#define outp(_Port, _DataByte) (UINT8)WritePort(GlobalIoFncs, IO_UINT8, (UINTN)_Port, (UINTN)_DataByte) |
#define inp(_Port) (UINT8)ReadPort(GlobalIoFncs, IO_UINT8, (UINTN)_Port) |
#define outpw(_Port, _DataByte) (UINT16)WritePort(GlobalIoFncs, IO_UINT16, (UINTN)_Port, (UINTN)_DataByte) |
#define inpw(_Port) (UINT16)ReadPort(GlobalIoFncs, IO_UINT16, (UINTN)_Port) |
#define outpd(_Port, _DataByte) (UINT32)WritePort(GlobalIoFncs, IO_UINT32, (UINTN)_Port, (UINTN)_DataByte) |
#define inpd(_Port) (UINT32)ReadPort(GlobalIoFncs, IO_UINT32, (UINTN)_Port) |
#define writepci8(_Addr, _DataByte) (UINT8)WritePciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr, (UINTN)_DataByte) |
#define readpci8(_Addr) (UINT8)ReadPciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr) |
#define writepci16(_Addr, _DataByte) (UINT16)WritePciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr, (UINTN)_DataByte) |
#define readpci16(_Addr) (UINT16)ReadPciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr) |
#define writepci32(_Addr, _DataByte) (UINT32)WritePciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr, (UINTN)_DataByte) |
#define readpci32(_Addr) (UINT32)ReadPciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr) |
#define Pause() WaitForSingleEvent (ST->ConIn->WaitForKey, 0) |
#define Port80(_PostCode) GlobalIoFncs->Io.Write (GlobalIoFncs, IO_UINT16, (UINT64)0x80, 1, &(_PostCode)) |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/inc.mak |
---|
0,0 → 1,19 |
INC_DEPS = $(INC_DEPS) \ |
efi.h \ |
efiapi.h \ |
efibind.h \ |
eficon.h \ |
efidebug.h \ |
efidef.h \ |
efidevp.h \ |
efierr.h \ |
efifs.h \ |
efilib.h \ |
efipart.h \ |
efiprot.h \ |
efipxe.h \ |
efivar.h \ |
pe.h \ |
stdarg.h |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efifs.h |
---|
0,0 → 1,116 |
#ifndef _EFI_FS_H |
#define _EFI_FS_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efifs.h |
Abstract: |
EFI File System structures |
Revision History |
--*/ |
// |
// EFI Partition header (normaly starts in LBA 1) |
// |
#define EFI_PARTITION_SIGNATURE 0x5053595320494249 |
#define EFI_PARTITION_REVISION 0x00010001 |
#define MIN_EFI_PARTITION_BLOCK_SIZE 512 |
#define EFI_PARTITION_LBA 1 |
typedef struct _EFI_PARTITION_HEADER { |
EFI_TABLE_HEADER Hdr; |
UINT32 DirectoryAllocationNumber; |
UINT32 BlockSize; |
EFI_LBA FirstUsableLba; |
EFI_LBA LastUsableLba; |
EFI_LBA UnusableSpace; |
EFI_LBA FreeSpace; |
EFI_LBA RootFile; |
EFI_LBA SecutiryFile; |
} EFI_PARTITION_HEADER; |
// |
// File header |
// |
#define EFI_FILE_HEADER_SIGNATURE 0x454c494620494249 |
#define EFI_FILE_HEADER_REVISION 0x00010000 |
#define EFI_FILE_STRING_SIZE 260 |
typedef struct _EFI_FILE_HEADER { |
EFI_TABLE_HEADER Hdr; |
UINT32 Class; |
UINT32 LBALOffset; |
EFI_LBA Parent; |
UINT64 FileSize; |
UINT64 FileAttributes; |
EFI_TIME FileCreateTime; |
EFI_TIME FileModificationTime; |
EFI_GUID VendorGuid; |
CHAR16 FileString[EFI_FILE_STRING_SIZE]; |
} EFI_FILE_HEADER; |
// |
// Return the file's first LBAL which is in the same |
// logical block as the file header |
// |
#define EFI_FILE_LBAL(a) ((EFI_LBAL *) (((CHAR8 *) (a)) + (a)->LBALOffset)) |
#define EFI_FILE_CLASS_FREE_SPACE 1 |
#define EFI_FILE_CLASS_EMPTY 2 |
#define EFI_FILE_CLASS_NORMAL 3 |
// |
// Logical Block Address List - the fundemental block |
// description structure |
// |
#define EFI_LBAL_SIGNATURE 0x4c41424c20494249 |
#define EFI_LBAL_REVISION 0x00010000 |
typedef struct _EFI_LBAL { |
EFI_TABLE_HEADER Hdr; |
UINT32 Class; |
EFI_LBA Parent; |
EFI_LBA Next; |
UINT32 ArraySize; |
UINT32 ArrayCount; |
} EFI_LBAL; |
// Array size |
#define EFI_LBAL_ARRAY_SIZE(lbal,offs,blks) \ |
(((blks) - (offs) - (lbal)->Hdr.HeaderSize) / sizeof(EFI_RL)) |
// |
// Logical Block run-length |
// |
typedef struct { |
EFI_LBA Start; |
UINT64 Length; |
} EFI_RL; |
// |
// Return the run-length structure from an LBAL header |
// |
#define EFI_LBAL_RL(a) ((EFI_RL*) (((CHAR8 *) (a)) + (a)->Hdr.HeaderSize)) |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efiapi.h |
---|
0,0 → 1,720 |
#ifndef _EFI_API_H |
#define _EFI_API_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efiapi.h |
Abstract: |
Global EFI runtime & boot service interfaces |
Revision History |
--*/ |
// |
// EFI Specification Revision |
// |
#define EFI_SPECIFICATION_MAJOR_REVISION 1 |
#define EFI_SPECIFICATION_MINOR_REVISION 02 |
// |
// Declare forward referenced data structures |
// |
INTERFACE_DECL(_EFI_SYSTEM_TABLE); |
// |
// EFI Memory |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_ALLOCATE_PAGES) ( |
IN EFI_ALLOCATE_TYPE Type, |
IN EFI_MEMORY_TYPE MemoryType, |
IN UINTN NoPages, |
OUT EFI_PHYSICAL_ADDRESS *Memory |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FREE_PAGES) ( |
IN EFI_PHYSICAL_ADDRESS Memory, |
IN UINTN NoPages |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_MEMORY_MAP) ( |
IN OUT UINTN *MemoryMapSize, |
IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, |
OUT UINTN *MapKey, |
OUT UINTN *DescriptorSize, |
OUT UINT32 *DescriptorVersion |
); |
#define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size)) |
typedef |
EFI_STATUS |
(EFIAPI *EFI_ALLOCATE_POOL) ( |
IN EFI_MEMORY_TYPE PoolType, |
IN UINTN Size, |
OUT VOID **Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FREE_POOL) ( |
IN VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) ( |
IN UINTN MemoryMapSize, |
IN UINTN DescriptorSize, |
IN UINT32 DescriptorVersion, |
IN EFI_MEMORY_DESCRIPTOR *VirtualMap |
); |
#define EFI_OPTIONAL_PTR 0x00000001 |
#define EFI_INTERNAL_FNC 0x00000002 // Pointer to internal runtime fnc |
#define EFI_INTERNAL_PTR 0x00000004 // Pointer to internal runtime data |
typedef |
EFI_STATUS |
(EFIAPI *EFI_CONVERT_POINTER) ( |
IN UINTN DebugDisposition, |
IN OUT VOID **Address |
); |
// |
// EFI Events |
// |
#define EVT_TIMER 0x80000000 |
#define EVT_RUNTIME 0x40000000 |
#define EVT_RUNTIME_CONTEXT 0x20000000 |
#define EVT_NOTIFY_WAIT 0x00000100 |
#define EVT_NOTIFY_SIGNAL 0x00000200 |
#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 |
#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 |
#define EVT_EFI_SIGNAL_MASK 0x000000FF |
#define EVT_EFI_SIGNAL_MAX 2 |
typedef |
VOID |
(EFIAPI *EFI_EVENT_NOTIFY) ( |
IN EFI_EVENT Event, |
IN VOID *Context |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_CREATE_EVENT) ( |
IN UINT32 Type, |
IN EFI_TPL NotifyTpl, |
IN EFI_EVENT_NOTIFY NotifyFunction, |
IN VOID *NotifyContext, |
OUT EFI_EVENT *Event |
); |
typedef enum { |
TimerCancel, |
TimerPeriodic, |
TimerRelative, |
TimerTypeMax |
} EFI_TIMER_DELAY; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SET_TIMER) ( |
IN EFI_EVENT Event, |
IN EFI_TIMER_DELAY Type, |
IN UINT64 TriggerTime |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIGNAL_EVENT) ( |
IN EFI_EVENT Event |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_WAIT_FOR_EVENT) ( |
IN UINTN NumberOfEvents, |
IN EFI_EVENT *Event, |
OUT UINTN *Index |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_CLOSE_EVENT) ( |
IN EFI_EVENT Event |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_CHECK_EVENT) ( |
IN EFI_EVENT Event |
); |
// |
// Task priority level |
// |
#define TPL_APPLICATION 4 |
#define TPL_CALLBACK 8 |
#define TPL_NOTIFY 16 |
#define TPL_HIGH_LEVEL 31 |
typedef |
EFI_TPL |
(EFIAPI *EFI_RAISE_TPL) ( |
IN EFI_TPL NewTpl |
); |
typedef |
VOID |
(EFIAPI *EFI_RESTORE_TPL) ( |
IN EFI_TPL OldTpl |
); |
// |
// EFI platform varibles |
// |
#define EFI_GLOBAL_VARIABLE \ |
{ 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} } |
// Variable attributes |
#define EFI_VARIABLE_NON_VOLATILE 0x00000001 |
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 |
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 |
// Variable size limitation |
#define EFI_MAXIMUM_VARIABLE_SIZE 1024 |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_VARIABLE) ( |
IN CHAR16 *VariableName, |
IN EFI_GUID *VendorGuid, |
OUT UINT32 *Attributes OPTIONAL, |
IN OUT UINTN *DataSize, |
OUT VOID *Data |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) ( |
IN OUT UINTN *VariableNameSize, |
IN OUT CHAR16 *VariableName, |
IN OUT EFI_GUID *VendorGuid |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SET_VARIABLE) ( |
IN CHAR16 *VariableName, |
IN EFI_GUID *VendorGuid, |
IN UINT32 Attributes, |
IN UINTN DataSize, |
IN VOID *Data |
); |
// |
// EFI Time |
// |
typedef struct { |
UINT32 Resolution; // 1e-6 parts per million |
UINT32 Accuracy; // hertz |
BOOLEAN SetsToZero; // Set clears sub-second time |
} EFI_TIME_CAPABILITIES; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_TIME) ( |
OUT EFI_TIME *Time, |
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SET_TIME) ( |
IN EFI_TIME *Time |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_WAKEUP_TIME) ( |
OUT BOOLEAN *Enabled, |
OUT BOOLEAN *Pending, |
OUT EFI_TIME *Time |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SET_WAKEUP_TIME) ( |
IN BOOLEAN Enable, |
IN EFI_TIME *Time OPTIONAL |
); |
// |
// Image functions |
// |
// PE32+ Subsystem type for EFI images |
#if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION) |
#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 |
#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 |
#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 |
#endif |
// PE32+ Machine type for EFI images |
#if !defined(EFI_IMAGE_MACHINE_IA32) |
#define EFI_IMAGE_MACHINE_IA32 0x014c |
#endif |
#if !defined(EFI_IMAGE_MACHINE_IA64) |
#define EFI_IMAGE_MACHINE_IA64 0x0200 |
#endif |
// Image Entry prototype |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IMAGE_ENTRY_POINT) ( |
IN EFI_HANDLE ImageHandle, |
IN struct _EFI_SYSTEM_TABLE *SystemTable |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IMAGE_LOAD) ( |
IN BOOLEAN BootPolicy, |
IN EFI_HANDLE ParentImageHandle, |
IN EFI_DEVICE_PATH *FilePath, |
IN VOID *SourceBuffer OPTIONAL, |
IN UINTN SourceSize, |
OUT EFI_HANDLE *ImageHandle |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IMAGE_START) ( |
IN EFI_HANDLE ImageHandle, |
OUT UINTN *ExitDataSize, |
OUT CHAR16 **ExitData OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_EXIT) ( |
IN EFI_HANDLE ImageHandle, |
IN EFI_STATUS ExitStatus, |
IN UINTN ExitDataSize, |
IN CHAR16 *ExitData OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IMAGE_UNLOAD) ( |
IN EFI_HANDLE ImageHandle |
); |
// Image handle |
#define LOADED_IMAGE_PROTOCOL \ |
{ 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } |
#define EFI_IMAGE_INFORMATION_REVISION 0x1000 |
typedef struct { |
UINT32 Revision; |
EFI_HANDLE ParentHandle; |
struct _EFI_SYSTEM_TABLE *SystemTable; |
// Source location of image |
EFI_HANDLE DeviceHandle; |
EFI_DEVICE_PATH *FilePath; |
VOID *Reserved; |
// Images load options |
UINT32 LoadOptionsSize; |
VOID *LoadOptions; |
// Location of where image was loaded |
VOID *ImageBase; |
UINT64 ImageSize; |
EFI_MEMORY_TYPE ImageCodeType; |
EFI_MEMORY_TYPE ImageDataType; |
// If the driver image supports a dynamic unload request |
EFI_IMAGE_UNLOAD Unload; |
} EFI_LOADED_IMAGE; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_EXIT_BOOT_SERVICES) ( |
IN EFI_HANDLE ImageHandle, |
IN UINTN MapKey |
); |
// |
// Misc |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_STALL) ( |
IN UINTN Microseconds |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SET_WATCHDOG_TIMER) ( |
IN UINTN Timeout, |
IN UINT64 WatchdogCode, |
IN UINTN DataSize, |
IN CHAR16 *WatchdogData OPTIONAL |
); |
typedef enum { |
EfiResetCold, |
EfiResetWarm |
} EFI_RESET_TYPE; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_RESET_SYSTEM) ( |
IN EFI_RESET_TYPE ResetType, |
IN EFI_STATUS ResetStatus, |
IN UINTN DataSize, |
IN CHAR16 *ResetData OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) ( |
OUT UINT64 *Count |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) ( |
OUT UINT32 *HighCount |
); |
// |
// Protocol handler functions |
// |
typedef enum { |
EFI_NATIVE_INTERFACE, |
EFI_PCODE_INTERFACE |
} EFI_INTERFACE_TYPE; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) ( |
IN OUT EFI_HANDLE *Handle, |
IN EFI_GUID *Protocol, |
IN EFI_INTERFACE_TYPE InterfaceType, |
IN VOID *Interface |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) ( |
IN EFI_HANDLE Handle, |
IN EFI_GUID *Protocol, |
IN VOID *OldInterface, |
IN VOID *NewInterface |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) ( |
IN EFI_HANDLE Handle, |
IN EFI_GUID *Protocol, |
IN VOID *Interface |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_HANDLE_PROTOCOL) ( |
IN EFI_HANDLE Handle, |
IN EFI_GUID *Protocol, |
OUT VOID **Interface |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) ( |
IN EFI_GUID *Protocol, |
IN EFI_EVENT Event, |
OUT VOID **Registration |
); |
typedef enum { |
AllHandles, |
ByRegisterNotify, |
ByProtocol |
} EFI_LOCATE_SEARCH_TYPE; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_LOCATE_HANDLE) ( |
IN EFI_LOCATE_SEARCH_TYPE SearchType, |
IN EFI_GUID *Protocol OPTIONAL, |
IN VOID *SearchKey OPTIONAL, |
IN OUT UINTN *BufferSize, |
OUT EFI_HANDLE *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_LOCATE_DEVICE_PATH) ( |
IN EFI_GUID *Protocol, |
IN OUT EFI_DEVICE_PATH **DevicePath, |
OUT EFI_HANDLE *Device |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) ( |
IN EFI_GUID *Guid, |
IN VOID *Table |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_RESERVED_SERVICE) ( |
); |
// |
// Standard EFI table header |
// |
typedef struct _EFI_TABLE_HEARDER { |
UINT64 Signature; |
UINT32 Revision; |
UINT32 HeaderSize; |
UINT32 CRC32; |
UINT32 Reserved; |
} EFI_TABLE_HEADER; |
// |
// EFI Runtime Serivces Table |
// |
#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552 |
#define EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION) |
typedef struct { |
EFI_TABLE_HEADER Hdr; |
// |
// Time services |
// |
EFI_GET_TIME GetTime; |
EFI_SET_TIME SetTime; |
EFI_GET_WAKEUP_TIME GetWakeupTime; |
EFI_SET_WAKEUP_TIME SetWakeupTime; |
// |
// Virtual memory services |
// |
EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; |
EFI_CONVERT_POINTER ConvertPointer; |
// |
// Variable serviers |
// |
EFI_GET_VARIABLE GetVariable; |
EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; |
EFI_SET_VARIABLE SetVariable; |
// |
// Misc |
// |
EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; |
EFI_RESET_SYSTEM ResetSystem; |
} EFI_RUNTIME_SERVICES; |
// |
// EFI Boot Services Table |
// |
#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42 |
#define EFI_BOOT_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION) |
typedef struct _EFI_BOOT_SERVICES { |
EFI_TABLE_HEADER Hdr; |
// |
// Task priority functions |
// |
EFI_RAISE_TPL RaiseTPL; |
EFI_RESTORE_TPL RestoreTPL; |
// |
// Memory functions |
// |
EFI_ALLOCATE_PAGES AllocatePages; |
EFI_FREE_PAGES FreePages; |
EFI_GET_MEMORY_MAP GetMemoryMap; |
EFI_ALLOCATE_POOL AllocatePool; |
EFI_FREE_POOL FreePool; |
// |
// Event & timer functions |
// |
EFI_CREATE_EVENT CreateEvent; |
EFI_SET_TIMER SetTimer; |
EFI_WAIT_FOR_EVENT WaitForEvent; |
EFI_SIGNAL_EVENT SignalEvent; |
EFI_CLOSE_EVENT CloseEvent; |
EFI_CHECK_EVENT CheckEvent; |
// |
// Protocol handler functions |
// |
EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; |
EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; |
EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; |
EFI_HANDLE_PROTOCOL HandleProtocol; |
EFI_HANDLE_PROTOCOL PCHandleProtocol; |
EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; |
EFI_LOCATE_HANDLE LocateHandle; |
EFI_LOCATE_DEVICE_PATH LocateDevicePath; |
EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; |
// |
// Image functions |
// |
EFI_IMAGE_LOAD LoadImage; |
EFI_IMAGE_START StartImage; |
EFI_EXIT Exit; |
EFI_IMAGE_UNLOAD UnloadImage; |
EFI_EXIT_BOOT_SERVICES ExitBootServices; |
// |
// Misc functions |
// |
EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; |
EFI_STALL Stall; |
EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; |
} EFI_BOOT_SERVICES; |
// |
// EFI Configuration Table and GUID definitions |
// |
#define MPS_TABLE_GUID \ |
{ 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
#define ACPI_TABLE_GUID \ |
{ 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
#define ACPI_20_TABLE_GUID \ |
{ 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } |
#define SMBIOS_TABLE_GUID \ |
{ 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
#define SAL_SYSTEM_TABLE_GUID \ |
{ 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
typedef struct _EFI_CONFIGURATION_TABLE { |
EFI_GUID VendorGuid; |
VOID *VendorTable; |
} EFI_CONFIGURATION_TABLE; |
// |
// EFI System Table |
// |
#define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249 |
#define EFI_SYSTEM_TABLE_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION) |
typedef struct _EFI_SYSTEM_TABLE { |
EFI_TABLE_HEADER Hdr; |
CHAR16 *FirmwareVendor; |
UINT32 FirmwareRevision; |
EFI_HANDLE ConsoleInHandle; |
SIMPLE_INPUT_INTERFACE *ConIn; |
EFI_HANDLE ConsoleOutHandle; |
SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut; |
EFI_HANDLE StandardErrorHandle; |
SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr; |
EFI_RUNTIME_SERVICES *RuntimeServices; |
EFI_BOOT_SERVICES *BootServices; |
UINTN NumberOfTableEntries; |
EFI_CONFIGURATION_TABLE *ConfigurationTable; |
} EFI_SYSTEM_TABLE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/romload.h |
---|
0,0 → 1,41 |
#ifndef _EFI_ROMLOAD_H |
#define _EFI_ROMLOAD_H |
#define ROM_SIGNATURE 0xaa55 |
#define PCIDS_SIGNATURE "PCIR" |
#pragma pack(push) |
#pragma pack(1) |
typedef struct |
{ |
UINT8 Pcids_Sig[4]; |
UINT16 VendId; |
UINT16 DevId; |
UINT16 Vpd_Off; |
UINT16 Size; |
UINT8 Rev; |
UINT8 Class_Code[3]; |
UINT16 Image_Len; |
UINT16 Rev_Lvl; |
UINT8 Code_Type; |
UINT8 Indi; |
UINT16 Rsvd; |
}PciDataStructure; |
typedef struct |
{ |
UINT16 Size; |
UINT32 Header_Sig; |
UINT16 SubSystem; |
UINT16 MachineType; |
UINT8 Resvd[10]; |
UINT16 EfiOffset; |
}ArchData; |
typedef struct |
{ |
UINT16 Rom_Sig; |
ArchData Arch_Data; |
UINT16 Pcids_Off; |
UINT8 resvd[38]; |
}RomHeader; |
#pragma pack(pop) |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efirtlib.h |
---|
0,0 → 1,141 |
#ifndef _EFI_RT_LIB_INCLUDE_ |
#define _EFI_RT_LIB_INCLUDE_ |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efilib.h |
Abstract: |
EFI Runtime library functions |
Revision History |
--*/ |
#include "efidebug.h" |
#include "efipart.h" |
#include "efilibplat.h" |
VOID |
RUNTIMEFUNCTION |
RtZeroMem ( |
IN VOID *Buffer, |
IN UINTN Size |
); |
VOID |
RUNTIMEFUNCTION |
RtSetMem ( |
IN VOID *Buffer, |
IN UINTN Size, |
IN UINT8 Value |
); |
VOID |
RUNTIMEFUNCTION |
RtCopyMem ( |
IN VOID *Dest, |
IN VOID *Src, |
IN UINTN len |
); |
INTN |
RUNTIMEFUNCTION |
RtCompareMem ( |
IN VOID *Dest, |
IN VOID *Src, |
IN UINTN len |
); |
INTN |
RUNTIMEFUNCTION |
RtStrCmp ( |
IN CHAR16 *s1, |
IN CHAR16 *s2 |
); |
VOID |
RUNTIMEFUNCTION |
RtStrCpy ( |
IN CHAR16 *Dest, |
IN CHAR16 *Src |
); |
VOID |
RUNTIMEFUNCTION |
RtStrCat ( |
IN CHAR16 *Dest, |
IN CHAR16 *Src |
); |
UINTN |
RUNTIMEFUNCTION |
RtStrLen ( |
IN CHAR16 *s1 |
); |
UINTN |
RUNTIMEFUNCTION |
RtStrSize ( |
IN CHAR16 *s1 |
); |
INTN |
RUNTIMEFUNCTION |
RtCompareGuid ( |
IN EFI_GUID *Guid1, |
IN EFI_GUID *Guid2 |
); |
UINT8 |
RUNTIMEFUNCTION |
RtDecimaltoBCD( |
IN UINT8 BcdValue |
); |
UINT8 |
RUNTIMEFUNCTION |
RtBCDtoDecimal( |
IN UINT8 BcdValue |
); |
// |
// Virtual mapping transition support. (Only used during |
// the virtual address change transisition) |
// |
VOID |
RUNTIMEFUNCTION |
RtLibEnableVirtualMappings ( |
VOID |
); |
VOID |
RUNTIMEFUNCTION |
RtConvertList ( |
IN UINTN DebugDisposition, |
IN OUT LIST_ENTRY *ListHead |
); |
VOID |
RUNTIMEFUNCTION |
RtAcquireLock ( |
IN FLOCK *Lock |
); |
VOID |
RUNTIMEFUNCTION |
RtReleaseLock ( |
IN FLOCK *Lock |
); |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efiui.h |
---|
0,0 → 1,54 |
#ifndef _EFI_UI_H |
#define _EFI_UI_H |
/*++ |
Copyright (c) 200 Intel Corporation |
Module Name: |
EfiUi.h |
Abstract: |
Protocol used to build User Interface (UI) stuff. |
This protocol is just data. It is a multi dimentional array. |
For each string there is an array of UI_STRING_ENTRY. Each string |
is for a different language translation of the same string. The list |
is terminated by a NULL UiString. There can be any number of |
UI_STRING_ENTRY arrays. A NULL array terminates the list. A NULL array |
entry contains all zeros. |
Thus the shortest possible EFI_UI_PROTOCOL has three UI_STRING_ENTRY. |
The String, it's NULL terminator, and the NULL terminator for the entire |
thing. |
Revision History |
--*/ |
#define EFI_UI_PROTOCOL \ |
{ 0x32dd7981, 0x2d27, 0x11d4, {0xbc, 0x8b, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } |
typedef enum { |
UiDeviceString, |
UiVendorString, |
UiMaxString |
} UI_STRING_TYPE; |
typedef struct { |
ISO_639_2 *LangCode; |
CHAR16 *UiString; |
} UI_STRING_ENTRY; |
#define EFI_UI_VERSION 0x00010000 |
typedef struct _UI_INTERFACE { |
UINT32 Version; |
UI_STRING_ENTRY *Entry; |
} UI_INTERFACE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efi_nii.h |
---|
0,0 → 1,74 |
#ifndef _EFI_NII_H |
#define _EFI_NII_H |
/*++ |
Copyright (c) 2000 Intel Corporation |
Module name: |
efi_nii.h |
Abstract: |
Revision history: |
2000-Feb-18 M(f)J GUID updated. |
Structure order changed for machine word alignment. |
Added StringId[4] to structure. |
2000-Feb-14 M(f)J Genesis. |
--*/ |
#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL \ |
{ 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29} } |
#define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION 0x00010000 |
typedef enum { |
EfiNetworkInterfaceUndi = 1 |
} EFI_NETWORK_INTERFACE_TYPE; |
typedef struct { |
UINT64 Revision; |
// Revision of the network interface identifier protocol interface. |
UINT64 ID; |
// Address of the first byte of the identifying structure for this |
// network interface. This is set to zero if there is no structure. |
// |
// For PXE/UNDI this is the first byte of the !PXE structure. |
UINT64 ImageAddr; |
// Address of the UNrelocated driver/ROM image. This is set |
// to zero if there is no driver/ROM image. |
// |
// For 16-bit UNDI, this is the first byte of the option ROM in |
// upper memory. |
// |
// For 32/64-bit S/W UNDI, this is the first byte of the EFI ROM |
// image. |
// |
// For H/W UNDI, this is set to zero. |
UINT32 ImageSize; |
// Size of the UNrelocated driver/ROM image of this network interface. |
// This is set to zero if there is no driver/ROM image. |
CHAR8 StringId[4]; |
// 4 char ASCII string to go in class identifier (option 60) in DHCP |
// and Boot Server discover packets. |
// For EfiNetworkInterfaceUndi this field is "UNDI". |
// For EfiNetworkInterfaceSnp this field is "SNPN". |
UINT8 Type; |
UINT8 MajorVer; |
UINT8 MinorVer; |
// Information to be placed into the PXE DHCP and Discover packets. |
// This is the network interface type and version number that will |
// be placed into DHCP option 94 (client network interface identifier). |
BOOLEAN Ipv6Supported; |
UINT8 IfNum; // interface number to be used with pxeid structure |
} EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE; |
extern EFI_GUID NetworkInterfaceIdentifierProtocol; |
#endif // _EFI_NII_H |
/branches/dd/boot/arch/ia64/loader/gefi/inc/make.inf |
---|
0,0 → 1,29 |
# |
# |
# |
[sources] |
efi.h |
efiapi.h |
eficon.h |
efidebug.h |
efidef.h |
efidevp.h |
efierr.h |
efifs.h |
efilib.h |
efipart.h |
efiprot.h |
efipxebc.h |
efistdarg.h |
efinet.h |
[ia32sources] |
efibind.h |
pe.h |
efilibplat.h |
[ia64sources] |
efibind.h |
pe.h |
efilibplat.h |
/branches/dd/boot/arch/ia64/loader/gefi/inc/eficon.h |
---|
0,0 → 1,302 |
#ifndef _EFI_CON_H |
#define _EFI_CON_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
eficon.h |
Abstract: |
EFI console protocols |
Revision History |
--*/ |
// |
// Text output protocol |
// |
#define SIMPLE_TEXT_OUTPUT_PROTOCOL \ |
{ 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_RESET) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN BOOLEAN ExtendedVerification |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_OUTPUT_STRING) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN CHAR16 *String |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_TEST_STRING) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN CHAR16 *String |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_QUERY_MODE) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN UINTN ModeNumber, |
OUT UINTN *Columns, |
OUT UINTN *Rows |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_SET_MODE) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN UINTN ModeNumber |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN UINTN Attribute |
); |
#define EFI_BLACK 0x00 |
#define EFI_BLUE 0x01 |
#define EFI_GREEN 0x02 |
#define EFI_CYAN (EFI_BLUE | EFI_GREEN) |
#define EFI_RED 0x04 |
#define EFI_MAGENTA (EFI_BLUE | EFI_RED) |
#define EFI_BROWN (EFI_GREEN | EFI_RED) |
#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) |
#define EFI_BRIGHT 0x08 |
#define EFI_DARKGRAY (EFI_BRIGHT) |
#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) |
#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) |
#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) |
#define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) |
#define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) |
#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) |
#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) |
#define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4)) |
#define EFI_BACKGROUND_BLACK 0x00 |
#define EFI_BACKGROUND_BLUE 0x10 |
#define EFI_BACKGROUND_GREEN 0x20 |
#define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) |
#define EFI_BACKGROUND_RED 0x40 |
#define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) |
#define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
#define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN UINTN Column, |
IN UINTN Row |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TEXT_ENABLE_CURSOR) ( |
IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
IN BOOLEAN Enable |
); |
typedef struct { |
INT32 MaxMode; |
// current settings |
INT32 Mode; |
INT32 Attribute; |
INT32 CursorColumn; |
INT32 CursorRow; |
BOOLEAN CursorVisible; |
} SIMPLE_TEXT_OUTPUT_MODE; |
typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE { |
EFI_TEXT_RESET Reset; |
EFI_TEXT_OUTPUT_STRING OutputString; |
EFI_TEXT_TEST_STRING TestString; |
EFI_TEXT_QUERY_MODE QueryMode; |
EFI_TEXT_SET_MODE SetMode; |
EFI_TEXT_SET_ATTRIBUTE SetAttribute; |
EFI_TEXT_CLEAR_SCREEN ClearScreen; |
EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; |
EFI_TEXT_ENABLE_CURSOR EnableCursor; |
// Current mode |
SIMPLE_TEXT_OUTPUT_MODE *Mode; |
} SIMPLE_TEXT_OUTPUT_INTERFACE; |
// |
// Define's for required EFI Unicode Box Draw character |
// |
#define BOXDRAW_HORIZONTAL 0x2500 |
#define BOXDRAW_VERTICAL 0x2502 |
#define BOXDRAW_DOWN_RIGHT 0x250c |
#define BOXDRAW_DOWN_LEFT 0x2510 |
#define BOXDRAW_UP_RIGHT 0x2514 |
#define BOXDRAW_UP_LEFT 0x2518 |
#define BOXDRAW_VERTICAL_RIGHT 0x251c |
#define BOXDRAW_VERTICAL_LEFT 0x2524 |
#define BOXDRAW_DOWN_HORIZONTAL 0x252c |
#define BOXDRAW_UP_HORIZONTAL 0x2534 |
#define BOXDRAW_VERTICAL_HORIZONTAL 0x253c |
#define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 |
#define BOXDRAW_DOUBLE_VERTICAL 0x2551 |
#define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 |
#define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 |
#define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 |
#define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 |
#define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 |
#define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 |
#define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 |
#define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 |
#define BOXDRAW_DOUBLE_UP_RIGHT 0x255a |
#define BOXDRAW_UP_LEFT_DOUBLE 0x255b |
#define BOXDRAW_UP_DOUBLE_LEFT 0x255c |
#define BOXDRAW_DOUBLE_UP_LEFT 0x255d |
#define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e |
#define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f |
#define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 |
#define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 |
#define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 |
#define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 |
#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 |
#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 |
#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 |
#define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 |
#define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 |
#define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 |
#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a |
#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b |
#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c |
// |
// EFI Required Block Elements Code Chart |
// |
#define BLOCKELEMENT_FULL_BLOCK 0x2588 |
#define BLOCKELEMENT_LIGHT_SHADE 0x2591 |
// |
// EFI Required Geometric Shapes Code Chart |
// |
#define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 |
#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba |
#define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc |
#define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 |
// |
// EFI Required Arrow shapes |
// |
#define ARROW_UP 0x2191 |
#define ARROW_DOWN 0x2193 |
// |
// Text input protocol |
// |
#define SIMPLE_TEXT_INPUT_PROTOCOL \ |
{ 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE); |
typedef struct { |
UINT16 ScanCode; |
CHAR16 UnicodeChar; |
} EFI_INPUT_KEY; |
// |
// Baseline unicode control chars |
// |
#define CHAR_NULL 0x0000 |
#define CHAR_BACKSPACE 0x0008 |
#define CHAR_TAB 0x0009 |
#define CHAR_LINEFEED 0x000A |
#define CHAR_CARRIAGE_RETURN 0x000D |
// |
// Scan codes for base line keys |
// |
#define SCAN_NULL 0x0000 |
#define SCAN_UP 0x0001 |
#define SCAN_DOWN 0x0002 |
#define SCAN_RIGHT 0x0003 |
#define SCAN_LEFT 0x0004 |
#define SCAN_HOME 0x0005 |
#define SCAN_END 0x0006 |
#define SCAN_INSERT 0x0007 |
#define SCAN_DELETE 0x0008 |
#define SCAN_PAGE_UP 0x0009 |
#define SCAN_PAGE_DOWN 0x000A |
#define SCAN_F1 0x000B |
#define SCAN_F2 0x000C |
#define SCAN_F3 0x000D |
#define SCAN_F4 0x000E |
#define SCAN_F5 0x000F |
#define SCAN_F6 0x0010 |
#define SCAN_F7 0x0011 |
#define SCAN_F8 0x0012 |
#define SCAN_F9 0x0013 |
#define SCAN_F10 0x0014 |
#define SCAN_ESC 0x0017 |
typedef |
EFI_STATUS |
(EFIAPI *EFI_INPUT_RESET) ( |
IN struct _SIMPLE_INPUT_INTERFACE *This, |
IN BOOLEAN ExtendedVerification |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_INPUT_READ_KEY) ( |
IN struct _SIMPLE_INPUT_INTERFACE *This, |
OUT EFI_INPUT_KEY *Key |
); |
typedef struct _SIMPLE_INPUT_INTERFACE { |
EFI_INPUT_RESET Reset; |
EFI_INPUT_READ_KEY ReadKeyStroke; |
EFI_EVENT WaitForKey; |
} SIMPLE_INPUT_INTERFACE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efi.h |
---|
0,0 → 1,49 |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efi.h |
Abstract: |
Public EFI header files |
Revision History |
--*/ |
// |
// Build flags on input |
// EFI32 |
// EFI_DEBUG - Enable debugging code |
// EFI_NT_EMULATOR - Building for running under NT |
// |
#ifndef _EFI_INCLUDE_ |
#define _EFI_INCLUDE_ |
#define EFI_FIRMWARE_VENDOR L"INTEL" |
#define EFI_FIRMWARE_MAJOR_REVISION 12 |
#define EFI_FIRMWARE_MINOR_REVISION 33 |
#define EFI_FIRMWARE_REVISION ((EFI_FIRMWARE_MAJOR_REVISION <<16) | (EFI_FIRMWARE_MINOR_REVISION)) |
#include "efibind.h" |
#include "efidef.h" |
#include "efidevp.h" |
#include "efiprot.h" |
#include "eficon.h" |
#include "efiser.h" |
#include "efi_nii.h" |
#include "efipxebc.h" |
#include "efinet.h" |
#include "efiapi.h" |
#include "efifs.h" |
#include "efierr.h" |
#include "efiui.h" |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/makefile.hdr |
---|
0,0 → 1,44 |
# |
# This is a machine generated file - DO NOT EDIT |
# Generated by genmake.exe |
# Generated from make.inf |
# Copyright (c) 1998 Intel Corporation |
# |
INC_DEPS = $(INC_DEPS) \ |
$(SDK_INSTALL_DIR)\include\efi\efi.h \ |
$(SDK_INSTALL_DIR)\include\efi\efiapi.h \ |
$(SDK_INSTALL_DIR)\include\efi\eficon.h \ |
$(SDK_INSTALL_DIR)\include\efi\efidebug.h \ |
$(SDK_INSTALL_DIR)\include\efi\efidef.h \ |
$(SDK_INSTALL_DIR)\include\efi\efidevp.h \ |
$(SDK_INSTALL_DIR)\include\efi\efierr.h \ |
$(SDK_INSTALL_DIR)\include\efi\efifs.h \ |
$(SDK_INSTALL_DIR)\include\efi\efilib.h \ |
$(SDK_INSTALL_DIR)\include\efi\efipart.h \ |
$(SDK_INSTALL_DIR)\include\efi\efiprot.h \ |
$(SDK_INSTALL_DIR)\include\efi\efipxebc.h \ |
$(SDK_INSTALL_DIR)\include\efi\efistdarg.h \ |
$(SDK_INSTALL_DIR)\include\efi\efinet.h \ |
!IF "$(PROCESSOR)" == "Ia32" |
INC_DEPS = $(INC_DEPS) \ |
$(SDK_INSTALL_DIR)\include\efi\Ia32\efibind.h \ |
$(SDK_INSTALL_DIR)\include\efi\Ia32\pe.h \ |
$(SDK_INSTALL_DIR)\include\efi\Ia32\efilibplat.h \ |
!ENDIF |
!IF "$(PROCESSOR)" == "Ia64" |
INC_DEPS = $(INC_DEPS) \ |
$(SDK_INSTALL_DIR)\include\efi\Ia64\efibind.h \ |
$(SDK_INSTALL_DIR)\include\efi\Ia64\pe.h \ |
$(SDK_INSTALL_DIR)\include\efi\Ia64\efilibplat.h \ |
!ENDIF |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efiprot.h |
---|
0,0 → 1,558 |
#ifndef _EFI_PROT_H |
#define _EFI_PROT_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efiprot.h |
Abstract: |
EFI Protocols |
Revision History |
--*/ |
// |
// FPSWA library protocol |
// |
#define FPSWA_PROTOCOL \ |
{ 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
// |
// Device Path protocol |
// |
#define DEVICE_PATH_PROTOCOL \ |
{ 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
// |
// Block IO protocol |
// |
#define BLOCK_IO_PROTOCOL \ |
{ 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000 |
INTERFACE_DECL(_EFI_BLOCK_IO); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_BLOCK_RESET) ( |
IN struct _EFI_BLOCK_IO *This, |
IN BOOLEAN ExtendedVerification |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_BLOCK_READ) ( |
IN struct _EFI_BLOCK_IO *This, |
IN UINT32 MediaId, |
IN EFI_LBA LBA, |
IN UINTN BufferSize, |
OUT VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_BLOCK_WRITE) ( |
IN struct _EFI_BLOCK_IO *This, |
IN UINT32 MediaId, |
IN EFI_LBA LBA, |
IN UINTN BufferSize, |
IN VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_BLOCK_FLUSH) ( |
IN struct _EFI_BLOCK_IO *This |
); |
typedef struct { |
UINT32 MediaId; |
BOOLEAN RemovableMedia; |
BOOLEAN MediaPresent; |
BOOLEAN LogicalPartition; |
BOOLEAN ReadOnly; |
BOOLEAN WriteCaching; |
UINT32 BlockSize; |
UINT32 IoAlign; |
EFI_LBA LastBlock; |
} EFI_BLOCK_IO_MEDIA; |
typedef struct _EFI_BLOCK_IO { |
UINT64 Revision; |
EFI_BLOCK_IO_MEDIA *Media; |
EFI_BLOCK_RESET Reset; |
EFI_BLOCK_READ ReadBlocks; |
EFI_BLOCK_WRITE WriteBlocks; |
EFI_BLOCK_FLUSH FlushBlocks; |
} EFI_BLOCK_IO; |
// |
// Disk Block IO protocol |
// |
#define DISK_IO_PROTOCOL \ |
{ 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000 |
INTERFACE_DECL(_EFI_DISK_IO); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_DISK_READ) ( |
IN struct _EFI_DISK_IO *This, |
IN UINT32 MediaId, |
IN UINT64 Offset, |
IN UINTN BufferSize, |
OUT VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_DISK_WRITE) ( |
IN struct _EFI_DISK_IO *This, |
IN UINT32 MediaId, |
IN UINT64 Offset, |
IN UINTN BufferSize, |
IN VOID *Buffer |
); |
typedef struct _EFI_DISK_IO { |
UINT64 Revision; |
EFI_DISK_READ ReadDisk; |
EFI_DISK_WRITE WriteDisk; |
} EFI_DISK_IO; |
// |
// Simple file system protocol |
// |
#define SIMPLE_FILE_SYSTEM_PROTOCOL \ |
{ 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
INTERFACE_DECL(_EFI_FILE_IO_INTERFACE); |
INTERFACE_DECL(_EFI_FILE_HANDLE); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_VOLUME_OPEN) ( |
IN struct _EFI_FILE_IO_INTERFACE *This, |
OUT struct _EFI_FILE_HANDLE **Root |
); |
#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000 |
typedef struct _EFI_FILE_IO_INTERFACE { |
UINT64 Revision; |
EFI_VOLUME_OPEN OpenVolume; |
} EFI_FILE_IO_INTERFACE; |
// |
// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_OPEN) ( |
IN struct _EFI_FILE_HANDLE *File, |
OUT struct _EFI_FILE_HANDLE **NewHandle, |
IN CHAR16 *FileName, |
IN UINT64 OpenMode, |
IN UINT64 Attributes |
); |
// Open modes |
#define EFI_FILE_MODE_READ 0x0000000000000001 |
#define EFI_FILE_MODE_WRITE 0x0000000000000002 |
#define EFI_FILE_MODE_CREATE 0x8000000000000000 |
// File attributes |
#define EFI_FILE_READ_ONLY 0x0000000000000001 |
#define EFI_FILE_HIDDEN 0x0000000000000002 |
#define EFI_FILE_SYSTEM 0x0000000000000004 |
#define EFI_FILE_RESERVIED 0x0000000000000008 |
#define EFI_FILE_DIRECTORY 0x0000000000000010 |
#define EFI_FILE_ARCHIVE 0x0000000000000020 |
#define EFI_FILE_VALID_ATTR 0x0000000000000037 |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_CLOSE) ( |
IN struct _EFI_FILE_HANDLE *File |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_DELETE) ( |
IN struct _EFI_FILE_HANDLE *File |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_READ) ( |
IN struct _EFI_FILE_HANDLE *File, |
IN OUT UINTN *BufferSize, |
OUT VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_WRITE) ( |
IN struct _EFI_FILE_HANDLE *File, |
IN OUT UINTN *BufferSize, |
IN VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_SET_POSITION) ( |
IN struct _EFI_FILE_HANDLE *File, |
IN UINT64 Position |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_GET_POSITION) ( |
IN struct _EFI_FILE_HANDLE *File, |
OUT UINT64 *Position |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_GET_INFO) ( |
IN struct _EFI_FILE_HANDLE *File, |
IN EFI_GUID *InformationType, |
IN OUT UINTN *BufferSize, |
OUT VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_SET_INFO) ( |
IN struct _EFI_FILE_HANDLE *File, |
IN EFI_GUID *InformationType, |
IN UINTN BufferSize, |
IN VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_FILE_FLUSH) ( |
IN struct _EFI_FILE_HANDLE *File |
); |
#define EFI_FILE_HANDLE_REVISION 0x00010000 |
typedef struct _EFI_FILE_HANDLE { |
UINT64 Revision; |
EFI_FILE_OPEN Open; |
EFI_FILE_CLOSE Close; |
EFI_FILE_DELETE Delete; |
EFI_FILE_READ Read; |
EFI_FILE_WRITE Write; |
EFI_FILE_GET_POSITION GetPosition; |
EFI_FILE_SET_POSITION SetPosition; |
EFI_FILE_GET_INFO GetInfo; |
EFI_FILE_SET_INFO SetInfo; |
EFI_FILE_FLUSH Flush; |
} EFI_FILE, *EFI_FILE_HANDLE; |
// |
// File information types |
// |
#define EFI_FILE_INFO_ID \ |
{ 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
typedef struct { |
UINT64 Size; |
UINT64 FileSize; |
UINT64 PhysicalSize; |
EFI_TIME CreateTime; |
EFI_TIME LastAccessTime; |
EFI_TIME ModificationTime; |
UINT64 Attribute; |
CHAR16 FileName[1]; |
} EFI_FILE_INFO; |
// |
// The FileName field of the EFI_FILE_INFO data structure is variable length. |
// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to |
// be the size of the data structure without the FileName field. The following macro |
// computes this size correctly no matter how big the FileName array is declared. |
// This is required to make the EFI_FILE_INFO data structure ANSI compilant. |
// |
#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName) |
#define EFI_FILE_SYSTEM_INFO_ID \ |
{ 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
typedef struct { |
UINT64 Size; |
BOOLEAN ReadOnly; |
UINT64 VolumeSize; |
UINT64 FreeSpace; |
UINT32 BlockSize; |
CHAR16 VolumeLabel[1]; |
} EFI_FILE_SYSTEM_INFO; |
// |
// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length. |
// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs |
// to be the size of the data structure without the VolumeLable field. The following macro |
// computes this size correctly no matter how big the VolumeLable array is declared. |
// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant. |
// |
#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel) |
#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \ |
{ 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} } |
typedef struct { |
CHAR16 VolumeLabel[1]; |
} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO; |
#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel) |
// |
// Load file protocol |
// |
#define LOAD_FILE_PROTOCOL \ |
{ 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } |
INTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_LOAD_FILE) ( |
IN struct _EFI_LOAD_FILE_INTERFACE *This, |
IN EFI_DEVICE_PATH *FilePath, |
IN BOOLEAN BootPolicy, |
IN OUT UINTN *BufferSize, |
IN VOID *Buffer OPTIONAL |
); |
typedef struct _EFI_LOAD_FILE_INTERFACE { |
EFI_LOAD_FILE LoadFile; |
} EFI_LOAD_FILE_INTERFACE; |
// |
// Device IO protocol |
// |
#define DEVICE_IO_PROTOCOL \ |
{ 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
INTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE); |
typedef enum { |
IO_UINT8, |
IO_UINT16, |
IO_UINT32, |
IO_UINT64, |
// |
// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO |
// |
MMIO_COPY_UINT8, |
MMIO_COPY_UINT16, |
MMIO_COPY_UINT32, |
MMIO_COPY_UINT64 |
} EFI_IO_WIDTH; |
#define EFI_PCI_ADDRESS(_bus,_dev,_func) \ |
( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) ) |
typedef |
EFI_STATUS |
(EFIAPI *EFI_DEVICE_IO) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This, |
IN EFI_IO_WIDTH Width, |
IN UINT64 Address, |
IN UINTN Count, |
IN OUT VOID *Buffer |
); |
typedef struct { |
EFI_DEVICE_IO Read; |
EFI_DEVICE_IO Write; |
} EFI_IO_ACCESS; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PCI_DEVICE_PATH) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This, |
IN UINT64 Address, |
IN OUT EFI_DEVICE_PATH **PciDevicePath |
); |
typedef enum { |
EfiBusMasterRead, |
EfiBusMasterWrite, |
EfiBusMasterCommonBuffer |
} EFI_IO_OPERATION_TYPE; |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IO_MAP) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This, |
IN EFI_IO_OPERATION_TYPE Operation, |
IN EFI_PHYSICAL_ADDRESS *HostAddress, |
IN OUT UINTN *NumberOfBytes, |
OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, |
OUT VOID **Mapping |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IO_UNMAP) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This, |
IN VOID *Mapping |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IO_ALLOCATE_BUFFER) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This, |
IN EFI_ALLOCATE_TYPE Type, |
IN EFI_MEMORY_TYPE MemoryType, |
IN UINTN Pages, |
IN OUT EFI_PHYSICAL_ADDRESS *HostAddress |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IO_FLUSH) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IO_FREE_BUFFER) ( |
IN struct _EFI_DEVICE_IO_INTERFACE *This, |
IN UINTN Pages, |
IN EFI_PHYSICAL_ADDRESS HostAddress |
); |
typedef struct _EFI_DEVICE_IO_INTERFACE { |
EFI_IO_ACCESS Mem; |
EFI_IO_ACCESS Io; |
EFI_IO_ACCESS Pci; |
EFI_IO_MAP Map; |
EFI_PCI_DEVICE_PATH PciDevicePath; |
EFI_IO_UNMAP Unmap; |
EFI_IO_ALLOCATE_BUFFER AllocateBuffer; |
EFI_IO_FLUSH Flush; |
EFI_IO_FREE_BUFFER FreeBuffer; |
} EFI_DEVICE_IO_INTERFACE; |
// |
// Unicode Collation protocol |
// |
#define UNICODE_COLLATION_PROTOCOL \ |
{ 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff) |
INTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE); |
typedef |
INTN |
(EFIAPI *EFI_UNICODE_STRICOLL) ( |
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, |
IN CHAR16 *s1, |
IN CHAR16 *s2 |
); |
typedef |
BOOLEAN |
(EFIAPI *EFI_UNICODE_METAIMATCH) ( |
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, |
IN CHAR16 *String, |
IN CHAR16 *Pattern |
); |
typedef |
VOID |
(EFIAPI *EFI_UNICODE_STRLWR) ( |
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, |
IN OUT CHAR16 *Str |
); |
typedef |
VOID |
(EFIAPI *EFI_UNICODE_STRUPR) ( |
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, |
IN OUT CHAR16 *Str |
); |
typedef |
VOID |
(EFIAPI *EFI_UNICODE_FATTOSTR) ( |
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, |
IN UINTN FatSize, |
IN CHAR8 *Fat, |
OUT CHAR16 *String |
); |
typedef |
BOOLEAN |
(EFIAPI *EFI_UNICODE_STRTOFAT) ( |
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, |
IN CHAR16 *String, |
IN UINTN FatSize, |
OUT CHAR8 *Fat |
); |
typedef struct _EFI_UNICODE_COLLATION_INTERFACE { |
// general |
EFI_UNICODE_STRICOLL StriColl; |
EFI_UNICODE_METAIMATCH MetaiMatch; |
EFI_UNICODE_STRLWR StrLwr; |
EFI_UNICODE_STRUPR StrUpr; |
// for supporting fat volumes |
EFI_UNICODE_FATTOSTR FatToStr; |
EFI_UNICODE_STRTOFAT StrToFat; |
CHAR8 *SupportedLanguages; |
} EFI_UNICODE_COLLATION_INTERFACE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efistdarg.h |
---|
0,0 → 1,33 |
#ifndef _EFISTDARG_H_ |
#define _EFISTDARG_H_ |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
devpath.h |
Abstract: |
Defines for parsing the EFI Device Path structures |
Revision History |
--*/ |
#ifdef __GNUC__ |
#include "stdarg.h" |
#else |
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(UINTN) - 1) & ~(sizeof(UINTN) - 1) ) |
typedef CHAR8 * va_list; |
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) |
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) |
#define va_end(ap) ( ap = (va_list)0 ) |
#endif |
#endif /* _INC_STDARG */ |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia32/efilibplat.h |
---|
0,0 → 1,26 |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efilibplat.h |
Abstract: |
EFI to compile bindings |
Revision History |
--*/ |
VOID |
InitializeLibPlatform ( |
IN EFI_HANDLE ImageHandle, |
IN EFI_SYSTEM_TABLE *SystemTable |
); |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia32/efibind.h |
---|
0,0 → 1,263 |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efefind.h |
Abstract: |
EFI to compile bindings |
Revision History |
--*/ |
#ifndef __GNUC__ |
#pragma pack() |
#endif |
// |
// Basic int types of various widths |
// |
#if (__STDC_VERSION__ < 199901L ) |
// No ANSI C 1999/2000 stdint.h integer width declarations |
#if _MSC_EXTENSIONS |
// Use Microsoft C compiler integer width declarations |
typedef unsigned __int64 uint64_t; |
typedef __int64 int64_t; |
typedef unsigned __int32 uint32_t; |
typedef __int32 int32_t; |
typedef unsigned short uint16_t; |
typedef short int16_t; |
typedef unsigned char uint8_t; |
typedef char int8_t; |
#elif defined(__GNUC__) |
typedef unsigned long long uint64_t __attribute__((aligned (8))); |
typedef long long int64_t __attribute__((aligned (8))); |
typedef unsigned int uint32_t; |
typedef int int32_t; |
typedef unsigned short uint16_t; |
typedef short int16_t; |
typedef unsigned char uint8_t; |
typedef char int8_t; |
#elif defined(UNIX_LP64) |
/* Use LP64 programming model from C_FLAGS for integer width declarations */ |
typedef unsigned long uint64_t; |
typedef long int64_t; |
typedef unsigned int uint32_t; |
typedef int int32_t; |
typedef unsigned short uint16_t; |
typedef short int16_t; |
typedef unsigned char uint8_t; |
typedef char int8_t; |
#else |
/* Assume P64 programming model from C_FLAGS for integer width declarations */ |
typedef unsigned long long uint64_t __attribute__((aligned (8))); |
typedef long long int64_t __attribute__((aligned (8))); |
typedef unsigned int uint32_t; |
typedef int int32_t; |
typedef unsigned short uint16_t; |
typedef short int16_t; |
typedef unsigned char uint8_t; |
typedef char int8_t; |
#endif |
#endif |
// |
// Basic EFI types of various widths |
// |
#ifndef __WCHAR_TYPE__ |
# define __WCHAR_TYPE__ short |
#endif |
typedef uint64_t UINT64; |
typedef int64_t INT64; |
#ifndef _BASETSD_H_ |
typedef uint32_t UINT32; |
typedef int32_t INT32; |
#endif |
typedef uint16_t UINT16; |
typedef int16_t INT16; |
typedef uint8_t UINT8; |
typedef int8_t INT8; |
typedef __WCHAR_TYPE__ WCHAR; |
#undef VOID |
#define VOID void |
typedef int32_t INTN; |
typedef uint32_t UINTN; |
#ifdef EFI_NT_EMULATOR |
#define POST_CODE(_Data) |
#else |
#ifdef EFI_DEBUG |
#define POST_CODE(_Data) __asm mov eax,(_Data) __asm out 0x80,al |
#else |
#define POST_CODE(_Data) |
#endif |
#endif |
#define EFIERR(a) (0x80000000 | a) |
#define EFI_ERROR_MASK 0x80000000 |
#define EFIERR_OEM(a) (0xc0000000 | a) |
#define BAD_POINTER 0xFBFBFBFB |
#define MAX_ADDRESS 0xFFFFFFFF |
#ifdef EFI_NT_EMULATOR |
#define BREAKPOINT() __asm { int 3 } |
#else |
#define BREAKPOINT() while (TRUE); // Make it hang on Bios[Dbg]32 |
#endif |
// |
// Pointers must be aligned to these address to function |
// |
#define MIN_ALIGNMENT_SIZE 4 |
#define ALIGN_VARIABLE(Value ,Adjustment) \ |
(UINTN)Adjustment = 0; \ |
if((UINTN)Value % MIN_ALIGNMENT_SIZE) \ |
(UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \ |
Value = (UINTN)Value + (UINTN)Adjustment |
// |
// Define macros to build data structure signatures from characters. |
// |
#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8)) |
#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16)) |
#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32)) |
// |
// To export & import functions in the EFI emulator environment |
// |
#if EFI_NT_EMULATOR |
#define EXPORTAPI __declspec( dllexport ) |
#else |
#define EXPORTAPI |
#endif |
// |
// EFIAPI - prototype calling convention for EFI function pointers |
// BOOTSERVICE - prototype for implementation of a boot service interface |
// RUNTIMESERVICE - prototype for implementation of a runtime service interface |
// RUNTIMEFUNCTION - prototype for implementation of a runtime function that is not a service |
// RUNTIME_CODE - pragma macro for declaring runtime code |
// |
#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options |
#if _MSC_EXTENSIONS |
#define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler |
#else |
#define EFIAPI // Substitute expresion to force C calling convention |
#endif |
#endif |
#define BOOTSERVICE |
//#define RUNTIMESERVICE(proto,a) alloc_text("rtcode",a); proto a |
//#define RUNTIMEFUNCTION(proto,a) alloc_text("rtcode",a); proto a |
#define RUNTIMESERVICE |
#define RUNTIMEFUNCTION |
#define RUNTIME_CODE(a) alloc_text("rtcode", a) |
#define BEGIN_RUNTIME_DATA() data_seg("rtdata") |
#define END_RUNTIME_DATA() data_seg("") |
#define VOLATILE volatile |
#define MEMORY_FENCE() |
#ifdef EFI_NT_EMULATOR |
// |
// To help ensure proper coding of integrated drivers, they are |
// compiled as DLLs. In NT they require a dll init entry pointer. |
// The macro puts a stub entry point into the DLL so it will load. |
// |
#define EFI_DRIVER_ENTRY_POINT(InitFunction) \ |
UINTN \ |
__stdcall \ |
_DllMainCRTStartup ( \ |
UINTN Inst, \ |
UINTN reason_for_call, \ |
VOID *rserved \ |
) \ |
{ \ |
return 1; \ |
} \ |
\ |
int \ |
EXPORTAPI \ |
__cdecl \ |
InitializeDriver ( \ |
void *ImageHandle, \ |
void *SystemTable \ |
) \ |
{ \ |
return InitFunction(ImageHandle, SystemTable); \ |
} |
#define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \ |
(_if)->LoadInternal(type, name, NULL) |
#else // EFI_NT_EMULATOR |
// |
// When build similiar to FW, then link everything together as |
// one big module. |
// |
#define EFI_DRIVER_ENTRY_POINT(InitFunction) |
#define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \ |
(_if)->LoadInternal(type, name, entry) |
#endif // EFI_FW_NT |
// |
// Some compilers don't support the forward reference construct: |
// typedef struct XXXXX |
// |
// The following macro provide a workaround for such cases. |
// |
#ifdef NO_INTERFACE_DECL |
#define INTERFACE_DECL(x) |
#else |
#ifdef __GNUC__ |
#define INTERFACE_DECL(x) struct x |
#else |
#define INTERFACE_DECL(x) typedef struct x |
#endif |
#endif |
#if _MSC_EXTENSIONS |
#pragma warning ( disable : 4731 ) // Suppress warnings about modification of EBP |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia32/pe.h |
---|
0,0 → 1,591 |
/* |
PE32+ header file |
*/ |
#ifndef _PE_H |
#define _PE_H |
#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ |
#define IMAGE_OS2_SIGNATURE 0x454E // NE |
#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE |
#define IMAGE_NT_SIGNATURE 0x00004550 // PE00 |
#define IMAGE_EDOS_SIGNATURE 0x44454550 // PEED |
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header |
UINT16 e_magic; // Magic number |
UINT16 e_cblp; // Bytes on last page of file |
UINT16 e_cp; // Pages in file |
UINT16 e_crlc; // Relocations |
UINT16 e_cparhdr; // Size of header in paragraphs |
UINT16 e_minalloc; // Minimum extra paragraphs needed |
UINT16 e_maxalloc; // Maximum extra paragraphs needed |
UINT16 e_ss; // Initial (relative) SS value |
UINT16 e_sp; // Initial SP value |
UINT16 e_csum; // Checksum |
UINT16 e_ip; // Initial IP value |
UINT16 e_cs; // Initial (relative) CS value |
UINT16 e_lfarlc; // File address of relocation table |
UINT16 e_ovno; // Overlay number |
UINT16 e_res[4]; // Reserved words |
UINT16 e_oemid; // OEM identifier (for e_oeminfo) |
UINT16 e_oeminfo; // OEM information; e_oemid specific |
UINT16 e_res2[10]; // Reserved words |
UINT32 e_lfanew; // File address of new exe header |
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; |
typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header |
UINT16 ne_magic; // Magic number |
UINT8 ne_ver; // Version number |
UINT8 ne_rev; // Revision number |
UINT16 ne_enttab; // Offset of Entry Table |
UINT16 ne_cbenttab; // Number of bytes in Entry Table |
UINT32 ne_crc; // Checksum of whole file |
UINT16 ne_flags; // Flag UINT16 |
UINT16 ne_autodata; // Automatic data segment number |
UINT16 ne_heap; // Initial heap allocation |
UINT16 ne_stack; // Initial stack allocation |
UINT32 ne_csip; // Initial CS:IP setting |
UINT32 ne_sssp; // Initial SS:SP setting |
UINT16 ne_cseg; // Count of file segments |
UINT16 ne_cmod; // Entries in Module Reference Table |
UINT16 ne_cbnrestab; // Size of non-resident name table |
UINT16 ne_segtab; // Offset of Segment Table |
UINT16 ne_rsrctab; // Offset of Resource Table |
UINT16 ne_restab; // Offset of resident name table |
UINT16 ne_modtab; // Offset of Module Reference Table |
UINT16 ne_imptab; // Offset of Imported Names Table |
UINT32 ne_nrestab; // Offset of Non-resident Names Table |
UINT16 ne_cmovent; // Count of movable entries |
UINT16 ne_align; // Segment alignment shift count |
UINT16 ne_cres; // Count of resource segments |
UINT8 ne_exetyp; // Target Operating system |
UINT8 ne_flagsothers; // Other .EXE flags |
UINT16 ne_pretthunks; // offset to return thunks |
UINT16 ne_psegrefbytes; // offset to segment ref. bytes |
UINT16 ne_swaparea; // Minimum code swap area size |
UINT16 ne_expver; // Expected Windows version number |
} IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER; |
// |
// File header format. |
// |
typedef struct _IMAGE_FILE_HEADER { |
UINT16 Machine; |
UINT16 NumberOfSections; |
UINT32 TimeDateStamp; |
UINT32 PointerToSymbolTable; |
UINT32 NumberOfSymbols; |
UINT16 SizeOfOptionalHeader; |
UINT16 Characteristics; |
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; |
#define IMAGE_SIZEOF_FILE_HEADER 20 |
#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file. |
#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references). |
#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file. |
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file. |
#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed. |
#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine. |
#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file |
#define IMAGE_FILE_SYSTEM 0x1000 // System File. |
#define IMAGE_FILE_DLL 0x2000 // File is a DLL. |
#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. |
#define IMAGE_FILE_MACHINE_UNKNOWN 0 |
#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386. |
#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0540 big-endian |
#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian |
#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP |
#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian |
#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine |
// |
// Directory format. |
// |
typedef struct _IMAGE_DATA_DIRECTORY { |
UINT32 VirtualAddress; |
UINT32 Size; |
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; |
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 |
// |
// Optional header format. |
// |
typedef struct _IMAGE_OPTIONAL_HEADER { |
// |
// Standard fields. |
// |
UINT16 Magic; |
UINT8 MajorLinkerVersion; |
UINT8 MinorLinkerVersion; |
UINT32 SizeOfCode; |
UINT32 SizeOfInitializedData; |
UINT32 SizeOfUninitializedData; |
UINT32 AddressOfEntryPoint; |
UINT32 BaseOfCode; |
UINT32 BaseOfData; |
// |
// NT additional fields. |
// |
UINT32 ImageBase; |
UINT32 SectionAlignment; |
UINT32 FileAlignment; |
UINT16 MajorOperatingSystemVersion; |
UINT16 MinorOperatingSystemVersion; |
UINT16 MajorImageVersion; |
UINT16 MinorImageVersion; |
UINT16 MajorSubsystemVersion; |
UINT16 MinorSubsystemVersion; |
UINT32 Reserved1; |
UINT32 SizeOfImage; |
UINT32 SizeOfHeaders; |
UINT32 CheckSum; |
UINT16 Subsystem; |
UINT16 DllCharacteristics; |
UINT32 SizeOfStackReserve; |
UINT32 SizeOfStackCommit; |
UINT32 SizeOfHeapReserve; |
UINT32 SizeOfHeapCommit; |
UINT32 LoaderFlags; |
UINT32 NumberOfRvaAndSizes; |
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; |
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER; |
typedef struct _IMAGE_ROM_OPTIONAL_HEADER { |
UINT16 Magic; |
UINT8 MajorLinkerVersion; |
UINT8 MinorLinkerVersion; |
UINT32 SizeOfCode; |
UINT32 SizeOfInitializedData; |
UINT32 SizeOfUninitializedData; |
UINT32 AddressOfEntryPoint; |
UINT32 BaseOfCode; |
UINT32 BaseOfData; |
UINT32 BaseOfBss; |
UINT32 GprMask; |
UINT32 CprMask[4]; |
UINT32 GpValue; |
} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER; |
#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 |
#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 |
#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224 |
#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b |
#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 |
typedef struct _IMAGE_NT_HEADERS { |
UINT32 Signature; |
IMAGE_FILE_HEADER FileHeader; |
IMAGE_OPTIONAL_HEADER OptionalHeader; |
} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS; |
typedef struct _IMAGE_ROM_HEADERS { |
IMAGE_FILE_HEADER FileHeader; |
IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; |
} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS; |
#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \ |
((UINT32)ntheader + \ |
FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ |
((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \ |
)) |
// Subsystem Values |
#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem. |
#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem. |
#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem. |
#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem. |
#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem. |
#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem. |
// Directory Entries |
#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory |
#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory |
#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory |
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory |
#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory |
#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table |
#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory |
#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String |
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP) |
#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory |
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory |
// |
// Section header format. |
// |
#define IMAGE_SIZEOF_SHORT_NAME 8 |
typedef struct _IMAGE_SECTION_HEADER { |
UINT8 Name[IMAGE_SIZEOF_SHORT_NAME]; |
union { |
UINT32 PhysicalAddress; |
UINT32 VirtualSize; |
} Misc; |
UINT32 VirtualAddress; |
UINT32 SizeOfRawData; |
UINT32 PointerToRawData; |
UINT32 PointerToRelocations; |
UINT32 PointerToLinenumbers; |
UINT16 NumberOfRelocations; |
UINT16 NumberOfLinenumbers; |
UINT32 Characteristics; |
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; |
#define IMAGE_SIZEOF_SECTION_HEADER 40 |
#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved. |
#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code. |
#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data. |
#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data. |
#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved. |
#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information. |
#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image. |
#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat. |
#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 // |
#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 // |
#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 // |
#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 // |
#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified. |
#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 // |
#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 // |
#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded. |
#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable. |
#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable. |
#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable. |
#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable. |
#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable. |
#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable. |
// |
// Symbol format. |
// |
#define IMAGE_SIZEOF_SYMBOL 18 |
// |
// Section values. |
// |
// Symbols have a section number of the section in which they are |
// defined. Otherwise, section numbers have the following meanings: |
// |
#define IMAGE_SYM_UNDEFINED (UINT16)0 // Symbol is undefined or is common. |
#define IMAGE_SYM_ABSOLUTE (UINT16)-1 // Symbol is an absolute value. |
#define IMAGE_SYM_DEBUG (UINT16)-2 // Symbol is a special debug item. |
// |
// Type (fundamental) values. |
// |
#define IMAGE_SYM_TYPE_NULL 0 // no type. |
#define IMAGE_SYM_TYPE_VOID 1 // |
#define IMAGE_SYM_TYPE_CHAR 2 // type character. |
#define IMAGE_SYM_TYPE_SHORT 3 // type short integer. |
#define IMAGE_SYM_TYPE_INT 4 // |
#define IMAGE_SYM_TYPE_LONG 5 // |
#define IMAGE_SYM_TYPE_FLOAT 6 // |
#define IMAGE_SYM_TYPE_DOUBLE 7 // |
#define IMAGE_SYM_TYPE_STRUCT 8 // |
#define IMAGE_SYM_TYPE_UNION 9 // |
#define IMAGE_SYM_TYPE_ENUM 10 // enumeration. |
#define IMAGE_SYM_TYPE_MOE 11 // member of enumeration. |
#define IMAGE_SYM_TYPE_BYTE 12 // |
#define IMAGE_SYM_TYPE_WORD 13 // |
#define IMAGE_SYM_TYPE_UINT 14 // |
#define IMAGE_SYM_TYPE_DWORD 15 // |
// |
// Type (derived) values. |
// |
#define IMAGE_SYM_DTYPE_NULL 0 // no derived type. |
#define IMAGE_SYM_DTYPE_POINTER 1 // pointer. |
#define IMAGE_SYM_DTYPE_FUNCTION 2 // function. |
#define IMAGE_SYM_DTYPE_ARRAY 3 // array. |
// |
// Storage classes. |
// |
#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE )-1 |
#define IMAGE_SYM_CLASS_NULL 0 |
#define IMAGE_SYM_CLASS_AUTOMATIC 1 |
#define IMAGE_SYM_CLASS_EXTERNAL 2 |
#define IMAGE_SYM_CLASS_STATIC 3 |
#define IMAGE_SYM_CLASS_REGISTER 4 |
#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 |
#define IMAGE_SYM_CLASS_LABEL 6 |
#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 |
#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 |
#define IMAGE_SYM_CLASS_ARGUMENT 9 |
#define IMAGE_SYM_CLASS_STRUCT_TAG 10 |
#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 |
#define IMAGE_SYM_CLASS_UNION_TAG 12 |
#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 |
#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 |
#define IMAGE_SYM_CLASS_ENUM_TAG 15 |
#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 |
#define IMAGE_SYM_CLASS_REGISTER_PARAM 17 |
#define IMAGE_SYM_CLASS_BIT_FIELD 18 |
#define IMAGE_SYM_CLASS_BLOCK 100 |
#define IMAGE_SYM_CLASS_FUNCTION 101 |
#define IMAGE_SYM_CLASS_END_OF_STRUCT 102 |
#define IMAGE_SYM_CLASS_FILE 103 |
// new |
#define IMAGE_SYM_CLASS_SECTION 104 |
#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 |
// type packing constants |
#define N_BTMASK 017 |
#define N_TMASK 060 |
#define N_TMASK1 0300 |
#define N_TMASK2 0360 |
#define N_BTSHFT 4 |
#define N_TSHIFT 2 |
// MACROS |
// |
// Communal selection types. |
// |
#define IMAGE_COMDAT_SELECT_NODUPLICATES 1 |
#define IMAGE_COMDAT_SELECT_ANY 2 |
#define IMAGE_COMDAT_SELECT_SAME_SIZE 3 |
#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 |
#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 |
#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 |
#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 |
#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 |
// |
// Relocation format. |
// |
typedef struct _IMAGE_RELOCATION { |
UINT32 VirtualAddress; |
UINT32 SymbolTableIndex; |
UINT16 Type; |
} IMAGE_RELOCATION; |
#define IMAGE_SIZEOF_RELOCATION 10 |
// |
// I386 relocation types. |
// |
#define IMAGE_REL_I386_ABSOLUTE 0 // Reference is absolute, no relocation is necessary |
#define IMAGE_REL_I386_DIR16 01 // Direct 16-bit reference to the symbols virtual address |
#define IMAGE_REL_I386_REL16 02 // PC-relative 16-bit reference to the symbols virtual address |
#define IMAGE_REL_I386_DIR32 06 // Direct 32-bit reference to the symbols virtual address |
#define IMAGE_REL_I386_DIR32NB 07 // Direct 32-bit reference to the symbols virtual address, base not included |
#define IMAGE_REL_I386_SEG12 011 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address |
#define IMAGE_REL_I386_SECTION 012 |
#define IMAGE_REL_I386_SECREL 013 |
#define IMAGE_REL_I386_REL32 024 // PC-relative 32-bit reference to the symbols virtual address |
// |
// MIPS relocation types. |
// |
#define IMAGE_REL_MIPS_ABSOLUTE 0 // Reference is absolute, no relocation is necessary |
#define IMAGE_REL_MIPS_REFHALF 01 |
#define IMAGE_REL_MIPS_REFWORD 02 |
#define IMAGE_REL_MIPS_JMPADDR 03 |
#define IMAGE_REL_MIPS_REFHI 04 |
#define IMAGE_REL_MIPS_REFLO 05 |
#define IMAGE_REL_MIPS_GPREL 06 |
#define IMAGE_REL_MIPS_LITERAL 07 |
#define IMAGE_REL_MIPS_SECTION 012 |
#define IMAGE_REL_MIPS_SECREL 013 |
#define IMAGE_REL_MIPS_REFWORDNB 042 |
#define IMAGE_REL_MIPS_PAIR 045 |
// |
// Alpha Relocation types. |
// |
#define IMAGE_REL_ALPHA_ABSOLUTE 0x0 |
#define IMAGE_REL_ALPHA_REFLONG 0x1 |
#define IMAGE_REL_ALPHA_REFQUAD 0x2 |
#define IMAGE_REL_ALPHA_GPREL32 0x3 |
#define IMAGE_REL_ALPHA_LITERAL 0x4 |
#define IMAGE_REL_ALPHA_LITUSE 0x5 |
#define IMAGE_REL_ALPHA_GPDISP 0x6 |
#define IMAGE_REL_ALPHA_BRADDR 0x7 |
#define IMAGE_REL_ALPHA_HINT 0x8 |
#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x9 |
#define IMAGE_REL_ALPHA_REFHI 0xA |
#define IMAGE_REL_ALPHA_REFLO 0xB |
#define IMAGE_REL_ALPHA_PAIR 0xC |
#define IMAGE_REL_ALPHA_MATCH 0xD |
#define IMAGE_REL_ALPHA_SECTION 0xE |
#define IMAGE_REL_ALPHA_SECREL 0xF |
#define IMAGE_REL_ALPHA_REFLONGNB 0x10 |
// |
// IBM PowerPC relocation types. |
// |
#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP |
#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address |
#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address |
#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute) |
#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address |
#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword) |
#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative) |
#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative) |
#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base |
#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword) |
#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base |
#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr) |
#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number |
#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code |
#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction |
#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type |
// Flag bits in IMAGE_RELOCATION.TYPE |
#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it |
#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken |
#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken |
#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc) |
// |
// Based relocation format. |
// |
typedef struct _IMAGE_BASE_RELOCATION { |
UINT32 VirtualAddress; |
UINT32 SizeOfBlock; |
// UINT16 TypeOffset[1]; |
} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION; |
#define IMAGE_SIZEOF_BASE_RELOCATION 8 |
// |
// Based relocation types. |
// |
#define IMAGE_REL_BASED_ABSOLUTE 0 |
#define IMAGE_REL_BASED_HIGH 1 |
#define IMAGE_REL_BASED_LOW 2 |
#define IMAGE_REL_BASED_HIGHLOW 3 |
#define IMAGE_REL_BASED_HIGHADJ 4 |
#define IMAGE_REL_BASED_MIPS_JMPADDR 5 |
#define IMAGE_REL_BASED_IA64_IMM64 9 |
#define IMAGE_REL_BASED_DIR64 10 |
// |
// Line number format. |
// |
typedef struct _IMAGE_LINENUMBER { |
union { |
UINT32 SymbolTableIndex; // Symbol table index of function name if Linenumber is 0. |
UINT32 VirtualAddress; // Virtual address of line number. |
} Type; |
UINT16 Linenumber; // Line number. |
} IMAGE_LINENUMBER; |
#define IMAGE_SIZEOF_LINENUMBER 6 |
// |
// Archive format. |
// |
#define IMAGE_ARCHIVE_START_SIZE 8 |
#define IMAGE_ARCHIVE_START "!<arch>\n" |
#define IMAGE_ARCHIVE_END "`\n" |
#define IMAGE_ARCHIVE_PAD "\n" |
#define IMAGE_ARCHIVE_LINKER_MEMBER "/ " |
#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " |
typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { |
UINT8 Name[16]; // File member name - `/' terminated. |
UINT8 Date[12]; // File member date - decimal. |
UINT8 UserID[6]; // File member user id - decimal. |
UINT8 GroupID[6]; // File member group id - decimal. |
UINT8 Mode[8]; // File member mode - octal. |
UINT8 Size[10]; // File member size - decimal. |
UINT8 EndHeader[2]; // String to end header. |
} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER; |
#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 |
// |
// DLL support. |
// |
// |
// Export Format |
// |
typedef struct _IMAGE_EXPORT_DIRECTORY { |
UINT32 Characteristics; |
UINT32 TimeDateStamp; |
UINT16 MajorVersion; |
UINT16 MinorVersion; |
UINT32 Name; |
UINT32 Base; |
UINT32 NumberOfFunctions; |
UINT32 NumberOfNames; |
UINT32 *AddressOfFunctions; |
UINT32 *AddressOfNames; |
UINT32 *AddressOfNameOrdinals; |
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; |
// |
// Import Format |
// |
typedef struct _IMAGE_IMPORT_BY_NAME { |
UINT16 Hint; |
UINT8 Name[1]; |
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; |
typedef struct _IMAGE_THUNK_DATA { |
union { |
UINT32 Function; |
UINT32 Ordinal; |
PIMAGE_IMPORT_BY_NAME AddressOfData; |
} u1; |
} IMAGE_THUNK_DATA, *PIMAGE_THUNK_DATA; |
#define IMAGE_ORDINAL_FLAG 0x80000000 |
#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0) |
#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff) |
typedef struct _IMAGE_IMPORT_DESCRIPTOR { |
UINT32 Characteristics; |
UINT32 TimeDateStamp; |
UINT32 ForwarderChain; |
UINT32 Name; |
PIMAGE_THUNK_DATA FirstThunk; |
} IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efinet.h |
---|
0,0 → 1,340 |
#ifndef _EFINET_H |
#define _EFINET_H |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
efinet.h |
Abstract: |
EFI Simple Network protocol |
Revision History |
--*/ |
/////////////////////////////////////////////////////////////////////////////// |
// |
// Simple Network Protocol |
// |
#define EFI_SIMPLE_NETWORK_PROTOCOL \ |
{ 0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} } |
INTERFACE_DECL(_EFI_SIMPLE_NETWORK); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef struct { |
// |
// Total number of frames received. Includes frames with errors and |
// dropped frames. |
// |
UINT64 RxTotalFrames; |
// |
// Number of valid frames received and copied into receive buffers. |
// |
UINT64 RxGoodFrames; |
// |
// Number of frames below the minimum length for the media. |
// This would be <64 for ethernet. |
// |
UINT64 RxUndersizeFrames; |
// |
// Number of frames longer than the maxminum length for the |
// media. This would be >1500 for ethernet. |
// |
UINT64 RxOversizeFrames; |
// |
// Valid frames that were dropped because receive buffers were full. |
// |
UINT64 RxDroppedFrames; |
// |
// Number of valid unicast frames received and not dropped. |
// |
UINT64 RxUnicastFrames; |
// |
// Number of valid broadcast frames received and not dropped. |
// |
UINT64 RxBroadcastFrames; |
// |
// Number of valid mutlicast frames received and not dropped. |
// |
UINT64 RxMulticastFrames; |
// |
// Number of frames w/ CRC or alignment errors. |
// |
UINT64 RxCrcErrorFrames; |
// |
// Total number of bytes received. Includes frames with errors |
// and dropped frames. |
// |
UINT64 RxTotalBytes; |
// |
// Transmit statistics. |
// |
UINT64 TxTotalFrames; |
UINT64 TxGoodFrames; |
UINT64 TxUndersizeFrames; |
UINT64 TxOversizeFrames; |
UINT64 TxDroppedFrames; |
UINT64 TxUnicastFrames; |
UINT64 TxBroadcastFrames; |
UINT64 TxMulticastFrames; |
UINT64 TxCrcErrorFrames; |
UINT64 TxTotalBytes; |
// |
// Number of collisions detection on this subnet. |
// |
UINT64 Collisions; |
// |
// Number of frames destined for unsupported protocol. |
// |
UINT64 UnsupportedProtocol; |
} EFI_NETWORK_STATISTICS; |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef enum { |
EfiSimpleNetworkStopped, |
EfiSimpleNetworkStarted, |
EfiSimpleNetworkInitialized, |
EfiSimpleNetworkMaxState |
} EFI_SIMPLE_NETWORK_STATE; |
/////////////////////////////////////////////////////////////////////////////// |
// |
#define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01 |
#define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02 |
#define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04 |
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08 |
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10 |
/////////////////////////////////////////////////////////////////////////////// |
// |
#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01 |
#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02 |
#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04 |
#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08 |
/////////////////////////////////////////////////////////////////////////////// |
// |
#define MAX_MCAST_FILTER_CNT 16 |
typedef struct { |
UINT32 State; |
UINT32 HwAddressSize; |
UINT32 MediaHeaderSize; |
UINT32 MaxPacketSize; |
UINT32 NvRamSize; |
UINT32 NvRamAccessSize; |
UINT32 ReceiveFilterMask; |
UINT32 ReceiveFilterSetting; |
UINT32 MaxMCastFilterCount; |
UINT32 MCastFilterCount; |
EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT]; |
EFI_MAC_ADDRESS CurrentAddress; |
EFI_MAC_ADDRESS BroadcastAddress; |
EFI_MAC_ADDRESS PermanentAddress; |
UINT8 IfType; |
BOOLEAN MacAddressChangeable; |
BOOLEAN MultipleTxSupported; |
BOOLEAN MediaPresentSupported; |
BOOLEAN MediaPresent; |
} EFI_SIMPLE_NETWORK_MODE; |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_START) ( |
IN struct _EFI_SIMPLE_NETWORK *This |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_STOP) ( |
IN struct _EFI_SIMPLE_NETWORK *This |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN UINTN ExtraRxBufferSize OPTIONAL, |
IN UINTN ExtraTxBufferSize OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_RESET) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN ExtendedVerification |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) ( |
IN struct _EFI_SIMPLE_NETWORK *This |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN UINT32 Enable, |
IN UINT32 Disable, |
IN BOOLEAN ResetMCastFilter, |
IN UINTN MCastFilterCnt OPTIONAL, |
IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN Reset, |
IN EFI_MAC_ADDRESS *New OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN Reset, |
IN OUT UINTN *StatisticsSize OPTIONAL, |
OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN IPv6, |
IN EFI_IP_ADDRESS *IP, |
OUT EFI_MAC_ADDRESS *MAC |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_NVDATA) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN ReadWrite, |
IN UINTN Offset, |
IN UINTN BufferSize, |
IN OUT VOID *Buffer |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
OUT UINT32 *InterruptStatus OPTIONAL, |
OUT VOID **TxBuf OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN UINTN HeaderSize, |
IN UINTN BufferSize, |
IN VOID *Buffer, |
IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, |
IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, |
IN UINT16 *Protocol OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
OUT UINTN *HeaderSize OPTIONAL, |
IN OUT UINTN *BufferSize, |
OUT VOID *Buffer, |
OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, |
OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, |
OUT UINT16 *Protocol OPTIONAL |
); |
/////////////////////////////////////////////////////////////////////////////// |
// |
#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION 0x00010000 |
typedef struct _EFI_SIMPLE_NETWORK { |
UINT64 Revision; |
EFI_SIMPLE_NETWORK_START Start; |
EFI_SIMPLE_NETWORK_STOP Stop; |
EFI_SIMPLE_NETWORK_INITIALIZE Initialize; |
EFI_SIMPLE_NETWORK_RESET Reset; |
EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown; |
EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters; |
EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress; |
EFI_SIMPLE_NETWORK_STATISTICS Statistics; |
EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac; |
EFI_SIMPLE_NETWORK_NVDATA NvData; |
EFI_SIMPLE_NETWORK_GET_STATUS GetStatus; |
EFI_SIMPLE_NETWORK_TRANSMIT Transmit; |
EFI_SIMPLE_NETWORK_RECEIVE Receive; |
EFI_EVENT WaitForPacket; |
EFI_SIMPLE_NETWORK_MODE *Mode; |
} EFI_SIMPLE_NETWORK; |
#endif /* _EFINET_H */ |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efidebug.h |
---|
0,0 → 1,110 |
#ifndef _EFI_DEBUG_H |
#define _EFI_DEBUG_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efidebug.h |
Abstract: |
EFI library debug functions |
Revision History |
--*/ |
extern UINTN EFIDebug; |
#if EFI_DEBUG |
#define DBGASSERT(a) DbgAssert(__FILE__, __LINE__, #a) |
#define DEBUG(a) DbgPrint a |
#else |
#define DBGASSERT(a) |
#define DEBUG(a) |
#endif |
#if EFI_DEBUG_CLEAR_MEMORY |
#define DBGSETMEM(a,l) SetMem(a,l,(CHAR8)BAD_POINTER) |
#else |
#define DBGSETMEM(a,l) |
#endif |
#define D_INIT 0x00000001 // Initialization style messages |
#define D_WARN 0x00000002 // Warnings |
#define D_LOAD 0x00000004 // Load events |
#define D_FS 0x00000008 // EFI File system |
#define D_POOL 0x00000010 // Alloc & Free's |
#define D_PAGE 0x00000020 // Alloc & Free's |
#define D_INFO 0x00000040 // Verbose |
#define D_VAR 0x00000100 // Variable |
#define D_PARSE 0x00000200 // Command parsing |
#define D_BM 0x00000400 // Boot manager |
#define D_BLKIO 0x00001000 // BlkIo Driver |
#define D_BLKIO_ULTRA 0x00002000 // BlkIo Driver |
#define D_NET 0x00004000 // SNI Driver |
#define D_NET_ULTRA 0x00008000 // SNI Driver |
#define D_TXTIN 0x00010000 // Simple Input Driver |
#define D_TXTOUT 0x00020000 // Simple Text Output Driver |
#define D_ERROR_ATA 0x00040000 // ATA error messages |
#define D_ERROR 0x80000000 // Error |
#define D_RESERVED 0x7fffC880 // Bits not reserved above |
// |
// Current Debug level of the system, value of EFIDebug |
// |
//#define EFI_DBUG_MASK (D_ERROR | D_WARN | D_LOAD | D_BLKIO | D_INIT) |
#define EFI_DBUG_MASK (D_ERROR) |
// |
// |
// |
#if EFI_DEBUG |
#define ASSERT(a) if(!(a)) DBGASSERT(a) |
#define ASSERT_LOCKED(l) if(!(l)->Lock) DBGASSERT(l not locked) |
#define ASSERT_STRUCT(p,t) DBGASSERT(t not structure), p |
#else |
#define ASSERT(a) |
#define ASSERT_LOCKED(l) |
#define ASSERT_STRUCT(p,t) |
#endif |
// |
// Prototypes |
// |
INTN |
DbgAssert ( |
CHAR8 *file, |
INTN lineno, |
CHAR8 *string |
); |
INTN |
DbgPrint ( |
INTN mask, |
CHAR8 *format, |
... |
); |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/intload.h |
---|
0,0 → 1,27 |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
intload |
Abstract: |
EFI support for loading internally linked in apps |
Revision History |
--*/ |
#ifndef _INTERNAL_LOAD_INCLUDE_ |
#define _INTERNAL_LOAD_INCLUDE_ |
// {D65A6B8C-71E5-4df0-A909-F0D2992B5AA9} |
#define INTERNAL_SHELL_GUID \ |
{ 0xd65a6b8c, 0x71e5, 0x4df0, {0xa9, 0x09, 0xf0, 0xd2, 0x99, 0x2b, 0x5a, 0xa9} } |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/efivar.h |
---|
0,0 → 1,133 |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
Abstract: |
Revision History |
--*/ |
// |
// The variable store protocol interface is specific to the reference |
// implementation. The initialization code adds variable store devices |
// to the system, and the FW connects to the devices to provide the |
// variable store interfaces through these devices. |
// |
// |
// Variable Store Device protocol |
// |
#define VARIABLE_STORE_PROTOCOL \ |
{ 0xf088cd91, 0xa046, 0x11d2, {0x8e, 0x42, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
INTERFACE_DECL(_EFI_VARIABLE_STORE); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_STORE_CLEAR) ( |
IN struct _EFI_VARIABLE_STORE *This, |
IN UINTN BankNo, |
IN OUT VOID *Scratch |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_STORE_READ) ( |
IN struct _EFI_VARIABLE_STORE *This, |
IN UINTN BankNo, |
IN UINTN Offset, |
IN UINTN BufferSize, |
OUT VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_STORE_UPDATE) ( |
IN struct _EFI_VARIABLE_STORE *This, |
IN UINTN BankNo, |
IN UINTN Offset, |
IN UINTN BufferSize, |
IN VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_STORE_SIZE) ( |
IN struct _EFI_VARIABLE_STORE *This, |
IN UINTN NoBanks |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_TRANSACTION_UPDATE) ( |
IN struct _EFI_VARIABLE_STORE *This, |
IN UINTN BankNo, |
IN VOID *NewContents |
); |
typedef struct _EFI_VARIABLE_STORE { |
// |
// Number of banks and bank size |
// |
UINT32 Attributes; |
UINT32 BankSize; |
UINT32 NoBanks; |
// |
// Functions to access the storage banks |
// |
EFI_STORE_CLEAR ClearStore; |
EFI_STORE_READ ReadStore; |
EFI_STORE_UPDATE UpdateStore; |
EFI_STORE_SIZE SizeStore OPTIONAL; |
EFI_TRANSACTION_UPDATE TransactionUpdate OPTIONAL; |
} EFI_VARIABLE_STORE; |
// |
// |
// ClearStore() - A function to clear the requested storage bank. A cleared |
// bank contains all "on" bits. |
// |
// ReadStore() - Read data from the requested store. |
// |
// UpdateStore() - Updates data on the requested store. The FW will only |
// ever issue updates to clear bits in the store. Updates must be |
// performed in LSb to MSb order of the update buffer. |
// |
// SizeStore() - An optional function for non-runtime stores that can be |
// dynamically sized. The FW will only ever increase or decrease the store |
// by 1 banksize at a time, and it is always adding or removing a bank from |
// the end of the store. |
// |
// By default the FW will update variables and storage banks in an |
// "atomic" manner by keeping 1 old copy of the data during an update, |
// and recovering appropiately if the power is lost during the middle |
// of an operation. To do this the FW needs to have multiple banks |
// of storage dedicated to its use. If that's not possible, the driver |
// can implement an atomic bank update function and the FW will allow |
// 1 bank in this case. (It will allow any number of banks, |
// but it won't require an "extra" bank to provide its bank transaction |
// function). |
// |
// TransactionUpdate() - An optional function that can clear & update an |
// entire bank in an "atomic" fashion. If the operation fails in the |
// middle the driver is responsible for having either the previous copy |
// of the bank's data or the new copy. A copy that's partially written |
// is not valid as internal data settings may get lost. Supply this |
// function only when needed. |
// |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/ia64/eficontext.h |
---|
0,0 → 1,208 |
/* |
* Copyright (c) 1999, 2000 |
* Intel Corporation. |
* 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, 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. |
* |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* |
* This product includes software developed by Intel Corporation and |
* its contributors. |
* |
* 4. Neither the name of Intel Corporation or its contributors may be |
* used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``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 INTEL CORPORATION OR CONTRIBUTORS 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. |
* |
*/ |
#ifndef _EFICONTEXT_H_ |
#define _EFICONTEXT_H_ |
// |
// IA-64 processor exception types |
// |
#define EXCPT_ALT_DTLB 4 |
#define EXCPT_DNESTED_TLB 5 |
#define EXCPT_BREAKPOINT 11 |
#define EXCPT_EXTERNAL_INTERRUPT 12 |
#define EXCPT_GEN_EXCEPT 24 |
#define EXCPT_NAT_CONSUMPTION 26 |
#define EXCPT_DEBUG_EXCEPT 29 |
#define EXCPT_UNALIGNED_ACCESS 30 |
#define EXCPT_FP_FAULT 32 |
#define EXCPT_FP_TRAP 33 |
#define EXCPT_TAKEN_BRANCH 35 |
#define EXCPT_SINGLE_STEP 36 |
// |
// IA-64 processor context definition - must be 512 byte aligned!!! |
// |
typedef |
struct { |
UINT64 reserved; // necessary to preserve alignment for the correct bits in UNAT and to insure F2 is 16 byte aligned... |
UINT64 r1; |
UINT64 r2; |
UINT64 r3; |
UINT64 r4; |
UINT64 r5; |
UINT64 r6; |
UINT64 r7; |
UINT64 r8; |
UINT64 r9; |
UINT64 r10; |
UINT64 r11; |
UINT64 r12; |
UINT64 r13; |
UINT64 r14; |
UINT64 r15; |
UINT64 r16; |
UINT64 r17; |
UINT64 r18; |
UINT64 r19; |
UINT64 r20; |
UINT64 r21; |
UINT64 r22; |
UINT64 r23; |
UINT64 r24; |
UINT64 r25; |
UINT64 r26; |
UINT64 r27; |
UINT64 r28; |
UINT64 r29; |
UINT64 r30; |
UINT64 r31; |
UINT64 f2[2]; |
UINT64 f3[2]; |
UINT64 f4[2]; |
UINT64 f5[2]; |
UINT64 f6[2]; |
UINT64 f7[2]; |
UINT64 f8[2]; |
UINT64 f9[2]; |
UINT64 f10[2]; |
UINT64 f11[2]; |
UINT64 f12[2]; |
UINT64 f13[2]; |
UINT64 f14[2]; |
UINT64 f15[2]; |
UINT64 f16[2]; |
UINT64 f17[2]; |
UINT64 f18[2]; |
UINT64 f19[2]; |
UINT64 f20[2]; |
UINT64 f21[2]; |
UINT64 f22[2]; |
UINT64 f23[2]; |
UINT64 f24[2]; |
UINT64 f25[2]; |
UINT64 f26[2]; |
UINT64 f27[2]; |
UINT64 f28[2]; |
UINT64 f29[2]; |
UINT64 f30[2]; |
UINT64 f31[2]; |
UINT64 pr; |
UINT64 b0; |
UINT64 b1; |
UINT64 b2; |
UINT64 b3; |
UINT64 b4; |
UINT64 b5; |
UINT64 b6; |
UINT64 b7; |
// application registers |
UINT64 ar_rsc; |
UINT64 ar_bsp; |
UINT64 ar_bspstore; |
UINT64 ar_rnat; |
UINT64 ar_fcr; |
UINT64 ar_eflag; |
UINT64 ar_csd; |
UINT64 ar_ssd; |
UINT64 ar_cflg; |
UINT64 ar_fsr; |
UINT64 ar_fir; |
UINT64 ar_fdr; |
UINT64 ar_ccv; |
UINT64 ar_unat; |
UINT64 ar_fpsr; |
UINT64 ar_pfs; |
UINT64 ar_lc; |
UINT64 ar_ec; |
// control registers |
UINT64 cr_dcr; |
UINT64 cr_itm; |
UINT64 cr_iva; |
UINT64 cr_pta; |
UINT64 cr_ipsr; |
UINT64 cr_isr; |
UINT64 cr_iip; |
UINT64 cr_ifa; |
UINT64 cr_itir; |
UINT64 cr_iipa; |
UINT64 cr_ifs; |
UINT64 cr_iim; |
UINT64 cr_iha; |
// debug registers |
UINT64 dbr0; |
UINT64 dbr1; |
UINT64 dbr2; |
UINT64 dbr3; |
UINT64 dbr4; |
UINT64 dbr5; |
UINT64 dbr6; |
UINT64 dbr7; |
UINT64 ibr0; |
UINT64 ibr1; |
UINT64 ibr2; |
UINT64 ibr3; |
UINT64 ibr4; |
UINT64 ibr5; |
UINT64 ibr6; |
UINT64 ibr7; |
// virtual registers |
UINT64 int_nat; // nat bits for R1-R31 |
} SYSTEM_CONTEXT; |
#endif /* _EFI_CONTEXT_H_ */ |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/eficonsplit.h |
---|
0,0 → 1,32 |
#ifndef _EFI_CONFORK_H |
#define _EFI_CONFORK_H |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
Abstract: |
Revision History |
--*/ |
// |
// ConOut Forker Protocol |
// |
#define TEXT_OUT_SPLITER_PROTOCOL \ |
{ 0x56d830a0, 0x7e7a, 0x11d3, {0xbb, 0xa0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
#define ERROR_OUT_SPLITER_PROTOCOL \ |
{ 0xf0ba9039, 0x68f1, 0x425e, {0xaa, 0x7f, 0xd9, 0xaa, 0xf9, 0x1b, 0x82, 0xa1}} |
#define TEXT_IN_SPLITER_PROTOCOL \ |
{ 0xf9a3c550, 0x7fb5, 0x11d3, {0xbb, 0xa0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/efidbg.h |
---|
0,0 → 1,210 |
/* |
* Copyright (c) 1999, 2000 |
* Intel Corporation. |
* 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, 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. |
* |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* |
* This product includes software developed by Intel Corporation and |
* its contributors. |
* |
* 4. Neither the name of Intel Corporation or its contributors may be |
* used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``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 INTEL CORPORATION OR CONTRIBUTORS 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. |
* |
*/ |
#ifndef _EFIDBG_H_ |
#define _EFIDBG_H_ |
#include "eficontext.h" |
#include "efiser.h" |
typedef struct _DEBUGPORT_16550_CONFIG_DATA { |
UINT32 PortAddress; |
UINT64 BaudRate; |
UINT32 ReceiveFifoDepth; |
UINT32 Timeout; |
UINT8 Parity; |
UINT8 DataBits; |
UINT8 StopBits; |
UINT32 ControlMask; |
BOOLEAN RtsCtsEnable; // RTS, CTS control |
} DEBUGPORT_16550_CONFIG_DATA; |
typedef struct _DEBUGPORT_16550_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
DEBUGPORT_16550_CONFIG_DATA ConfigData; |
} DEBUGPORT_16550_DEVICE_PATH; |
typedef union { |
EFI_DEVICE_PATH DevPath; |
DEBUGPORT_16550_DEVICE_PATH Uart; |
// add new types of debugport device paths to this union... |
} DEBUGPORT_DEV_PATH; |
// |
// Debug Support protocol {2755590C-6F3C-42FA-9EA4-A3BA543CDA25} |
// |
#define DEBUG_SUPPORT_PROTOCOL \ |
{ 0x2755590C, 0x6F3C, 0x42fa, 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } |
typedef UINTN EXCEPTION_TYPE; |
typedef |
VOID |
(*EXCEPTION_HANDLER) ( |
IN EXCEPTION_TYPE ExceptionType, |
IN SYSTEM_CONTEXT *SystemContext |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_REGISTER_TIMER_TICK_CALLBACK) ( |
IN struct _EFI_DEBUG_SUPPORT_INTERFACE *This, |
IN EXCEPTION_HANDLER TimerTickCallback |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_REGISTER_EXCEPTION_HANDLER) ( |
IN struct _EFI_DEBUG_SUPPORT_INTERFACE *This, |
IN EXCEPTION_HANDLER ExceptionHandler, |
IN EXCEPTION_TYPE ExceptionType |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_IP_CALL_TRACE) ( |
IN struct _EFI_DEBUG_SUPPORT_INTERFACE *This |
); |
#define EFI_DEBUG_SUPPORT_INTERFACE_REVISION 0x00010000 |
typedef struct _EFI_DEBUG_SUPPORT_INTERFACE { |
UINT32 Revision; |
EFI_REGISTER_TIMER_TICK_CALLBACK RegisterTimerTickCallback; |
EFI_REGISTER_EXCEPTION_HANDLER RegisterExceptionHandler; |
EFI_IP_CALL_TRACE IpCallTrace; |
} EFI_DEBUG_SUPPORT_INTERFACE; |
// |
// Debugport io protocol {EBA4E8D2-3858-41EC-A281-2647BA9660D0} |
// |
#define DEBUGPORT_IO_PROTOCOL \ |
{ 0XEBA4E8D2, 0X3858, 0X41EC, 0XA2, 0X81, 0X26, 0X47, 0XBA, 0X96, 0X60, 0XD0 } |
typedef |
EFI_STATUS |
(EFIAPI *EFI_DEBUGPORT_IO_RESET) ( |
IN struct _EFI_DEBUGPORT_IO_INTERFACE *This |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_DEBUGPORT_IO_READ) ( |
IN struct _EFI_DEBUGPORT_IO_INTERFACE *This, |
IN OUT UINTN *BufferSize, |
OUT VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_DEBUGPORT_IO_WRITE) ( |
IN struct _EFI_DEBUGPORT_IO_INTERFACE *This, |
IN OUT UINTN *BufferSize, |
IN VOID *Buffer |
); |
#define EFI_DEBUGPORT_IO_INTERFACE_REVISION 0x00010000 |
typedef struct _EFI_DEBUGPORT_IO_INTERFACE { |
UINT32 Revision; |
EFI_DEBUGPORT_IO_READ Read; |
EFI_DEBUGPORT_IO_WRITE Write; |
EFI_DEBUGPORT_IO_RESET Reset; |
} EFI_DEBUGPORT_IO_INTERFACE; |
// |
// Debugport UART16550 control protocol {628EA978-4C26-4605-BC02-A42A496917DD} |
// |
#define DEBUGPORT_UART16550_CONTROL_PROTOCOL \ |
{ 0X628EA978, 0X4C26, 0X4605, 0XBC, 0X2, 0XA4, 0X2A, 0X49, 0X69, 0X17, 0XDD } |
// Note: The definitions for EFI_PARITY_TYPE, EFI_STOP_BITS_TYPE, and |
// SERIAL_IO_MODE are included from efiser.h |
typedef |
EFI_STATUS |
(EFIAPI *EFI_UART16550_SET_ATTRIBUTES) ( |
IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE *This, |
IN UINT64 BaudRate, |
IN UINT32 ReceiveFifoDepth, |
IN UINT32 Timeout, |
IN EFI_PARITY_TYPE Parity, |
IN UINT8 DataBits, |
IN EFI_STOP_BITS_TYPE StopBits |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_UART16550_SET_CONTROL_BITS) ( |
IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE *This, |
IN UINT32 Control |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_UART16550_GET_CONTROL_BITS) ( |
IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE *This, |
OUT UINT32 *Control |
); |
#define EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE_REVISION 0x00010000 |
typedef struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE { |
UINT32 Revision; |
EFI_UART16550_SET_ATTRIBUTES SetAttributes; |
EFI_UART16550_SET_CONTROL_BITS SetControl; |
EFI_UART16550_GET_CONTROL_BITS GetControl; |
DEBUGPORT_16550_CONFIG_DATA *Mode; |
} EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE; |
#define DEVICE_PATH_DEBUGPORT DEBUGPORT_IO_PROTOCOL |
#endif /* _EFIDBG_H_ */ |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/piflash64.h |
---|
0,0 → 1,121 |
#ifndef _PIFLASH64_H |
#define _PIFLASH64_H |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
PIflash64.h |
Abstract: |
Iflash64.efi protocol to abstract iflash from |
the system. |
Revision History |
--*/ |
// |
// Guid that identifies the IFLASH protocol |
// |
#define IFLASH64_PROTOCOL_PROTOCOL \ |
{ 0x65cba110, 0x74ab, 0x11d3, 0xbb, 0x89, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 }; |
// |
// Unlock FLASH from StartAddress to EndAddress and return a LockKey |
// |
typedef |
EFI_STATUS |
(EFIAPI *UNLOCK_FLASH_API)( |
IN struct _IFLASH64_PROTOCOL_INTERFACE *This |
); |
// |
// Lock the flash represented by the LockKey |
// |
typedef |
EFI_STATUS |
(EFIAPI *LOCK_FLASH_API)( |
IN struct _IFLASH64_PROTOCOL_INTERFACE *This |
); |
// |
// Status callback for a utility like IFLASH64 |
// |
// Token would map to a list like Ted proposed. The utility has no idea what |
// happens on the other side. |
// ErrorStatus - Level of Error or success. Independent of Token. If you |
// don't know the token you will at least know pass or fail. |
// String - Optional extra information about the error. Could be used for |
// debug or future expansion |
// |
// Attributes - Options screen attributes for String. Could allow the string to be different colors. |
// |
typedef |
EFI_STATUS |
(EFIAPI *UTILITY_PROGRESS_API)( |
IN struct _IFLASH64_PROTOCOL_INTERFACE *This, |
IN UINTN Token, |
IN EFI_STATUS ErrorStatus, |
IN CHAR16 *String, OPTIONAL |
IN UINTN *Attributes OPTIONAL |
); |
// |
// Token Values |
// |
// IFlash64 Token Codes |
#define IFLASH_TOKEN_IFLASHSTART 0xB0 // IFlash64 has started |
#define IFLASH_TOKEN_READINGFILE 0xB1 // Reading File |
#define IFLASH_TOKEN_INITVPP 0xB2 // Initializing Vpp |
#define IFLASH_TOKEN_DISABLEVPP 0x10 // Disable Vpp |
#define IFLASH_TOKEN_FLASHUNLOCK 0xB3 // Unlocking FLASH Devices |
#define IFLASH_TOKEN_FLASHERASE 0xB4 // Erasing FLASH Devices |
#define IFLASH_TOKEN_FLASHPROGRAM 0xB5 // Programming FLASH |
#define IFLASH_TOKEN_FLASHVERIFY 0xB6 // Verifying FLASH |
#define IFLASH_TOKEN_UPDATESUCCES 0xB7 // FLASH Updage Success! |
#define IFLASH_TOKEN_PROGRESS_READINGFILE 0x11 // % Reading File |
#define IFLASH_TOKEN_PROGRESS_FLASHUNLOCK 0x13 // % Unlocking FLASH Devices |
#define IFLASH_TOKEN_PROGRESS_FLASHERASE 0x14 // % Erasing FLASH Devices |
#define IFLASH_TOKEN_PROGRESS_FLASHPROGRAM 0x15 // % Programming FLASH |
#define IFLASH_TOKEN_PROGRESS_FLASHVERIFY 0x16 // % Verifying FLASH |
#define IFLASH_TOKEN_READINGFILE_ER 0xB8 // File Read Error |
#define IFLASH_TOKEN_INITVPP_ER 0xB9 // Initialization of IFB Error |
#define IFLASH_TOKEN_FLASHUNLOCK_ER 0xBA // FLASH Unlock Error |
#define IFLASH_TOKEN_FLASHERASE_ER 0xBB // FLASH Erase Error |
#define IFLASH_TOKEN_FLASHVERIFY_ER 0xBC // FLASH Verify Error |
#define IFLASH_TOKEN_FLASHPROG_ER 0xBD // FLASH Program Error |
#define IFLASH_TABLE_END 0x00 |
// |
// If this number changes one of the existing API's has changes |
// |
#define IFLASH_PI_MAJOR_VERSION 0x01 |
// |
// This number changes when new APIs or data variables get added to the end |
// of the data structure |
// |
#define IFLASH_PI_MINOR_VERSION 0x01 |
typedef struct _IFLASH64_PROTOCOL_INTERFACE { |
UINT32 MajorVersion; |
UINT32 MinorVersion; |
UNLOCK_FLASH_API UnlockFlash; |
LOCK_FLASH_API LockFlash; |
UTILITY_PROGRESS_API Progress; |
// |
// Future expansion goes here |
// |
} IFLASH64_PROTOCOL_INTERFACE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/make.inf |
---|
0,0 → 1,13 |
# |
# |
# |
[sources] |
efivar.h |
legacyboot.h |
VgaClass.h |
intload.h |
[ia32sources] |
[ia64sources] |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/makefile.hdr |
---|
0,0 → 1,29 |
# |
# This is a machine generated file - DO NOT EDIT |
# Generated by genmake.exe |
# Generated from make.inf |
# Copyright (c) 1998 Intel Corporation |
# |
INC_DEPS = $(INC_DEPS) \ |
$(SDK_INSTALL_DIR)\include\efi\protocol\efivar.h \ |
$(SDK_INSTALL_DIR)\include\efi\protocol\legacyboot.h \ |
$(SDK_INSTALL_DIR)\include\efi\protocol\vgaclass.h \ |
$(SDK_INSTALL_DIR)\include\efi\protocol\efidbg.h \ |
!IF "$(PROCESSOR)" == "Ia32" |
INC_DEPS = $(INC_DEPS) \ |
!ENDIF |
!IF "$(PROCESSOR)" == "Ia64" |
INC_DEPS = $(INC_DEPS) \ |
$(SDK_INSTALL_DIR)\include\efi\protocol\$(PROCESSOR)\eficontext.h \ |
!ENDIF |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/vgaclass.h |
---|
0,0 → 1,95 |
#ifndef _VGA_CLASS_H |
#define _VGA_CLASS_H |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
VgaClass.h |
Abstract: |
Vga Mini port binding to Vga Class protocol |
Revision History |
--*/ |
// |
// VGA Device Structure |
// |
// {0E3D6310-6FE4-11d3-BB81-0080C73C8881} |
#define VGA_CLASS_DRIVER_PROTOCOL \ |
{ 0xe3d6310, 0x6fe4, 0x11d3, {0xbb, 0x81, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } |
typedef |
EFI_STATUS |
(* INIT_VGA_CARD) ( |
IN UINTN VgaMode, |
IN VOID *Context |
); |
typedef struct { |
UINTN MaxColumns; |
UINTN MaxRows; |
} MAX_CONSOLE_GEOMETRY; |
#define VGA_CON_OUT_DEV_SIGNATURE EFI_SIGNATURE_32('c','v','g','a') |
typedef struct { |
UINTN Signature; |
EFI_HANDLE Handle; |
SIMPLE_TEXT_OUTPUT_INTERFACE ConOut; |
SIMPLE_TEXT_OUTPUT_MODE ConOutMode; |
EFI_DEVICE_PATH *DevicePath; |
UINT8 *Buffer; |
EFI_DEVICE_IO_INTERFACE *DeviceIo; |
// |
// Video Card Context |
// |
INIT_VGA_CARD InitVgaCard; |
VOID *VgaCardContext; |
MAX_CONSOLE_GEOMETRY *Geometry; |
// |
// Video buffer normally 0xb8000 |
// |
UINT64 VideoBuffer; |
// |
// Clear Screen & Default Attribute |
// |
UINT32 Attribute; |
// |
// -1 means search for active VGA device |
// |
EFI_PCI_ADDRESS_UNION Pci; |
} VGA_CON_OUT_DEV; |
#define VGA_CON_OUT_DEV_FROM_THIS(a) CR(a, VGA_CON_OUT_DEV, ConOut, VGA_CON_OUT_DEV_SIGNATURE) |
// |
// Vga Class Driver Protocol. |
// GUID defined in EFI Lib |
// |
typedef |
EFI_STATUS |
(EFIAPI *INSTALL_VGA_DRIVER) ( |
IN VGA_CON_OUT_DEV *ConOutDev |
); |
typedef struct { |
UINT32 Version; |
INSTALL_VGA_DRIVER InstallGenericVgaDriver; |
} INSTALL_VGA_DRIVER_INTERFACE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/readme.txt |
---|
0,0 → 1,3 |
The protocol directory contains non Architectural |
Protocols that span the FW, Platform, or application |
space. |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/adapterdebug.h |
---|
0,0 → 1,32 |
#ifndef _ADAPTER_DEBUG_H |
#define _ADAPTER_DEBUG_H |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
AdapterDebug.h |
Abstract: |
Protocol to debug the EDD 3.0 enablement of BIOS option ROMs |
Revision History |
--*/ |
// {82F86881-282B-11d4-BC7D-0080C73C8881} |
#define ADAPTER_DEBUG_PROTOCOL \ |
{ 0x82f86881, 0x282b, 0x11d4, {0xbc, 0x7d, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } |
// |
// This protocol points to the BIOS_LEGACY_DRIVE data structure |
// see edd.h for more details |
// |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/protocol/legacyboot.h |
---|
0,0 → 1,119 |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
legacyboot |
Abstract: |
EFI support for legacy boot |
Revision History |
--*/ |
#ifndef _LEGACY_BOOT_INCLUDE_ |
#define _LEGACY_BOOT_INCLUDE_ |
#define LEGACY_BOOT_PROTOCOL \ |
{ 0x376e5eb2, 0x30e4, 0x11d3, { 0xba, 0xe5, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } } |
#pragma pack(1) |
// |
// BBS 1.01 (See Appendix A) IPL and BCV Table Entry Data structure. |
// Seg:Off pointers have been converted to EFI pointers in this data structure |
// This is the structure that also maps to the EFI device path for the boot selection |
// |
typedef struct { |
UINT16 DeviceType; |
UINT16 StatusFlag; |
UINT32 Reserved; |
VOID *BootHandler; // Not an EFI entry point |
CHAR8 *DescString; |
} BBS_TABLE_ENTRY; |
#pragma pack() |
typedef |
EFI_STATUS |
(EFIAPI *LEGACY_BOOT_CALL) ( |
IN EFI_DEVICE_PATH *DevicePath |
); |
// |
// BBS support functions |
// PnP Call numbers and BiosSelector hidden in implementation |
// |
typedef enum { |
IplRelative, |
BcvRelative |
} BBS_TYPE; |
INTERFACE_DECL(_LEGACY_BOOT_INTERFACE); |
// |
// == PnP Function 0x60 then BbsVersion == 0x0101 if this call fails then BbsVersion == 0x0000 |
// |
// |
// == PnP Function 0x61 |
// |
typedef |
EFI_STATUS |
(EFIAPI *GET_DEVICE_COUNT) ( |
IN struct _LEGACY_BOOT_INTERFACE *This, |
IN BBS_TYPE *TableType, |
OUT UINTN *DeviceCount, |
OUT UINTN *MaxCount |
); |
// |
// == PnP Function 0x62 |
// |
typedef |
EFI_STATUS |
(EFIAPI *GET_PRIORITY_AND_TABLE) ( |
IN struct _LEGACY_BOOT_INTERFACE *This, |
IN BBS_TYPE *TableType, |
IN OUT UINTN *PrioritySize, // MaxCount * sizeof(UINT8) |
OUT UINTN *Priority, |
IN OUT UINTN *TableSize, // MaxCount * sizeof(BBS_TABLE_ENTRY) |
OUT BBS_TABLE_ENTRY *TableEntrySize |
); |
// |
// == PnP Function 0x63 |
// |
typedef |
EFI_STATUS |
(EFIAPI *SET_PRIORITY) ( |
IN struct _LEGACY_BOOT_INTERFACE *This, |
IN BBS_TYPE *TableType, |
IN OUT UINTN *PrioritySize, |
OUT UINTN *Priority |
); |
typedef struct _LEGACY_BOOT_INTERFACE { |
LEGACY_BOOT_CALL BootIt; |
// |
// New functions to allow BBS booting to be configured from EFI |
// |
UINTN BbsVersion; // Currently 0x0101 |
GET_DEVICE_COUNT GetDeviceCount; |
GET_PRIORITY_AND_TABLE GetPriorityAndTable; |
SET_PRIORITY SetPriority; |
} LEGACY_BOOT_INTERFACE; |
EFI_STATUS |
PlInitializeLegacyBoot ( |
VOID |
); |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efierr.h |
---|
0,0 → 1,60 |
#ifndef _EFI_ERR_H |
#define _EFI_ERR_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efierr.h |
Abstract: |
EFI error codes |
Revision History |
--*/ |
#define EFIWARN(a) (a) |
#define EFI_ERROR(a) (((INTN) a) < 0) |
#define EFI_SUCCESS 0 |
#define EFI_LOAD_ERROR EFIERR(1) |
#define EFI_INVALID_PARAMETER EFIERR(2) |
#define EFI_UNSUPPORTED EFIERR(3) |
#define EFI_BAD_BUFFER_SIZE EFIERR(4) |
#define EFI_BUFFER_TOO_SMALL EFIERR(5) |
#define EFI_NOT_READY EFIERR(6) |
#define EFI_DEVICE_ERROR EFIERR(7) |
#define EFI_WRITE_PROTECTED EFIERR(8) |
#define EFI_OUT_OF_RESOURCES EFIERR(9) |
#define EFI_VOLUME_CORRUPTED EFIERR(10) |
#define EFI_VOLUME_FULL EFIERR(11) |
#define EFI_NO_MEDIA EFIERR(12) |
#define EFI_MEDIA_CHANGED EFIERR(13) |
#define EFI_NOT_FOUND EFIERR(14) |
#define EFI_ACCESS_DENIED EFIERR(15) |
#define EFI_NO_RESPONSE EFIERR(16) |
#define EFI_NO_MAPPING EFIERR(17) |
#define EFI_TIMEOUT EFIERR(18) |
#define EFI_NOT_STARTED EFIERR(19) |
#define EFI_ALREADY_STARTED EFIERR(20) |
#define EFI_ABORTED EFIERR(21) |
#define EFI_ICMP_ERROR EFIERR(22) |
#define EFI_TFTP_ERROR EFIERR(23) |
#define EFI_PROTOCOL_ERROR EFIERR(24) |
#define EFI_WARN_UNKOWN_GLYPH EFIWARN(1) |
#define EFI_WARN_DELETE_FAILURE EFIWARN(2) |
#define EFI_WARN_WRITE_FAILURE EFIWARN(3) |
#define EFI_WARN_BUFFER_TOO_SMALL EFIWARN(4) |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efiser.h |
---|
0,0 → 1,132 |
#ifndef _EFI_SER_H |
#define _EFI_SER_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efiser.h |
Abstract: |
EFI serial protocol |
Revision History |
--*/ |
// |
// Serial protocol |
// |
#define SERIAL_IO_PROTOCOL \ |
{ 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} } |
INTERFACE_DECL(_SERIAL_IO_INTERFACE); |
typedef enum { |
DefaultParity, |
NoParity, |
EvenParity, |
OddParity, |
MarkParity, |
SpaceParity |
} EFI_PARITY_TYPE; |
typedef enum { |
DefaultStopBits, |
OneStopBit, // 1 stop bit |
OneFiveStopBits, // 1.5 stop bits |
TwoStopBits // 2 stop bits |
} EFI_STOP_BITS_TYPE; |
#define EFI_SERIAL_CLEAR_TO_SEND 0x0010 // RO |
#define EFI_SERIAL_DATA_SET_READY 0x0020 // RO |
#define EFI_SERIAL_RING_INDICATE 0x0040 // RO |
#define EFI_SERIAL_CARRIER_DETECT 0x0080 // RO |
#define EFI_SERIAL_REQUEST_TO_SEND 0x0002 // WO |
#define EFI_SERIAL_DATA_TERMINAL_READY 0x0001 // WO |
#define EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 // RO |
#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 // RO |
#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 // RW |
#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 // RW |
#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 // RW |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SERIAL_RESET) ( |
IN struct _SERIAL_IO_INTERFACE *This |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) ( |
IN struct _SERIAL_IO_INTERFACE *This, |
IN UINT64 BaudRate, |
IN UINT32 ReceiveFifoDepth, |
IN UINT32 Timeout, |
IN EFI_PARITY_TYPE Parity, |
IN UINT8 DataBits, |
IN EFI_STOP_BITS_TYPE StopBits |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS) ( |
IN struct _SERIAL_IO_INTERFACE *This, |
IN UINT32 Control |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) ( |
IN struct _SERIAL_IO_INTERFACE *This, |
OUT UINT32 *Control |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SERIAL_WRITE) ( |
IN struct _SERIAL_IO_INTERFACE *This, |
IN OUT UINTN *BufferSize, |
IN VOID *Buffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_SERIAL_READ) ( |
IN struct _SERIAL_IO_INTERFACE *This, |
IN OUT UINTN *BufferSize, |
OUT VOID *Buffer |
); |
typedef struct { |
UINT32 ControlMask; |
// current Attributes |
UINT32 Timeout; |
UINT64 BaudRate; |
UINT32 ReceiveFifoDepth; |
UINT32 DataBits; |
UINT32 Parity; |
UINT32 StopBits; |
} SERIAL_IO_MODE; |
#define SERIAL_IO_INTERFACE_REVISION 0x00010000 |
typedef struct _SERIAL_IO_INTERFACE { |
UINT32 Revision; |
EFI_SERIAL_RESET Reset; |
EFI_SERIAL_SET_ATTRIBUTES SetAttributes; |
EFI_SERIAL_SET_CONTROL_BITS SetControl; |
EFI_SERIAL_GET_CONTROL_BITS GetControl; |
EFI_SERIAL_WRITE Write; |
EFI_SERIAL_READ Read; |
SERIAL_IO_MODE *Mode; |
} SERIAL_IO_INTERFACE; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia64/efilibplat.h |
---|
0,0 → 1,80 |
#ifndef _EFI_LIB_PLAT_H |
#define _EFI_LIB_PLAT_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efilibplat.h |
Abstract: |
EFI to compile bindings |
Revision History |
--*/ |
#include "salproc.h" |
VOID |
InitializeLibPlatform ( |
IN EFI_HANDLE ImageHandle, |
IN EFI_SYSTEM_TABLE *SystemTable |
); |
VOID |
LibInitSalAndPalProc( |
OUT PLABEL *SalPlabel, |
OUT UINT64 *PalEntry |
); |
EFI_STATUS |
LibGetSalIoPortMapping ( |
OUT UINT64 *IoPortMapping |
); |
EFI_STATUS |
LibGetSalIpiBlock ( |
OUT UINT64 *IpiBlock |
); |
EFI_STATUS |
LibGetSalWakeupVector ( |
OUT UINT64 *WakeVector |
); |
VOID * |
LibSearchSalSystemTable ( |
IN UINT8 EntryType |
); |
VOID |
LibSalProc ( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4, |
IN UINT64 Arg5, |
IN UINT64 Arg6, |
IN UINT64 Arg7, |
IN UINT64 Arg8, |
OUT rArg *Results OPTIONAL |
); |
VOID |
LibPalProc ( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4, |
OUT rArg *Results OPTIONAL |
); |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia64/efibind.h |
---|
0,0 → 1,209 |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efefind.h |
Abstract: |
EFI to compile bindings |
Revision History |
--*/ |
#pragma pack() |
// |
// Basic int types of various widths |
// |
#if (__STDC_VERSION__ < 199901L ) |
// No ANSI C 1999/2000 stdint.h integer width declarations |
#if _MSC_EXTENSIONS |
// Use Microsoft C compiler integer width declarations |
typedef unsigned __int64 uint64_t; |
typedef __int64 int64_t; |
typedef unsigned __int32 uint32_t; |
typedef __int32 int32_t; |
typedef unsigned __int16 uint16_t; |
typedef __int16 int16_t; |
typedef unsigned __int8 uint8_t; |
typedef __int8 int8_t; |
#else |
#ifdef UNIX_LP64 |
// Use LP64 programming model from C_FLAGS for integer width declarations |
typedef unsigned long uint64_t; |
typedef long int64_t; |
typedef unsigned int uint32_t; |
typedef int int32_t; |
typedef unsigned short uint16_t; |
typedef short int16_t; |
typedef unsigned char uint8_t; |
typedef char int8_t; |
#else |
// Assume P64 programming model from C_FLAGS for integer width declarations |
typedef unsigned long long uint64_t; |
typedef long long int64_t; |
typedef unsigned int uint32_t; |
typedef int int32_t; |
typedef unsigned short uint16_t; |
typedef short int16_t; |
typedef unsigned char uint8_t; |
typedef char int8_t; |
#endif |
#endif |
#endif |
// |
// Basic EFI types of various widths |
// |
#ifndef __WCHAR_TYPE__ |
# define __WCHAR_TYPE__ short |
#endif |
typedef uint64_t UINT64; |
typedef int64_t INT64; |
typedef uint32_t UINT32; |
typedef int32_t INT32; |
typedef uint16_t UINT16; |
typedef int16_t INT16; |
typedef uint8_t UINT8; |
typedef int8_t INT8; |
typedef __WCHAR_TYPE__ WCHAR; |
#undef VOID |
#define VOID void |
typedef int64_t INTN; |
typedef uint64_t UINTN; |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// BugBug: Code to debug |
// |
#define BIT63 0x8000000000000000 |
#define PLATFORM_IOBASE_ADDRESS (0xffffc000000 | BIT63) |
#define PORT_TO_MEMD(_Port) (PLATFORM_IOBASE_ADDRESS | ( ( ( (_Port) & 0xfffc) << 10 ) | ( (_Port) & 0x0fff) ) ) |
// |
// Macro's with casts make this much easier to use and read. |
// |
#define PORT_TO_MEM8D(_Port) (*(UINT8 *)(PORT_TO_MEMD(_Port))) |
#define POST_CODE(_Data) (PORT_TO_MEM8D(0x80) = (_Data)) |
// |
// BugBug: End Debug Code!!! |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EFIERR(a) (0x8000000000000000 | a) |
#define EFI_ERROR_MASK 0x8000000000000000 |
#define EFIERR_OEM(a) (0xc000000000000000 | a) |
#define BAD_POINTER 0xFBFBFBFBFBFBFBFB |
#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFF |
#define BREAKPOINT() while (TRUE) |
// |
// Pointers must be aligned to these address to function |
// you will get an alignment fault if this value is less than 8 |
// |
#define MIN_ALIGNMENT_SIZE 8 |
#define ALIGN_VARIABLE(Value , Adjustment) \ |
(UINTN) Adjustment = 0; \ |
if((UINTN)Value % MIN_ALIGNMENT_SIZE) \ |
(UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \ |
Value = (UINTN)Value + (UINTN)Adjustment |
// |
// Define macros to create data structure signatures. |
// |
#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8)) |
#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16)) |
#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32)) |
// |
// To export & import functions in the EFI emulator environment |
// |
#define EXPORTAPI |
// |
// EFIAPI - prototype calling convention for EFI function pointers |
// BOOTSERVICE - prototype for implementation of a boot service interface |
// RUNTIMESERVICE - prototype for implementation of a runtime service interface |
// RUNTIMEFUNCTION - prototype for implementation of a runtime function that is not a service |
// RUNTIME_CODE - pragma macro for declaring runtime code |
// |
#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options |
#if _MSC_EXTENSIONS |
#define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler |
#else |
#define EFIAPI // Substitute expresion to force C calling convention |
#endif |
#endif |
#define BOOTSERVICE |
#define RUNTIMESERVICE |
#define RUNTIMEFUNCTION |
#define RUNTIME_CODE(a) alloc_text("rtcode", a) |
#define BEGIN_RUNTIME_DATA() data_seg("rtdata") |
#define END_RUNTIME_DATA() data_seg("") |
#define VOLATILE volatile |
// |
// BugBug: Need to find out if this is portable accross compliers. |
// |
#ifdef __GNUC__ |
#define MEMORY_FENCE() __asm__ __volatile__ ("mf.a" ::: "memory") |
#else |
void __mf (void); |
#pragma intrinsic (__mf) |
#define MEMORY_FENCE() __mf() |
#endif |
// |
// When build similiar to FW, then link everything together as |
// one big module. |
// |
#define EFI_DRIVER_ENTRY_POINT(InitFunction) |
#define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \ |
(_if)->LoadInternal(type, name, entry) |
// |
// Some compilers don't support the forward reference construct: |
// typedef struct XXXXX |
// |
// The following macro provide a workaround for such cases. |
// |
#ifdef NO_INTERFACE_DECL |
#define INTERFACE_DECL(x) |
#else |
#ifdef __GNUC__ |
#define INTERFACE_DECL(x) struct x |
#else |
#define INTERFACE_DECL(x) typedef struct x |
#endif |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia64/salproc.h |
---|
0,0 → 1,264 |
#ifndef _SAL_PROC_H |
#define _SAL_PROC_H |
// |
// |
//Copyright (c) 1999 Intel Corporation |
// |
//Module Name: |
// |
// SalProc.h |
// |
//Abstract: |
// |
// Main SAL interface routins for IA-64 calls. |
// |
// |
//Revision History |
// |
// |
// return value that mimicks r8,r9,r10 & r11 registers |
typedef struct { |
UINT64 p0; |
UINT64 p1; |
UINT64 p2; |
UINT64 p3; |
} rArg; |
#define SAL_PCI_CONFIG_READ 0x01000010 |
#define SAL_PCI_CONFIG_WRITE 0x01000011 |
typedef VOID (*PFN)(); |
typedef rArg (*PFN_SAL_PROC)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64); |
typedef rArg (*PFN_SAL_CALLBACK)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64); |
typedef struct _PLABEL { |
UINT64 ProcEntryPoint; |
UINT64 GP; |
} PLABEL; |
typedef struct tagIA32_BIOS_REGISTER_STATE { |
// general registers |
UINT32 eax; |
UINT32 ecx; |
UINT32 edx; |
UINT32 ebx; |
// stack registers |
UINT32 esp; |
UINT32 ebp; |
UINT32 esi; |
UINT32 edi; |
// eflags |
UINT32 eflags; |
// instruction pointer |
UINT32 eip; |
UINT16 cs; |
UINT16 ds; |
UINT16 es; |
UINT16 fs; |
UINT16 gs; |
UINT16 ss; |
// Reserved |
UINT32 Reserved1; |
UINT64 Reserved2; |
} IA32_BIOS_REGISTER_STATE; |
VOID EFIInitMsg(VOID); |
EFI_STATUS |
PlRegisterAndStartTimer( |
IN UINTN Period |
); |
EFI_STATUS |
PlDeRegisterAndCancelTimer(VOID); |
VOID |
SalProc ( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4, |
IN UINT64 Arg5, |
IN UINT64 Arg6, |
IN UINT64 Arg7, |
IN UINT64 Arg8, |
OUT rArg *Results OPTIONAL |
); |
VOID |
SalCallBack ( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4, |
IN UINT64 Arg5, |
IN UINT64 Arg6, |
IN UINT64 Arg7, |
IN UINT64 Arg8, |
OUT rArg *Results OPTIONAL |
); |
VOID |
RUNTIMEFUNCTION |
RtSalCallBack ( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4, |
IN UINT64 Arg5, |
IN UINT64 Arg6, |
IN UINT64 Arg7, |
IN UINT64 Arg8, |
OUT rArg *Results OPTIONAL |
); |
extern PLABEL RtGlobalSalProcEntry; |
extern PLABEL RtGlobalSALCallBack; |
#pragma pack(1) |
// |
// SAL System Table |
// |
typedef struct { |
UINT32 Signature; |
UINT32 Length; |
UINT16 Revision; |
UINT16 EntryCount; |
UINT8 CheckSum; |
UINT8 Reserved[7]; |
UINT16 SALA_Ver; |
UINT16 SALB_Ver; |
UINT8 OemId[32]; |
UINT8 ProductID[32]; |
UINT8 Reserved2[8]; |
} SAL_SYSTEM_TABLE_HDR; |
#define SAL_ST_ENTRY_POINT 0 |
#define SAL_ST_MEMORY_DESCRIPTOR 1 |
#define SAL_ST_PLATFORM_FEATURES 2 |
#define SAL_ST_TR_USAGE 3 |
#define SAL_ST_PTC 4 |
#define SAL_ST_AP_WAKEUP 5 |
typedef struct { |
UINT8 Type; // Type == 0 |
UINT8 Reserved[7]; |
UINT64 PalProcEntry; |
UINT64 SalProcEntry; |
UINT64 GlobalDataPointer; |
UINT64 Reserved2[2]; |
} SAL_ST_ENTRY_POINT_DESCRIPTOR; |
typedef struct { |
UINT8 Type; // Type == 1 |
UINT8 NeedVirtualRegistration; |
UINT8 MemoryAttributes; |
UINT8 PageAccessRights; |
UINT8 SupportedAttributes; |
UINT8 Reserved; |
UINT16 MemoryType; |
UINT64 PhysicalMemoryAddress; |
UINT32 Length; |
UINT32 Reserved1; |
UINT64 OemReserved; |
} SAL_ST_MEMORY_DESCRIPTOR_ENTRY; |
// |
// MemoryType info |
// |
#define SAL_SAPIC_IPI_BLOCK 0x0002 |
#define SAL_IO_PORT_MAPPING 0x0003 |
typedef struct { |
UINT8 Type; // Type == 2 |
UINT8 PlatformFeatures; |
UINT8 Reserved[14]; |
} SAL_ST_MEMORY_DECRIPTOR; |
typedef struct { |
UINT8 Type; // Type == 3 |
UINT8 TRType; |
UINT8 TRNumber; |
UINT8 Reserved[5]; |
UINT64 VirtualAddress; |
UINT64 EncodedPageSize; |
UINT64 Reserved1; |
} SAL_ST_TR_DECRIPTOR; |
typedef struct { |
UINT64 NumberOfProcessors; |
UINT64 LocalIDRegister; |
} SAL_COHERENCE_DOMAIN_INFO; |
typedef struct { |
UINT8 Type; // Type == 4 |
UINT8 Reserved[3]; |
UINT32 NumberOfDomains; |
SAL_COHERENCE_DOMAIN_INFO *DomainInformation; |
} SAL_ST_CACHE_COHERENCE_DECRIPTOR; |
typedef struct { |
UINT8 Type; // Type == 5 |
UINT8 WakeUpType; |
UINT8 Reserved[6]; |
UINT64 ExternalInterruptVector; |
} SAL_ST_AP_WAKEUP_DECRIPTOR; |
typedef struct { |
SAL_SYSTEM_TABLE_HDR Header; |
SAL_ST_ENTRY_POINT_DESCRIPTOR Entry0; |
} SAL_SYSTEM_TABLE_ASCENDING_ORDER; |
#define FIT_ENTRY_PTR (0x100000000 - 32) // 4GB - 24 |
#define FIT_PALA_ENTRY (0x100000000 - 48) // 4GB - 32 |
#define FIT_PALB_TYPE 01 |
typedef struct { |
UINT64 Address; |
UINT8 Size[3]; |
UINT8 Reserved; |
UINT16 Revision; |
UINT8 Type:7; |
UINT8 CheckSumValid:1; |
UINT8 CheckSum; |
} FIT_ENTRY; |
#pragma pack() |
typedef |
rArg |
(*CALL_SAL_PROC)( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4, |
IN UINT64 Arg5, |
IN UINT64 Arg6, |
IN UINT64 Arg7, |
IN UINT64 Arg8 |
); |
typedef |
rArg |
(*CALL_PAL_PROC)( |
IN UINT64 Arg1, |
IN UINT64 Arg2, |
IN UINT64 Arg3, |
IN UINT64 Arg4 |
); |
extern CALL_SAL_PROC GlobalSalProc; |
extern CALL_PAL_PROC GlobalPalProc; |
extern PLABEL SalProcPlabel; |
extern PLABEL PalProcPlabel; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/ia64/pe.h |
---|
0,0 → 1,597 |
/* |
PE32+ header file |
*/ |
#ifndef _PE_H |
#define _PE_H |
#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ |
#define IMAGE_OS2_SIGNATURE 0x454E // NE |
#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE |
#define IMAGE_NT_SIGNATURE 0x00004550 // PE00 |
#define IMAGE_EDOS_SIGNATURE 0x44454550 // PEED |
/***************************************************************************** |
* The following stuff comes from winnt.h from the ia64sdk, plus the Plabel for |
* loading EM executables. |
*****************************************************************************/ |
// |
// Intel IA64 specific |
// |
#define IMAGE_REL_BASED_IA64_IMM64 9 |
#define IMAGE_REL_BASED_IA64_DIR64 10 |
struct Plabel { |
UINT64 EntryPoint; |
UINT64 NewGP; |
}; |
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header |
UINT16 e_magic; // Magic number |
UINT16 e_cblp; // Bytes on last page of file |
UINT16 e_cp; // Pages in file |
UINT16 e_crlc; // Relocations |
UINT16 e_cparhdr; // Size of header in paragraphs |
UINT16 e_minalloc; // Minimum extra paragraphs needed |
UINT16 e_maxalloc; // Maximum extra paragraphs needed |
UINT16 e_ss; // Initial (relative) SS value |
UINT16 e_sp; // Initial SP value |
UINT16 e_csum; // Checksum |
UINT16 e_ip; // Initial IP value |
UINT16 e_cs; // Initial (relative) CS value |
UINT16 e_lfarlc; // File address of relocation table |
UINT16 e_ovno; // Overlay number |
UINT16 e_res[4]; // Reserved words |
UINT16 e_oemid; // OEM identifier (for e_oeminfo) |
UINT16 e_oeminfo; // OEM information; e_oemid specific |
UINT16 e_res2[10]; // Reserved words |
UINT32 e_lfanew; // File address of new exe header |
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; |
typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header |
UINT16 ne_magic; // Magic number |
UINT8 ne_ver; // Version number |
UINT8 ne_rev; // Revision number |
UINT16 ne_enttab; // Offset of Entry Table |
UINT16 ne_cbenttab; // Number of bytes in Entry Table |
UINT32 ne_crc; // Checksum of whole file |
UINT16 ne_flags; // Flag UINT16 |
UINT16 ne_autodata; // Automatic data segment number |
UINT16 ne_heap; // Initial heap allocation |
UINT16 ne_stack; // Initial stack allocation |
UINT32 ne_csip; // Initial CS:IP setting |
UINT32 ne_sssp; // Initial SS:SP setting |
UINT16 ne_cseg; // Count of file segments |
UINT16 ne_cmod; // Entries in Module Reference Table |
UINT16 ne_cbnrestab; // Size of non-resident name table |
UINT16 ne_segtab; // Offset of Segment Table |
UINT16 ne_rsrctab; // Offset of Resource Table |
UINT16 ne_restab; // Offset of resident name table |
UINT16 ne_modtab; // Offset of Module Reference Table |
UINT16 ne_imptab; // Offset of Imported Names Table |
UINT32 ne_nrestab; // Offset of Non-resident Names Table |
UINT16 ne_cmovent; // Count of movable entries |
UINT16 ne_align; // Segment alignment shift count |
UINT16 ne_cres; // Count of resource segments |
UINT8 ne_exetyp; // Target Operating system |
UINT8 ne_flagsothers; // Other .EXE flags |
UINT16 ne_pretthunks; // offset to return thunks |
UINT16 ne_psegrefbytes; // offset to segment ref. bytes |
UINT16 ne_swaparea; // Minimum code swap area size |
UINT16 ne_expver; // Expected Windows version number |
} IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER; |
// |
// File header format. |
// |
typedef struct _IMAGE_FILE_HEADER { |
UINT16 Machine; |
UINT16 NumberOfSections; |
UINT32 TimeDateStamp; |
UINT32 PointerToSymbolTable; |
UINT32 NumberOfSymbols; |
UINT16 SizeOfOptionalHeader; |
UINT16 Characteristics; |
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; |
#define IMAGE_SIZEOF_FILE_HEADER 20 |
#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file. |
#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references). |
#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file. |
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file. |
#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed. |
#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine. |
#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file |
#define IMAGE_FILE_SYSTEM 0x1000 // System File. |
#define IMAGE_FILE_DLL 0x2000 // File is a DLL. |
#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. |
#define IMAGE_FILE_MACHINE_UNKNOWN 0 |
#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386. |
#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0540 big-endian |
#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian |
#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP |
#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian |
#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine |
// |
// Directory format. |
// |
typedef struct _IMAGE_DATA_DIRECTORY { |
UINT32 VirtualAddress; |
UINT32 Size; |
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; |
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 |
typedef struct _IMAGE_ROM_OPTIONAL_HEADER { |
UINT16 Magic; |
UINT8 MajorLinkerVersion; |
UINT8 MinorLinkerVersion; |
UINT32 SizeOfCode; |
UINT32 SizeOfInitializedData; |
UINT32 SizeOfUninitializedData; |
UINT32 AddressOfEntryPoint; |
UINT32 BaseOfCode; |
UINT32 BaseOfData; |
UINT32 BaseOfBss; |
UINT32 GprMask; |
UINT32 CprMask[4]; |
UINT32 GpValue; |
} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER; |
typedef struct _IMAGE_OPTIONAL_HEADER { |
UINT16 Magic; |
UINT8 MajorLinkerVersion; |
UINT8 MinorLinkerVersion; |
UINT32 SizeOfCode; |
UINT32 SizeOfInitializedData; |
UINT32 SizeOfUninitializedData; |
UINT32 AddressOfEntryPoint; |
UINT32 BaseOfCode; |
// UINT32 BaseOfData; |
UINT64 ImageBase; |
UINT32 SectionAlignment; |
UINT32 FileAlignment; |
UINT16 MajorOperatingSystemVersion; |
UINT16 MinorOperatingSystemVersion; |
UINT16 MajorImageVersion; |
UINT16 MinorImageVersion; |
UINT16 MajorSubsystemVersion; |
UINT16 MinorSubsystemVersion; |
UINT32 Win32VersionValue; |
UINT32 SizeOfImage; |
UINT32 SizeOfHeaders; |
UINT32 CheckSum; |
UINT16 Subsystem; |
UINT16 DllCharacteristics; |
UINT64 SizeOfStackReserve; |
UINT64 SizeOfStackCommit; |
UINT64 SizeOfHeapReserve; |
UINT64 SizeOfHeapCommit; |
UINT32 LoaderFlags; |
UINT32 NumberOfRvaAndSizes; |
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; |
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER; |
#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 |
#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 |
#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224 |
#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 244 |
#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b |
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b |
#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 |
typedef struct _IMAGE_NT_HEADERS { |
UINT32 Signature; |
IMAGE_FILE_HEADER FileHeader; |
IMAGE_OPTIONAL_HEADER OptionalHeader; |
} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS; |
typedef struct _IMAGE_ROM_HEADERS { |
IMAGE_FILE_HEADER FileHeader; |
IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; |
} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS; |
#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \ |
((UINT32)ntheader + \ |
FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ |
((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \ |
)) |
// Subsystem Values |
#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem. |
#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem. |
#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem. |
#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem. |
#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem. |
#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem. |
// Directory Entries |
#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory |
#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory |
#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory |
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory |
#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory |
#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table |
#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory |
#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String |
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP) |
#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory |
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory |
// |
// Section header format. |
// |
#define IMAGE_SIZEOF_SHORT_NAME 8 |
typedef struct _IMAGE_SECTION_HEADER { |
UINT8 Name[IMAGE_SIZEOF_SHORT_NAME]; |
union { |
UINT32 PhysicalAddress; |
UINT32 VirtualSize; |
} Misc; |
UINT32 VirtualAddress; |
UINT32 SizeOfRawData; |
UINT32 PointerToRawData; |
UINT32 PointerToRelocations; |
UINT32 PointerToLinenumbers; |
UINT16 NumberOfRelocations; |
UINT16 NumberOfLinenumbers; |
UINT32 Characteristics; |
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; |
#define IMAGE_SIZEOF_SECTION_HEADER 40 |
#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved. |
#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code. |
#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data. |
#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data. |
#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved. |
#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information. |
#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image. |
#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat. |
#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 // |
#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 // |
#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 // |
#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 // |
#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified. |
#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 // |
#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 // |
#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded. |
#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable. |
#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable. |
#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable. |
#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable. |
#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable. |
#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable. |
// |
// Symbol format. |
// |
#define IMAGE_SIZEOF_SYMBOL 18 |
// |
// Section values. |
// |
// Symbols have a section number of the section in which they are |
// defined. Otherwise, section numbers have the following meanings: |
// |
#define IMAGE_SYM_UNDEFINED (UINT16)0 // Symbol is undefined or is common. |
#define IMAGE_SYM_ABSOLUTE (UINT16)-1 // Symbol is an absolute value. |
#define IMAGE_SYM_DEBUG (UINT16)-2 // Symbol is a special debug item. |
// |
// Type (fundamental) values. |
// |
#define IMAGE_SYM_TYPE_NULL 0 // no type. |
#define IMAGE_SYM_TYPE_VOID 1 // |
#define IMAGE_SYM_TYPE_CHAR 2 // type character. |
#define IMAGE_SYM_TYPE_SHORT 3 // type short integer. |
#define IMAGE_SYM_TYPE_INT 4 // |
#define IMAGE_SYM_TYPE_LONG 5 // |
#define IMAGE_SYM_TYPE_FLOAT 6 // |
#define IMAGE_SYM_TYPE_DOUBLE 7 // |
#define IMAGE_SYM_TYPE_STRUCT 8 // |
#define IMAGE_SYM_TYPE_UNION 9 // |
#define IMAGE_SYM_TYPE_ENUM 10 // enumeration. |
#define IMAGE_SYM_TYPE_MOE 11 // member of enumeration. |
#define IMAGE_SYM_TYPE_BYTE 12 // |
#define IMAGE_SYM_TYPE_WORD 13 // |
#define IMAGE_SYM_TYPE_UINT 14 // |
#define IMAGE_SYM_TYPE_DWORD 15 // |
// |
// Type (derived) values. |
// |
#define IMAGE_SYM_DTYPE_NULL 0 // no derived type. |
#define IMAGE_SYM_DTYPE_POINTER 1 // pointer. |
#define IMAGE_SYM_DTYPE_FUNCTION 2 // function. |
#define IMAGE_SYM_DTYPE_ARRAY 3 // array. |
// |
// Storage classes. |
// |
#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE )-1 |
#define IMAGE_SYM_CLASS_NULL 0 |
#define IMAGE_SYM_CLASS_AUTOMATIC 1 |
#define IMAGE_SYM_CLASS_EXTERNAL 2 |
#define IMAGE_SYM_CLASS_STATIC 3 |
#define IMAGE_SYM_CLASS_REGISTER 4 |
#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 |
#define IMAGE_SYM_CLASS_LABEL 6 |
#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 |
#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 |
#define IMAGE_SYM_CLASS_ARGUMENT 9 |
#define IMAGE_SYM_CLASS_STRUCT_TAG 10 |
#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 |
#define IMAGE_SYM_CLASS_UNION_TAG 12 |
#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 |
#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 |
#define IMAGE_SYM_CLASS_ENUM_TAG 15 |
#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 |
#define IMAGE_SYM_CLASS_REGISTER_PARAM 17 |
#define IMAGE_SYM_CLASS_BIT_FIELD 18 |
#define IMAGE_SYM_CLASS_BLOCK 100 |
#define IMAGE_SYM_CLASS_FUNCTION 101 |
#define IMAGE_SYM_CLASS_END_OF_STRUCT 102 |
#define IMAGE_SYM_CLASS_FILE 103 |
// new |
#define IMAGE_SYM_CLASS_SECTION 104 |
#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 |
// type packing constants |
#define N_BTMASK 017 |
#define N_TMASK 060 |
#define N_TMASK1 0300 |
#define N_TMASK2 0360 |
#define N_BTSHFT 4 |
#define N_TSHIFT 2 |
// MACROS |
// |
// Communal selection types. |
// |
#define IMAGE_COMDAT_SELECT_NODUPLICATES 1 |
#define IMAGE_COMDAT_SELECT_ANY 2 |
#define IMAGE_COMDAT_SELECT_SAME_SIZE 3 |
#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 |
#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 |
#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 |
#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 |
#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 |
// |
// Relocation format. |
// |
typedef struct _IMAGE_RELOCATION { |
UINT32 VirtualAddress; |
UINT32 SymbolTableIndex; |
UINT16 Type; |
} IMAGE_RELOCATION; |
#define IMAGE_SIZEOF_RELOCATION 10 |
// |
// I386 relocation types. |
// |
#define IMAGE_REL_I386_ABSOLUTE 0 // Reference is absolute, no relocation is necessary |
#define IMAGE_REL_I386_DIR16 01 // Direct 16-bit reference to the symbols virtual address |
#define IMAGE_REL_I386_REL16 02 // PC-relative 16-bit reference to the symbols virtual address |
#define IMAGE_REL_I386_DIR32 06 // Direct 32-bit reference to the symbols virtual address |
#define IMAGE_REL_I386_DIR32NB 07 // Direct 32-bit reference to the symbols virtual address, base not included |
#define IMAGE_REL_I386_SEG12 011 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address |
#define IMAGE_REL_I386_SECTION 012 |
#define IMAGE_REL_I386_SECREL 013 |
#define IMAGE_REL_I386_REL32 024 // PC-relative 32-bit reference to the symbols virtual address |
// |
// MIPS relocation types. |
// |
#define IMAGE_REL_MIPS_ABSOLUTE 0 // Reference is absolute, no relocation is necessary |
#define IMAGE_REL_MIPS_REFHALF 01 |
#define IMAGE_REL_MIPS_REFWORD 02 |
#define IMAGE_REL_MIPS_JMPADDR 03 |
#define IMAGE_REL_MIPS_REFHI 04 |
#define IMAGE_REL_MIPS_REFLO 05 |
#define IMAGE_REL_MIPS_GPREL 06 |
#define IMAGE_REL_MIPS_LITERAL 07 |
#define IMAGE_REL_MIPS_SECTION 012 |
#define IMAGE_REL_MIPS_SECREL 013 |
#define IMAGE_REL_MIPS_REFWORDNB 042 |
#define IMAGE_REL_MIPS_PAIR 045 |
// |
// Alpha Relocation types. |
// |
#define IMAGE_REL_ALPHA_ABSOLUTE 0x0 |
#define IMAGE_REL_ALPHA_REFLONG 0x1 |
#define IMAGE_REL_ALPHA_REFQUAD 0x2 |
#define IMAGE_REL_ALPHA_GPREL32 0x3 |
#define IMAGE_REL_ALPHA_LITERAL 0x4 |
#define IMAGE_REL_ALPHA_LITUSE 0x5 |
#define IMAGE_REL_ALPHA_GPDISP 0x6 |
#define IMAGE_REL_ALPHA_BRADDR 0x7 |
#define IMAGE_REL_ALPHA_HINT 0x8 |
#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x9 |
#define IMAGE_REL_ALPHA_REFHI 0xA |
#define IMAGE_REL_ALPHA_REFLO 0xB |
#define IMAGE_REL_ALPHA_PAIR 0xC |
#define IMAGE_REL_ALPHA_MATCH 0xD |
#define IMAGE_REL_ALPHA_SECTION 0xE |
#define IMAGE_REL_ALPHA_SECREL 0xF |
#define IMAGE_REL_ALPHA_REFLONGNB 0x10 |
// |
// IBM PowerPC relocation types. |
// |
#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP |
#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address |
#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address |
#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute) |
#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address |
#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword) |
#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative) |
#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative) |
#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base |
#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword) |
#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base |
#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr) |
#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number |
#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code |
#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction |
#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type |
// Flag bits in IMAGE_RELOCATION.TYPE |
#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it |
#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken |
#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken |
#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc) |
// |
// Based relocation format. |
// |
typedef struct _IMAGE_BASE_RELOCATION { |
UINT32 VirtualAddress; |
UINT32 SizeOfBlock; |
// UINT16 TypeOffset[1]; |
} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION; |
#define IMAGE_SIZEOF_BASE_RELOCATION 8 |
// |
// Based relocation types. |
// |
#define IMAGE_REL_BASED_ABSOLUTE 0 |
#define IMAGE_REL_BASED_HIGH 1 |
#define IMAGE_REL_BASED_LOW 2 |
#define IMAGE_REL_BASED_HIGHLOW 3 |
#define IMAGE_REL_BASED_HIGHADJ 4 |
#define IMAGE_REL_BASED_MIPS_JMPADDR 5 |
#define IMAGE_REL_BASED_IA64_IMM64 9 |
#define IMAGE_REL_BASED_DIR64 10 |
// |
// Line number format. |
// |
typedef struct _IMAGE_LINENUMBER { |
union { |
UINT32 SymbolTableIndex; // Symbol table index of function name if Linenumber is 0. |
UINT32 VirtualAddress; // Virtual address of line number. |
} Type; |
UINT16 Linenumber; // Line number. |
} IMAGE_LINENUMBER; |
#define IMAGE_SIZEOF_LINENUMBER 6 |
// |
// Archive format. |
// |
#define IMAGE_ARCHIVE_START_SIZE 8 |
#define IMAGE_ARCHIVE_START "!<arch>\n" |
#define IMAGE_ARCHIVE_END "`\n" |
#define IMAGE_ARCHIVE_PAD "\n" |
#define IMAGE_ARCHIVE_LINKER_MEMBER "/ " |
#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " |
typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { |
UINT8 Name[16]; // File member name - `/' terminated. |
UINT8 Date[12]; // File member date - decimal. |
UINT8 UserID[6]; // File member user id - decimal. |
UINT8 GroupID[6]; // File member group id - decimal. |
UINT8 Mode[8]; // File member mode - octal. |
UINT8 Size[10]; // File member size - decimal. |
UINT8 EndHeader[2]; // String to end header. |
} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER; |
#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 |
// |
// DLL support. |
// |
// |
// Export Format |
// |
typedef struct _IMAGE_EXPORT_DIRECTORY { |
UINT32 Characteristics; |
UINT32 TimeDateStamp; |
UINT16 MajorVersion; |
UINT16 MinorVersion; |
UINT32 Name; |
UINT32 Base; |
UINT32 NumberOfFunctions; |
UINT32 NumberOfNames; |
UINT32 AddressOfFunctions; |
UINT32 AddressOfNames; |
UINT32 AddressOfNameOrdinals; |
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; |
// |
// Import Format |
// |
typedef struct _IMAGE_IMPORT_BY_NAME { |
UINT16 Hint; |
UINT8 Name[1]; |
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; |
typedef struct _IMAGE_THUNK_DATA { |
union { |
UINT32 Function; |
UINT32 Ordinal; |
PIMAGE_IMPORT_BY_NAME AddressOfData; |
} u1; |
} IMAGE_THUNK_DATA, *PIMAGE_THUNK_DATA; |
#define IMAGE_ORDINAL_FLAG 0x80000000 |
#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0) |
#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff) |
typedef struct _IMAGE_IMPORT_DESCRIPTOR { |
UINT32 Characteristics; |
UINT32 TimeDateStamp; |
UINT32 ForwarderChain; |
UINT32 Name; |
PIMAGE_THUNK_DATA FirstThunk; |
} IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efigpt.h |
---|
0,0 → 1,68 |
#ifndef _EFI_GPT_H |
#define _EFI_GPT_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
EfiGpt.h |
Abstract: |
Include file for EFI partitioning scheme |
Revision History |
--*/ |
#define PRIMARY_PART_HEADER_LBA 1 |
typedef struct { |
EFI_TABLE_HEADER Header; |
EFI_LBA MyLBA; |
EFI_LBA AlternateLBA; |
EFI_LBA FirstUsableLBA; |
EFI_LBA LastUsableLBA; |
EFI_GUID DiskGUID; |
EFI_LBA PartitionEntryLBA; |
UINT32 NumberOfPartitionEntries; |
UINT32 SizeOfPartitionEntry; |
UINT32 PartitionEntryArrayCRC32; |
} EFI_PARTITION_TABLE_HEADER; |
#define EFI_PTAB_HEADER_ID "EFI PART" |
typedef struct { |
EFI_GUID PartitionTypeGUID; |
EFI_GUID UniquePartitionGUID; |
EFI_LBA StartingLBA; |
EFI_LBA EndingLBA; |
UINT64 Attributes; |
CHAR16 PartitionName[36]; |
} EFI_PARTITION_ENTRY; |
// |
// EFI Partition Attributes |
// |
#define EFI_PART_USED_BY_EFI 0x0000000000000001 |
#define EFI_PART_REQUIRED_TO_FUNCTION 0x0000000000000002 |
#define EFI_PART_USED_BY_OS 0x0000000000000004 |
#define EFI_PART_REQUIRED_BY_OS 0x0000000000000008 |
#define EFI_PART_BACKUP_REQUIRED 0x0000000000000010 |
#define EFI_PART_USER_DATA 0x0000000000000020 |
#define EFI_PART_CRITICAL_USER_DATA 0x0000000000000040 |
#define EFI_PART_REDUNDANT_PARTITION 0x0000000000000080 |
#define EFI_PART_TYPE_UNUSED_GUID \ |
{ 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} } |
#define EFI_PART_TYPE_EFI_SYSTEM_PART_GUID \ |
{ 0xc12a7328, 0xf81f, 0x11d2, {0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} } |
#define EFI_PART_TYPE_LEGACY_MBR_GUID \ |
{ 0x024dee41, 0x33e7, 0x11d3, {0x9d, 0x69, 0x00, 0x08, 0xc7, 0x81, 0xf3, 0x9f} } |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efi_pxe.h |
---|
0,0 → 1,1743 |
#ifndef _EFI_PXE_H |
#define _EFI_PXE_H |
/*++ |
Copyright (c) Intel 1999 |
Module name: |
efi_pxe.h |
32/64-bit PXE specification: |
alpha-4, 99-Dec-17 |
Abstract: |
This header file contains all of the PXE type definitions, |
structure prototypes, global variables and constants that |
are needed for porting PXE to EFI. |
--*/ |
#pragma pack(1) |
#define PXE_INTEL_ORDER 1 // Intel order |
//#define PXE_NETWORK_ORDER 1 // network order |
#define PXE_UINT64_SUPPORT 1 // UINT64 supported |
//#define PXE_NO_UINT64_SUPPORT 1 // UINT64 not supported |
#define PXE_BUSTYPE(a,b,c,d) \ |
((((PXE_UINT32)(d) & 0xFF) << 24) | \ |
(((PXE_UINT32)(c) & 0xFF) << 16) | \ |
(((PXE_UINT32)(b) & 0xFF) << 8) | \ |
((PXE_UINT32)(a) & 0xFF)) |
// |
// UNDI ROM ID and devive ID signature |
// |
#define PXE_BUSTYPE_PXE PXE_BUSTYPE('!', 'P', 'X', 'E') |
// |
// BUS ROM ID signatures |
// |
#define PXE_BUSTYPE_PCI PXE_BUSTYPE('P', 'C', 'I', 'R') |
#define PXE_BUSTYPE_PC_CARD PXE_BUSTYPE('P', 'C', 'C', 'R') |
#define PXE_BUSTYPE_USB PXE_BUSTYPE('U', 'S', 'B', 'R') |
#define PXE_BUSTYPE_1394 PXE_BUSTYPE('1', '3', '9', '4') |
#define PXE_SWAP_UINT16(n) \ |
((((PXE_UINT16)(n) & 0x00FF) << 8) | \ |
(((PXE_UINT16)(n) & 0xFF00) >> 8)) |
#define PXE_SWAP_UINT32(n) \ |
((((PXE_UINT32)(n) & 0x000000FF) << 24) | \ |
(((PXE_UINT32)(n) & 0x0000FF00) << 8) | \ |
(((PXE_UINT32)(n) & 0x00FF0000) >> 8) | \ |
(((PXE_UINT32)(n) & 0xFF000000) >> 24)) |
#if PXE_UINT64_SUPPORT != 0 |
#define PXE_SWAP_UINT64(n) \ |
((((PXE_UINT64)(n) & 0x00000000000000FF) << 56) | \ |
(((PXE_UINT64)(n) & 0x000000000000FF00) << 40) | \ |
(((PXE_UINT64)(n) & 0x0000000000FF0000) << 24) | \ |
(((PXE_UINT64)(n) & 0x00000000FF000000) << 8) | \ |
(((PXE_UINT64)(n) & 0x000000FF00000000) >> 8) | \ |
(((PXE_UINT64)(n) & 0x0000FF0000000000) >> 24) | \ |
(((PXE_UINT64)(n) & 0x00FF000000000000) >> 40) | \ |
(((PXE_UINT64)(n) & 0xFF00000000000000) >> 56)) |
#endif // PXE_UINT64_SUPPORT |
#if PXE_NO_UINT64_SUPPORT != 0 |
#define PXE_SWAP_UINT64(n) \ |
{ \ |
PXE_UINT32 tmp = (PXE_UINT64)(n)[1]; \ |
(PXE_UINT64)(n)[1] = PXE_SWAP_UINT32((PXE_UINT64)(n)[0]); \ |
(PXE_UINT64)(n)[0] = tmp; \ |
} |
#endif // PXE_NO_UINT64_SUPPORT |
#define PXE_CPBSIZE_NOT_USED 0 // zero |
#define PXE_DBSIZE_NOT_USED 0 // zero |
#define PXE_CPBADDR_NOT_USED (PXE_UINT64)0 // zero |
#define PXE_DBADDR_NOT_USED (PXE_UINT64)0 // zero |
#define PXE_CONST const |
#define PXE_VOLATILE volatile |
typedef void PXE_VOID; |
typedef unsigned char PXE_UINT8; |
typedef unsigned short PXE_UINT16; |
typedef unsigned PXE_UINT32; |
#if PXE_UINT64_SUPPORT != 0 |
// typedef unsigned long PXE_UINT64; |
typedef UINT64 PXE_UINT64; |
#endif // PXE_UINT64_SUPPORT |
#if PXE_NO_UINT64_SUPPORT != 0 |
typedef PXE_UINT32 PXE_UINT64[2]; |
#endif // PXE_NO_UINT64_SUPPORT |
typedef unsigned PXE_UINTN; |
typedef PXE_UINT8 PXE_BOOL; |
#define PXE_FALSE 0 // zero |
#define PXE_TRUE (!PXE_FALSE) |
typedef PXE_UINT16 PXE_OPCODE; |
// |
// Return UNDI operational state. |
// |
#define PXE_OPCODE_GET_STATE 0x0000 |
// |
// Change UNDI operational state from Stopped to Started. |
// |
#define PXE_OPCODE_START 0x0001 |
// |
// Change UNDI operational state from Started to Stopped. |
// |
#define PXE_OPCODE_STOP 0x0002 |
// |
// Get UNDI initialization information. |
// |
#define PXE_OPCODE_GET_INIT_INFO 0x0003 |
// |
// Get NIC configuration information. |
// |
#define PXE_OPCODE_GET_CONFIG_INFO 0x0004 |
// |
// Changed UNDI operational state from Started to Initialized. |
// |
#define PXE_OPCODE_INITIALIZE 0x0005 |
// |
// Re-initialize the NIC H/W. |
// |
#define PXE_OPCODE_RESET 0x0006 |
// |
// Change the UNDI operational state from Initialized to Started. |
// |
#define PXE_OPCODE_SHUTDOWN 0x0007 |
// |
// Read & change state of external interrupt enables. |
// |
#define PXE_OPCODE_INTERRUPT_ENABLES 0x0008 |
// |
// Read & change state of packet receive filters. |
// |
#define PXE_OPCODE_RECEIVE_FILTERS 0x0009 |
// |
// Read & change station MAC address. |
// |
#define PXE_OPCODE_STATION_ADDRESS 0x000A |
// |
// Read traffic statistics. |
// |
#define PXE_OPCODE_STATISTICS 0x000B |
// |
// Convert multicast IP address to multicast MAC address. |
// |
#define PXE_OPCODE_MCAST_IP_TO_MAC 0x000C |
// |
// Read or change non-volatile storage on the NIC. |
// |
#define PXE_OPCODE_NVDATA 0x000D |
// |
// Get & clear interrupt status. |
// |
#define PXE_OPCODE_GET_STATUS 0x000E |
// |
// Fill media header in packet for transmit. |
// |
#define PXE_OPCODE_FILL_HEADER 0x000F |
// |
// Transmit packet(s). |
// |
#define PXE_OPCODE_TRANSMIT 0x0010 |
// |
// Receive packet. |
// |
#define PXE_OPCODE_RECEIVE 0x0011 |
// last valid opcode: |
#define PXE_OPCODE_VALID_MAX 0x0011 |
// |
// Last valid PXE UNDI OpCode number. |
// |
#define PXE_OPCODE_LAST_VALID 0x0011 |
typedef PXE_UINT16 PXE_OPFLAGS; |
#define PXE_OPFLAGS_NOT_USED 0x0000 |
//////////////////////////////////////// |
// UNDI Get State |
// |
// No OpFlags |
//////////////////////////////////////// |
// UNDI Start |
// |
// No OpFlags |
//////////////////////////////////////// |
// UNDI Stop |
// |
// No OpFlags |
//////////////////////////////////////// |
// UNDI Get Init Info |
// |
// No Opflags |
//////////////////////////////////////// |
// UNDI Get Config Info |
// |
// No Opflags |
//////////////////////////////////////// |
// UNDI Initialize |
// |
#define PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK 0x0001 |
#define PXE_OPFLAGS_INITIALIZE_DETECT_CABLE 0x0000 |
#define PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE 0x0001 |
//////////////////////////////////////// |
// UNDI Reset |
// |
#define PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS 0x0001 |
#define PXE_OPFLAGS_RESET_DISABLE_FILTERS 0x0002 |
//////////////////////////////////////// |
// UNDI Shutdown |
// |
// No OpFlags |
//////////////////////////////////////// |
// UNDI Interrupt Enables |
// |
// |
// Select whether to enable or disable external interrupt signals. |
// Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS. |
// |
#define PXE_OPFLAGS_INTERRUPT_OPMASK 0xC000 |
#define PXE_OPFLAGS_INTERRUPT_ENABLE 0x8000 |
#define PXE_OPFLAGS_INTERRUPT_DISABLE 0x4000 |
#define PXE_OPFLAGS_INTERRUPT_READ 0x0000 |
// |
// Enable receive interrupts. An external interrupt will be generated |
// after a complete non-error packet has been received. |
// |
#define PXE_OPFLAGS_INTERRUPT_RECEIVE 0x0001 |
// |
// Enable transmit interrupts. An external interrupt will be generated |
// after a complete non-error packet has been transmitted. |
// |
#define PXE_OPFLAGS_INTERRUPT_TRANSMIT 0x0002 |
// |
// Enable command interrupts. An external interrupt will be generated |
// when command execution stops. |
// |
#define PXE_OPFLAGS_INTERRUPT_COMMAND 0x0004 |
// |
// Generate software interrupt. Setting this bit generates an external |
// interrupt, if it is supported by the hardware. |
// |
#define PXE_OPFLAGS_INTERRUPT_SOFTWARE 0x0008 |
//////////////////////////////////////// |
// UNDI Receive Filters |
// |
// |
// Select whether to enable or disable receive filters. |
// Setting both enable and disable will return PXE_STATCODE_INVALID_OPCODE. |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_OPMASK 0xC000 |
#define PXE_OPFLAGS_RECEIVE_FILTER_ENABLE 0x8000 |
#define PXE_OPFLAGS_RECEIVE_FILTER_DISABLE 0x4000 |
#define PXE_OPFLAGS_RECEIVE_FILTER_READ 0x0000 |
// |
// To reset the contents of the multicast MAC address filter list, |
// set this OpFlag: |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST 0x2000 |
// |
// Enable unicast packet receiving. Packets sent to the current station |
// MAC address will be received. |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_UNICAST 0x0001 |
// |
// Enable broadcast packet receiving. Packets sent to the broadcast |
// MAC address will be received. |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST 0x0002 |
// |
// Enable filtered multicast packet receiving. Packets sent to any |
// of the multicast MAC addresses in the multicast MAC address filter |
// list will be received. If the filter list is empty, no multicast |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004 |
// |
// Enable promiscuous packet receiving. All packets will be received. |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008 |
// |
// Enable promiscuous multicast packet receiving. All multicast |
// packets will be received. |
// |
#define PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010 |
//////////////////////////////////////// |
// UNDI Station Address |
// |
#define PXE_OPFLAGS_STATION_ADDRESS_READ 0x0000 |
#define PXE_OPFLAGS_STATION_ADDRESS_RESET 0x0001 |
//////////////////////////////////////// |
// UNDI Statistics |
// |
#define PXE_OPFLAGS_STATISTICS_READ 0x0000 |
#define PXE_OPFLAGS_STATISTICS_RESET 0x0001 |
//////////////////////////////////////// |
// UNDI MCast IP to MAC |
// |
// |
// Identify the type of IP address in the CPB. |
// |
#define PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK 0x0003 |
#define PXE_OPFLAGS_MCAST_IPV4_TO_MAC 0x0000 |
#define PXE_OPFLAGS_MCAST_IPV6_TO_MAC 0x0001 |
//////////////////////////////////////// |
// UNDI NvData |
// |
// |
// Select the type of non-volatile data operation. |
// |
#define PXE_OPFLAGS_NVDATA_OPMASK 0x0001 |
#define PXE_OPFLAGS_NVDATA_READ 0x0000 |
#define PXE_OPFLAGS_NVDATA_WRITE 0x0001 |
//////////////////////////////////////// |
// UNDI Get Status |
// |
// |
// Return current interrupt status. This will also clear any interrupts |
// that are currently set. This can be used in a polling routine. The |
// interrupt flags are still set and cleared even when the interrupts |
// are disabled. |
// |
#define PXE_OPFLAGS_GET_INTERRUPT_STATUS 0x0001 |
// |
// Return list of transmitted buffers for recycling. Transmit buffers |
// must not be changed or unallocated until they have recycled. After |
// issuing a transmit command, wait for a transmit complete interrupt. |
// When a transmit complete interrupt is received, read the transmitted |
// buffers. Do not plan on getting one buffer per interrupt. Some |
// NICs and UNDIs may transmit multiple buffers per interrupt. |
// |
#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS 0x0002 |
//////////////////////////////////////// |
// UNDI Fill Header |
// |
#define PXE_OPFLAGS_FILL_HEADER_OPMASK 0x0001 |
#define PXE_OPFLAGS_FILL_HEADER_FRAGMENTED 0x0001 |
#define PXE_OPFLAGS_FILL_HEADER_WHOLE 0x0000 |
//////////////////////////////////////// |
// UNDI Transmit |
// |
// |
// S/W UNDI only. Return after the packet has been transmitted. A |
// transmit complete interrupt will still be generated and the transmit |
// buffer will have to be recycled. |
// |
#define PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK 0x0001 |
#define PXE_OPFLAGS_TRANSMIT_BLOCK 0x0001 |
#define PXE_OPFLAGS_TRANSMIT_DONT_BLOCK 0x0000 |
// |
// |
// |
#define PXE_OPFLAGS_TRANSMIT_OPMASK 0x0002 |
#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED 0x0002 |
#define PXE_OPFLAGS_TRANSMIT_WHOLE 0x0000 |
//////////////////////////////////////// |
// UNDI Receive |
// |
// No OpFlags |
typedef PXE_UINT16 PXE_STATFLAGS; |
#define PXE_STATFLAGS_INITIALIZE 0x0000 |
//////////////////////////////////////// |
// Common StatFlags that can be returned by all commands. |
// |
// |
// The COMMAND_COMPLETE and COMMAND_FAILED status flags must be |
// implemented by all UNDIs. COMMAND_QUEUED is only needed by UNDIs |
// that support command queuing. |
// |
#define PXE_STATFLAGS_STATUS_MASK 0xC000 |
#define PXE_STATFLAGS_COMMAND_COMPLETE 0xC000 |
#define PXE_STATFLAGS_COMMAND_FAILED 0x8000 |
#define PXE_STATFLAGS_COMMAND_QUEUED 0x4000 |
//#define PXE_STATFLAGS_INITIALIZE 0x0000 |
#define PXE_STATFLAGS_DB_WRITE_TRUNCATED 0x2000 |
//////////////////////////////////////// |
// UNDI Get State |
// |
#define PXE_STATFLAGS_GET_STATE_MASK 0x0003 |
#define PXE_STATFLAGS_GET_STATE_INITIALIZED 0x0002 |
#define PXE_STATFLAGS_GET_STATE_STARTED 0x0001 |
#define PXE_STATFLAGS_GET_STATE_STOPPED 0x0000 |
//////////////////////////////////////// |
// UNDI Start |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI Get Init Info |
// |
#define PXE_STATFLAGS_CABLE_DETECT_MASK 0x0001 |
#define PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED 0x0000 |
#define PXE_STATFLAGS_CABLE_DETECT_SUPPORTED 0x0001 |
//////////////////////////////////////// |
// UNDI Initialize |
// |
#define PXE_STATFLAGS_INITIALIZED_NO_MEDIA 0x0001 |
//////////////////////////////////////// |
// UNDI Reset |
// |
#define PXE_STATFLAGS_RESET_NO_MEDIA 0x0001 |
//////////////////////////////////////// |
// UNDI Shutdown |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI Interrupt Enables |
// |
// |
// If set, receive interrupts are enabled. |
// |
#define PXE_STATFLAGS_INTERRUPT_RECEIVE 0x0001 |
// |
// If set, transmit interrupts are enabled. |
// |
#define PXE_STATFLAGS_INTERRUPT_TRANSMIT 0x0002 |
// |
// If set, command interrupts are enabled. |
// |
#define PXE_STATFLAGS_INTERRUPT_COMMAND 0x0004 |
//////////////////////////////////////// |
// UNDI Receive Filters |
// |
// |
// If set, unicast packets will be received. |
// |
#define PXE_STATFLAGS_RECEIVE_FILTER_UNICAST 0x0001 |
// |
// If set, broadcast packets will be received. |
// |
#define PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST 0x0002 |
// |
// If set, multicast packets that match up with the multicast address |
// filter list will be received. |
// |
#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004 |
// |
// If set, all packets will be received. |
// |
#define PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008 |
// |
// If set, all multicast packets will be received. |
// |
#define PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010 |
//////////////////////////////////////// |
// UNDI Station Address |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI Statistics |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI MCast IP to MAC |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI NvData |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI Get Status |
// |
// |
// Use to determine if an interrupt has occurred. |
// |
#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK 0x000F |
#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS 0x0000 |
// |
// If set, at least one receive interrupt occurred. |
// |
#define PXE_STATFLAGS_GET_STATUS_RECEIVE 0x0001 |
// |
// If set, at least one transmit interrupt occurred. |
// |
#define PXE_STATFLAGS_GET_STATUS_TRANSMIT 0x0002 |
// |
// If set, at least one command interrupt occurred. |
// |
#define PXE_STATFLAGS_GET_STATUS_COMMAND 0x0004 |
// |
// If set, at least one software interrupt occurred. |
// |
#define PXE_STATFLAGS_GET_STATUS_SOFTWARE 0x0008 |
// |
// This flag is set if the transmitted buffer queue is empty. This flag |
// will be set if all transmitted buffer addresses get written into the DB. |
// |
#define PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY 0x0010 |
// |
// This flag is set if no transmitted buffer addresses were written |
// into the DB. (This could be because DBsize was too small.) |
// |
#define PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN 0x0020 |
//////////////////////////////////////// |
// UNDI Fill Header |
// |
// No additional StatFlags |
//////////////////////////////////////// |
// UNDI Transmit |
// |
// No additional StatFlags. |
//////////////////////////////////////// |
// UNDI Receive |
// |
// No additional StatFlags. |
typedef PXE_UINT16 PXE_STATCODE; |
#define PXE_STATCODE_INITIALIZE 0x0000 |
//////////////////////////////////////// |
// Common StatCodes returned by all UNDI commands, UNDI protocol functions |
// and BC protocol functions. |
// |
#define PXE_STATCODE_SUCCESS 0x0000 |
#define PXE_STATCODE_INVALID_CDB 0x0001 |
#define PXE_STATCODE_INVALID_CPB 0x0002 |
#define PXE_STATCODE_BUSY 0x0003 |
#define PXE_STATCODE_QUEUE_FULL 0x0004 |
#define PXE_STATCODE_ALREADY_STARTED 0x0005 |
#define PXE_STATCODE_NOT_STARTED 0x0006 |
#define PXE_STATCODE_NOT_SHUTDOWN 0x0007 |
#define PXE_STATCODE_ALREADY_INITIALIZED 0x0008 |
#define PXE_STATCODE_NOT_INITIALIZED 0x0009 |
#define PXE_STATCODE_DEVICE_FAILURE 0x000A |
#define PXE_STATCODE_NVDATA_FAILURE 0x000B |
#define PXE_STATCODE_UNSUPPORTED 0x000C |
#define PXE_STATCODE_BUFFER_FULL 0x000D |
#define PXE_STATCODE_INVALID_PARAMETER 0x000E |
#define PXE_STATCODE_INVALID_UNDI 0x000F |
#define PXE_STATCODE_IPV4_NOT_SUPPORTED 0x0010 |
#define PXE_STATCODE_IPV6_NOT_SUPPORTED 0x0011 |
#define PXE_STATCODE_NOT_ENOUGH_MEMORY 0x0012 |
#define PXE_STATCODE_NO_DATA 0x0013 |
typedef PXE_UINT16 PXE_IFNUM; |
// |
// This interface number must be passed to the S/W UNDI Start command. |
// |
#define PXE_IFNUM_START 0x0000 |
// |
// This interface number is returned by the S/W UNDI Get State and |
// Start commands if information in the CDB, CPB or DB is invalid. |
// |
#define PXE_IFNUM_INVALID 0x0000 |
typedef PXE_UINT16 PXE_CONTROL; |
// |
// Setting this flag directs the UNDI to queue this command for later |
// execution if the UNDI is busy and it supports command queuing. |
// If queuing is not supported, a PXE_STATCODE_INVALID_CONTROL error |
// is returned. If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL |
// error is returned. |
// |
#define PXE_CONTROL_QUEUE_IF_BUSY 0x0002 |
// |
// These two bit values are used to determine if there are more UNDI |
// CDB structures following this one. If the link bit is set, there |
// must be a CDB structure following this one. Execution will start |
// on the next CDB structure as soon as this one completes successfully. |
// If an error is generated by this command, execution will stop. |
// |
#define PXE_CONTROL_LINK 0x0001 |
#define PXE_CONTROL_LAST_CDB_IN_LIST 0x0000 |
typedef PXE_UINT8 PXE_FRAME_TYPE; |
#define PXE_FRAME_TYPE_NONE 0x00 |
#define PXE_FRAME_TYPE_UNICAST 0x01 |
#define PXE_FRAME_TYPE_BROADCAST 0x02 |
#define PXE_FRAME_TYPE_MULTICAST 0x03 |
#define PXE_FRAME_TYPE_PROMISCUOUS 0x04 |
typedef PXE_UINT32 PXE_IPV4; |
typedef PXE_UINT32 PXE_IPV6[4]; |
#define PXE_MAC_LENGTH 32 |
typedef PXE_UINT8 PXE_MAC_ADDR[PXE_MAC_LENGTH]; |
typedef PXE_UINT8 PXE_IFTYPE; |
typedef PXE_UINT16 PXE_MEDIA_PROTOCOL; |
// |
// This information is from the ARP section of RFC 1700. |
// |
// 1 Ethernet (10Mb) [JBP] |
// 2 Experimental Ethernet (3Mb) [JBP] |
// 3 Amateur Radio AX.25 [PXK] |
// 4 Proteon ProNET Token Ring [JBP] |
// 5 Chaos [GXP] |
// 6 IEEE 802 Networks [JBP] |
// 7 ARCNET [JBP] |
// 8 Hyperchannel [JBP] |
// 9 Lanstar [TU] |
// 10 Autonet Short Address [MXB1] |
// 11 LocalTalk [JKR1] |
// 12 LocalNet (IBM PCNet or SYTEK LocalNET) [JXM] |
// 13 Ultra link [RXD2] |
// 14 SMDS [GXC1] |
// 15 Frame Relay [AGM] |
// 16 Asynchronous Transmission Mode (ATM) [JXB2] |
// 17 HDLC [JBP] |
// 18 Fibre Channel [Yakov Rekhter] |
// 19 Asynchronous Transmission Mode (ATM) [Mark Laubach] |
// 20 Serial Line [JBP] |
// 21 Asynchronous Transmission Mode (ATM) [MXB1] |
// |
#define PXE_IFTYPE_ETHERNET 0x01 |
#define PXE_IFTYPE_TOKENRING 0x04 |
#define PXE_IFTYPE_FIBRE_CHANNEL 0x12 |
typedef struct s_pxe_hw_undi { |
PXE_UINT32 Signature; // PXE_ROMID_SIGNATURE |
PXE_UINT8 Len; // sizeof(PXE_HW_UNDI) |
PXE_UINT8 Fudge; // makes 8-bit cksum equal zero |
PXE_UINT8 Rev; // PXE_ROMID_REV |
PXE_UINT8 IFcnt; // physical connector count |
PXE_UINT8 MajorVer; // PXE_ROMID_MAJORVER |
PXE_UINT8 MinorVer; // PXE_ROMID_MINORVER |
PXE_UINT16 reserved; // zero, not used |
PXE_UINT32 Implementation; // implementation flags |
// reserved // vendor use |
// PXE_UINT32 Status; // status port |
// PXE_UINT32 Command; // command port |
// PXE_UINT64 CDBaddr; // CDB address port |
} PXE_HW_UNDI; |
// |
// Status port bit definitions |
// |
// |
// UNDI operation state |
// |
#define PXE_HWSTAT_STATE_MASK 0xC0000000 |
#define PXE_HWSTAT_BUSY 0xC0000000 |
#define PXE_HWSTAT_INITIALIZED 0x80000000 |
#define PXE_HWSTAT_STARTED 0x40000000 |
#define PXE_HWSTAT_STOPPED 0x00000000 |
// |
// If set, last command failed |
// |
#define PXE_HWSTAT_COMMAND_FAILED 0x20000000 |
// |
// If set, identifies enabled receive filters |
// |
#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED 0x00001000 |
#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED 0x00000800 |
#define PXE_HWSTAT_BROADCAST_RX_ENABLED 0x00000400 |
#define PXE_HWSTAT_MULTICAST_RX_ENABLED 0x00000200 |
#define PXE_HWSTAT_UNICAST_RX_ENABLED 0x00000100 |
// |
// If set, identifies enabled external interrupts |
// |
#define PXE_HWSTAT_SOFTWARE_INT_ENABLED 0x00000080 |
#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED 0x00000040 |
#define PXE_HWSTAT_PACKET_RX_INT_ENABLED 0x00000020 |
#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED 0x00000010 |
// |
// If set, identifies pending interrupts |
// |
#define PXE_HWSTAT_SOFTWARE_INT_PENDING 0x00000008 |
#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING 0x00000004 |
#define PXE_HWSTAT_PACKET_RX_INT_PENDING 0x00000002 |
#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING 0x00000001 |
// |
// Command port definitions |
// |
// |
// If set, CDB identified in CDBaddr port is given to UNDI. |
// If not set, other bits in this word will be processed. |
// |
#define PXE_HWCMD_ISSUE_COMMAND 0x80000000 |
#define PXE_HWCMD_INTS_AND_FILTS 0x00000000 |
// |
// Use these to enable/disable receive filters. |
// |
#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE 0x00001000 |
#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE 0x00000800 |
#define PXE_HWCMD_BROADCAST_RX_ENABLE 0x00000400 |
#define PXE_HWCMD_MULTICAST_RX_ENABLE 0x00000200 |
#define PXE_HWCMD_UNICAST_RX_ENABLE 0x00000100 |
// |
// Use these to enable/disable external interrupts |
// |
#define PXE_HWCMD_SOFTWARE_INT_ENABLE 0x00000080 |
#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE 0x00000040 |
#define PXE_HWCMD_PACKET_RX_INT_ENABLE 0x00000020 |
#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE 0x00000010 |
// |
// Use these to clear pending external interrupts |
// |
#define PXE_HWCMD_CLEAR_SOFTWARE_INT 0x00000008 |
#define PXE_HWCMD_CLEAR_TX_COMPLETE_INT 0x00000004 |
#define PXE_HWCMD_CLEAR_PACKET_RX_INT 0x00000002 |
#define PXE_HWCMD_CLEAR_CMD_COMPLETE_INT 0x00000001 |
typedef struct s_pxe_sw_undi { |
PXE_UINT32 Signature; // PXE_ROMID_SIGNATURE |
PXE_UINT8 Len; // sizeof(PXE_SW_UNDI) |
PXE_UINT8 Fudge; // makes 8-bit cksum zero |
PXE_UINT8 Rev; // PXE_ROMID_REV |
PXE_UINT8 IFcnt; // physical connector count |
PXE_UINT8 MajorVer; // PXE_ROMID_MAJORVER |
PXE_UINT8 MinorVer; // PXE_ROMID_MINORVER |
PXE_UINT16 reserved1; // zero, not used |
PXE_UINT32 Implementation; // Implementation flags |
PXE_UINT64 EntryPoint; // API entry point |
PXE_UINT8 reserved2[3]; // zero, not used |
PXE_UINT8 BusCnt; // number of bustypes supported |
PXE_UINT32 BusType[1]; // list of supported bustypes |
} PXE_SW_UNDI; |
typedef union u_pxe_undi { |
PXE_HW_UNDI hw; |
PXE_SW_UNDI sw; |
} PXE_UNDI; |
// |
// Signature of !PXE structure |
// |
#define PXE_ROMID_SIGNATURE PXE_BUSTYPE('!', 'P', 'X', 'E') |
// |
// !PXE structure format revision |
// |
#define PXE_ROMID_REV 0x02 |
// |
// UNDI command interface revision. These are the values that get sent |
// in option 94 (Client Network Interface Identifier) in the DHCP Discover |
// and PXE Boot Server Request packets. |
// |
#define PXE_ROMID_MAJORVER 0x03 |
#define PXE_ROMID_MINORVER 0x00 |
// |
// Implementation flags |
// |
#define PXE_ROMID_IMP_HW_UNDI 0x80000000 |
#define PXE_ROMID_IMP_SW_VIRT_ADDR 0x40000000 |
#define PXE_ROMID_IMP_64BIT_DEVICE 0x00010000 |
#define PXE_ROMID_IMP_FRAG_SUPPORTED 0x00008000 |
#define PXE_ROMID_IMP_CMD_LINK_SUPPORTED 0x00004000 |
#define PXE_ROMID_IMP_CMD_QUEUE_SUPPORTED 0x00002000 |
#define PXE_ROMID_IMP_MULTI_FRAME_SUPPORTED 0x00001000 |
#define PXE_ROMID_IMP_NVDATA_SUPPORT_MASK 0x00000C00 |
#define PXE_ROMID_IMP_NVDATA_BULK_WRITABLE 0x00000C00 |
#define PXE_ROMID_IMP_NVDATA_SPARSE_WRITABLE 0x00000800 |
#define PXE_ROMID_IMP_NVDATA_READ_ONLY 0x00000400 |
#define PXE_ROMID_IMP_NVDATA_NOT_AVAILABLE 0x00000000 |
#define PXE_ROMID_IMP_STATISTICS_SUPPORTED 0x00000200 |
#define PXE_ROMID_IMP_STATION_ADDR_SETTABLE 0x00000100 |
#define PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED 0x00000080 |
#define PXE_ROMID_IMP_PROMISCUOUS_RX_SUPPORTED 0x00000040 |
#define PXE_ROMID_IMP_BROADCAST_RX_SUPPORTED 0x00000020 |
#define PXE_ROMID_IMP_FILTERED_MULTICAST_RX_SUPPORTED 0x00000010 |
#define PXE_ROMID_IMP_SOFTWARE_INT_SUPPORTED 0x00000008 |
#define PXE_ROMID_IMP_TX_COMPLETE_INT_SUPPORTED 0x00000004 |
#define PXE_ROMID_IMP_PACKET_RX_INT_SUPPORTED 0x00000002 |
#define PXE_ROMID_IMP_CMD_COMPLETE_INT_SUPPORTED 0x00000001 |
typedef struct s_pxe_cdb { |
PXE_OPCODE OpCode; |
PXE_OPFLAGS OpFlags; |
PXE_UINT16 CPBsize; |
PXE_UINT16 DBsize; |
UINT64 CPBaddr; |
UINT64 DBaddr; |
PXE_STATCODE StatCode; |
PXE_STATFLAGS StatFlags; |
PXE_UINT16 IFnum; |
PXE_CONTROL Control; |
} PXE_CDB; |
typedef union u_pxe_ip_addr { |
PXE_IPV6 IPv6; |
PXE_IPV4 IPv4; |
} PXE_IP_ADDR; |
typedef union pxe_device { |
// |
// PCI and PC Card NICs are both identified using bus, device |
// and function numbers. For PC Card, this may require PC |
// Card services to be loaded in the BIOS or preboot |
// environment. |
// |
struct { |
// |
// See S/W UNDI ROMID structure definition for PCI and |
// PCC BusType definitions. |
// |
PXE_UINT32 BusType; |
// |
// Bus, device & function numbers that locate this device. |
// |
PXE_UINT16 Bus; |
PXE_UINT8 Device; |
PXE_UINT8 Function; |
} PCI, PCC; |
// |
// %%TBD - More information is needed about enumerating |
// USB and 1394 devices. |
// |
struct { |
PXE_UINT32 BusType; |
PXE_UINT32 tdb; |
} USB, _1394; |
} PXE_DEVICE; |
// cpb and db definitions |
#define MAX_PCI_CONFIG_LEN 64 // # of dwords |
#define MAX_EEPROM_LEN 128 // #of dwords |
#define MAX_XMIT_BUFFERS 32 // recycling Q length for xmit_done |
#define MAX_MCAST_ADDRESS_CNT 8 |
typedef struct s_pxe_cpb_start { |
// |
// PXE_VOID Delay(PXE_UINT64 microseconds); |
// |
// UNDI will never request a delay smaller than 10 microseconds |
// and will always request delays in increments of 10 microseconds. |
// The Delay() CallBack routine must delay between n and n + 10 |
// microseconds before returning control to the UNDI. |
// |
// This field cannot be set to zero. |
// |
PXE_UINT64 Delay; |
// |
// PXE_VOID Block(PXE_UINT32 enable); |
// |
// UNDI may need to block multi-threaded/multi-processor access to |
// critical code sections when programming or accessing the network |
// device. To this end, a blocking service is needed by the UNDI. |
// When UNDI needs a block, it will call Block() passing a non-zero |
// value. When UNDI no longer needs a block, it will call Block() |
// with a zero value. When called, if the Block() is already enabled, |
// do not return control to the UNDI until the previous Block() is |
// disabled. |
// |
// This field cannot be set to zero. |
// |
PXE_UINT64 Block; |
// |
// PXE_VOID Virt2Phys(PXE_UINT64 virtual, PXE_UINT64 physical_ptr); |
// |
// UNDI will pass the virtual address of a buffer and the virtual |
// address of a 64-bit physical buffer. Convert the virtual address |
// to a physical address and write the result to the physical address |
// buffer. If virtual and physical addresses are the same, just |
// copy the virtual address to the physical address buffer. |
// |
// This field can be set to zero if virtual and physical addresses |
// are equal. |
// |
PXE_UINT64 Virt2Phys; |
// |
// PXE_VOID Mem_IO(PXE_UINT8 read_write, PXE_UINT8 len, PXE_UINT64 port, |
// PXE_UINT64 buf_addr); |
// |
// UNDI will read or write the device io space using this call back |
// function. It passes the number of bytes as the len parameter and it |
// will be either 1,2,4 or 8. |
// |
// This field can not be set to zero. |
// |
PXE_UINT64 Mem_IO; |
} PXE_CPB_START; |
#define PXE_DELAY_MILLISECOND 1000 |
#define PXE_DELAY_SECOND 1000000 |
#define PXE_IO_READ 0 |
#define PXE_IO_WRITE 1 |
#define PXE_MEM_READ 2 |
#define PXE_MEM_WRITE 4 |
typedef struct s_pxe_db_get_init_info { |
// |
// Minimum length of locked memory buffer that must be given to |
// the Initialize command. Giving UNDI more memory will generally |
// give better performance. |
// |
// If MemoryRequired is zero, the UNDI does not need and will not |
// use system memory to receive and transmit packets. |
// |
PXE_UINT32 MemoryRequired; |
// |
// Maximum frame data length for Tx/Rx excluding the media header. |
// |
PXE_UINT32 FrameDataLen; |
// |
// Supported link speeds are in units of mega bits. Common ethernet |
// values are 10, 100 and 1000. Unused LinkSpeeds[] entries are zero |
// filled. |
// |
PXE_UINT32 LinkSpeeds[4]; |
// |
// Number of non-volatile storage items. |
// |
PXE_UINT32 NvCount; |
// |
// Width of non-volatile storage item in bytes. 0, 1, 2 or 4 |
// |
PXE_UINT16 NvWidth; |
// |
// Media header length. This is the typical media header length for |
// this UNDI. This information is needed when allocating receive |
// and transmit buffers. |
// |
PXE_UINT16 MediaHeaderLen; |
// |
// Number of bytes in the NIC hardware (MAC) address. |
// |
PXE_UINT16 HWaddrLen; |
// |
// Maximum number of multicast MAC addresses in the multicast |
// MAC address filter list. |
// |
PXE_UINT16 MCastFilterCnt; |
// |
// Default number and size of transmit and receive buffers that will |
// be allocated by the UNDI. If MemoryRequired is non-zero, this |
// allocation will come out of the memory buffer given to the Initialize |
// command. If MemoryRequired is zero, this allocation will come out of |
// memory on the NIC. |
// |
PXE_UINT16 TxBufCnt; |
PXE_UINT16 TxBufSize; |
PXE_UINT16 RxBufCnt; |
PXE_UINT16 RxBufSize; |
// |
// Hardware interface types defined in the Assigned Numbers RFC |
// and used in DHCP and ARP packets. |
// See the PXE_IFTYPE typedef and PXE_IFTYPE_xxx macros. |
// |
PXE_UINT8 IFtype; |
// |
// Supported duplex. See PXE_DUPLEX_xxxxx #defines below. |
// |
PXE_UINT8 Duplex; |
// |
// Supported loopback options. See PXE_LOOPBACK_xxxxx #defines below. |
// |
PXE_UINT8 LoopBack; |
} PXE_DB_GET_INIT_INFO; |
#define PXE_MAX_TXRX_UNIT_ETHER 1500 |
#define PXE_HWADDR_LEN_ETHER 0x0006 |
#define PXE_MAC_HEADER_LEN_ETHER 0x000E |
#define PXE_DUPLEX_ENABLE_FULL_SUPPORTED 1 |
#define PXE_DUPLEX_FORCE_FULL_SUPPORTED 2 |
#define PXE_LOOPBACK_INTERNAL_SUPPORTED 1 |
#define PXE_LOOPBACK_EXTERNAL_SUPPORTED 2 |
typedef struct s_pxe_pci_config_info { |
// |
// This is the flag field for the PXE_DB_GET_CONFIG_INFO union. |
// For PCI bus devices, this field is set to PXE_BUSTYPE_PCI. |
// |
PXE_UINT32 BusType; |
// |
// This identifies the PCI network device that this UNDI interface |
// is bound to. |
// |
PXE_UINT16 Bus; |
PXE_UINT8 Device; |
PXE_UINT8 Function; |
// |
// This is a copy of the PCI configuration space for this |
// network device. |
// |
union { |
PXE_UINT8 Byte[256]; |
PXE_UINT16 Word[128]; |
PXE_UINT32 Dword[64]; |
} Config; |
} PXE_PCI_CONFIG_INFO; |
typedef struct s_pxe_pcc_config_info { |
// |
// This is the flag field for the PXE_DB_GET_CONFIG_INFO union. |
// For PCC bus devices, this field is set to PXE_BUSTYPE_PCC. |
// |
PXE_UINT32 BusType; |
// |
// This identifies the PCC network device that this UNDI interface |
// is bound to. |
// |
PXE_UINT16 Bus; |
PXE_UINT8 Device; |
PXE_UINT8 Function; |
// |
// This is a copy of the PCC configuration space for this |
// network device. |
// |
union { |
PXE_UINT8 Byte[256]; |
PXE_UINT16 Word[128]; |
PXE_UINT32 Dword[64]; |
} Config; |
} PXE_PCC_CONFIG_INFO; |
typedef struct s_pxe_usb_config_info { |
PXE_UINT32 BusType; |
// %%TBD What should we return here... |
} PXE_USB_CONFIG_INFO; |
typedef struct s_pxe_1394_config_info { |
PXE_UINT32 BusType; |
// %%TBD What should we return here... |
} PXE_1394_CONFIG_INFO; |
typedef union u_pxe_db_get_config_info { |
PXE_PCI_CONFIG_INFO pci; |
PXE_PCC_CONFIG_INFO pcc; |
PXE_USB_CONFIG_INFO usb; |
PXE_1394_CONFIG_INFO _1394; |
} PXE_DB_GET_CONFIG_INFO; |
typedef struct s_pxe_cpb_initialize { |
// |
// Address of first (lowest) byte of the memory buffer. This buffer must |
// be in contiguous physical memory and cannot be swapped out. The UNDI |
// will be using this for transmit and receive buffering. |
// |
PXE_UINT64 MemoryAddr; |
// |
// MemoryLength must be greater than or equal to MemoryRequired |
// returned by the Get Init Info command. |
// |
PXE_UINT32 MemoryLength; |
// |
// Desired link speed in Mbit/sec. Common ethernet values are 10, 100 |
// and 1000. Setting a value of zero will auto-detect and/or use the |
// default link speed (operation depends on UNDI/NIC functionality). |
// |
PXE_UINT32 LinkSpeed; |
// |
// Suggested number and size of receive and transmit buffers to |
// allocate. If MemoryAddr and MemoryLength are non-zero, this |
// allocation comes out of the supplied memory buffer. If MemoryAddr |
// and MemoryLength are zero, this allocation comes out of memory |
// on the NIC. |
// |
// If these fields are set to zero, the UNDI will allocate buffer |
// counts and sizes as it sees fit. |
// |
PXE_UINT16 TxBufCnt; |
PXE_UINT16 TxBufSize; |
PXE_UINT16 RxBufCnt; |
PXE_UINT16 RxBufSize; |
// |
// The following configuration parameters are optional and must be zero |
// to use the default values. |
// |
PXE_UINT8 Duplex; |
PXE_UINT8 LoopBack; |
} PXE_CPB_INITIALIZE; |
#define PXE_DUPLEX_DEFAULT 0x00 |
#define PXE_FORCE_FULL_DUPLEX 0x01 |
#define PXE_ENABLE_FULL_DUPLEX 0x02 |
#define LOOPBACK_NORMAL 0 |
#define LOOPBACK_INTERNAL 1 |
#define LOOPBACK_EXTERNAL 2 |
typedef struct s_pxe_db_initialize { |
// |
// Actual amount of memory used from the supplied memory buffer. This |
// may be less that the amount of memory suppllied and may be zero if |
// the UNDI and network device do not use external memory buffers. |
// |
// Memory used by the UNDI and network device is allocated from the |
// lowest memory buffer address. |
// |
PXE_UINT32 MemoryUsed; |
// |
// Actual number and size of receive and transmit buffers that were |
// allocated. |
// |
PXE_UINT16 TxBufCnt; |
PXE_UINT16 TxBufSize; |
PXE_UINT16 RxBufCnt; |
PXE_UINT16 RxBufSize; |
} PXE_DB_INITIALIZE; |
typedef struct s_pxe_cpb_receive_filters { |
// |
// List of multicast MAC addresses. This list, if present, will |
// replace the existing multicast MAC address filter list. |
// |
PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT]; |
} PXE_CPB_RECEIVE_FILTERS; |
typedef struct s_pxe_db_receive_filters { |
// |
// Filtered multicast MAC address list. |
// |
PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT]; |
} PXE_DB_RECEIVE_FILTERS; |
typedef struct s_pxe_cpb_station_address { |
// |
// If supplied and supported, the current station MAC address |
// will be changed. |
// |
PXE_MAC_ADDR StationAddr; |
} PXE_CPB_STATION_ADDRESS; |
typedef struct s_pxe_dpb_station_address { |
// |
// Current station MAC address. |
// |
PXE_MAC_ADDR StationAddr; |
// |
// Station broadcast MAC address. |
// |
PXE_MAC_ADDR BroadcastAddr; |
// |
// Permanent station MAC address. |
// |
PXE_MAC_ADDR PermanentAddr; |
} PXE_DB_STATION_ADDRESS; |
typedef struct s_pxe_db_statistics { |
// |
// Bit field identifying what statistic data is collected by the |
// UNDI/NIC. |
// If bit 0x00 is set, Data[0x00] is collected. |
// If bit 0x01 is set, Data[0x01] is collected. |
// If bit 0x20 is set, Data[0x20] is collected. |
// If bit 0x21 is set, Data[0x21] is collected. |
// Etc. |
// |
PXE_UINT64 Supported; |
// |
// Statistic data. |
// |
PXE_UINT64 Data[64]; |
} PXE_DB_STATISTICS; |
// |
// Total number of frames received. Includes frames with errors and |
// dropped frames. |
// |
#define PXE_STATISTICS_RX_TOTAL_FRAMES 0x00 |
// |
// Number of valid frames received and copied into receive buffers. |
// |
#define PXE_STATISTICS_RX_GOOD_FRAMES 0x01 |
// |
// Number of frames below the minimum length for the media. |
// This would be <64 for ethernet. |
// |
#define PXE_STATISTICS_RX_UNDERSIZE_FRAMES 0x02 |
// |
// Number of frames longer than the maxminum length for the |
// media. This would be >1500 for ethernet. |
// |
#define PXE_STATISTICS_RX_OVERSIZE_FRAMES 0x03 |
// |
// Valid frames that were dropped because receive buffers were full. |
// |
#define PXE_STATISTICS_RX_DROPPED_FRAMES 0x04 |
// |
// Number of valid unicast frames received and not dropped. |
// |
#define PXE_STATISTICS_RX_UNICAST_FRAMES 0x05 |
// |
// Number of valid broadcast frames received and not dropped. |
// |
#define PXE_STATISTICS_RX_BROADCAST_FRAMES 0x06 |
// |
// Number of valid mutlicast frames received and not dropped. |
// |
#define PXE_STATISTICS_RX_MULTICAST_FRAMES 0x07 |
// |
// Number of frames w/ CRC or alignment errors. |
// |
#define PXE_STATISTICS_RX_CRC_ERROR_FRAMES 0x08 |
// |
// Total number of bytes received. Includes frames with errors |
// and dropped frames. |
// |
#define PXE_STATISTICS_RX_TOTAL_BYTES 0x09 |
// |
// Transmit statistics. |
// |
#define PXE_STATISTICS_TX_TOTAL_FRAMES 0x0A |
#define PXE_STATISTICS_TX_GOOD_FRAMES 0x0B |
#define PXE_STATISTICS_TX_UNDERSIZE_FRAMES 0x0C |
#define PXE_STATISTICS_TX_OVERSIZE_FRAMES 0x0D |
#define PXE_STATISTICS_TX_DROPPED_FRAMES 0x0E |
#define PXE_STATISTICS_TX_UNICAST_FRAMES 0x0F |
#define PXE_STATISTICS_TX_BROADCAST_FRAMES 0x10 |
#define PXE_STATISTICS_TX_MULTICAST_FRAMES 0x11 |
#define PXE_STATISTICS_TX_CRC_ERROR_FRAMES 0x12 |
#define PXE_STATISTICS_TX_TOTAL_BYTES 0x13 |
// |
// Number of collisions detection on this subnet. |
// |
#define PXE_STATISTICS_COLLISIONS 0x14 |
// |
// Number of frames destined for unsupported protocol. |
// |
#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL 0x15 |
typedef struct s_pxe_cpb_mcast_ip_to_mac { |
// |
// Multicast IP address to be converted to multicast MAC address. |
// |
PXE_IP_ADDR IP; |
} PXE_CPB_MCAST_IP_TO_MAC; |
typedef struct s_pxe_db_mcast_ip_to_mac { |
// |
// Multicast MAC address. |
// |
PXE_MAC_ADDR MAC; |
} PXE_DB_MCAST_IP_TO_MAC; |
typedef struct s_pxe_cpb_nvdata_sparse { |
// |
// NvData item list. Only items in this list will be updated. |
// |
struct { |
// Non-volatile storage address to be changed. |
PXE_UINT32 Addr; |
// Data item to write into above storage address. |
union { |
PXE_UINT8 Byte; |
PXE_UINT16 Word; |
PXE_UINT32 Dword; |
} Data; |
} Item[MAX_EEPROM_LEN]; |
} PXE_CPB_NVDATA_SPARSE; |
// |
// When using bulk update, the size of the CPB structure must be |
// the same size as the non-volatile NIC storage. |
// |
typedef union u_pxe_cpb_nvdata_bulk { |
// |
// Array of byte-wide data items. |
// |
PXE_UINT8 Byte[MAX_EEPROM_LEN << 2]; |
// |
// Array of word-wide data items. |
// |
PXE_UINT16 Word[MAX_EEPROM_LEN << 1]; |
// |
// Array of dword-wide data items. |
// |
PXE_UINT32 Dword[MAX_EEPROM_LEN]; |
} PXE_CPB_NVDATA_BULK; |
typedef struct s_pxe_db_nvdata { |
// Arrays of data items from non-volatile storage. |
union { |
// |
// Array of byte-wide data items. |
// |
PXE_UINT8 Byte[MAX_EEPROM_LEN << 2]; |
// |
// Array of word-wide data items. |
// |
PXE_UINT16 Word[MAX_EEPROM_LEN << 1]; |
// Array of dword-wide data items. |
PXE_UINT32 Dword[MAX_EEPROM_LEN]; |
} Data; |
} PXE_DB_NVDATA; |
typedef struct s_pxe_db_get_status { |
// |
// Length of next receive frame (header + data). If this is zero, |
// there is no next receive frame available. |
// |
PXE_UINT32 RxFrameLen; |
// |
// Reserved, set to zero. |
// |
PXE_UINT32 reserved; |
// |
// Addresses of transmitted buffers that need to be recycled. |
// |
PXE_UINT64 TxBuffer[MAX_XMIT_BUFFERS]; |
} PXE_DB_GET_STATUS; |
typedef struct s_pxe_cpb_fill_header { |
// |
// Source and destination MAC addresses. These will be copied into |
// the media header without doing byte swapping. |
// |
PXE_MAC_ADDR SrcAddr; |
PXE_MAC_ADDR DestAddr; |
// |
// Address of first byte of media header. The first byte of packet data |
// follows the last byte of the media header. |
// |
PXE_UINT64 MediaHeader; |
// |
// Length of packet data in bytes (not including the media header). |
// |
PXE_UINT32 PacketLen; |
// |
// Protocol type. This will be copied into the media header without |
// doing byte swapping. Protocol type numbers can be obtained from |
// the Assigned Numbers RFC 1700. |
// |
PXE_UINT16 Protocol; |
// |
// Length of the media header in bytes. |
// |
PXE_UINT16 MediaHeaderLen; |
} PXE_CPB_FILL_HEADER; |
#define PXE_PROTOCOL_ETHERNET_IP 0x0800 |
#define PXE_PROTOCOL_ETHERNET_ARP 0x0806 |
#define MAX_XMIT_FRAGMENTS 16 |
typedef struct s_pxe_cpb_fill_header_fragmented { |
// |
// Source and destination MAC addresses. These will be copied into |
// the media header without doing byte swapping. |
// |
PXE_MAC_ADDR SrcAddr; |
PXE_MAC_ADDR DestAddr; |
// |
// Length of packet data in bytes (not including the media header). |
// |
PXE_UINT32 PacketLen; |
// |
// Protocol type. This will be copied into the media header without |
// doing byte swapping. Protocol type numbers can be obtained from |
// the Assigned Numbers RFC 1700. |
// |
PXE_MEDIA_PROTOCOL Protocol; |
// |
// Length of the media header in bytes. |
// |
PXE_UINT16 MediaHeaderLen; |
// |
// Number of packet fragment descriptors. |
// |
PXE_UINT16 FragCnt; |
// |
// Reserved, must be set to zero. |
// |
PXE_UINT16 reserved; |
// |
// Array of packet fragment descriptors. The first byte of the media |
// header is the first byte of the first fragment. |
// |
struct { |
// |
// Address of this packet fragment. |
// |
PXE_UINT64 FragAddr; |
// |
// Length of this packet fragment. |
// |
PXE_UINT32 FragLen; |
// |
// Reserved, must be set to zero. |
// |
PXE_UINT32 reserved; |
} FragDesc[MAX_XMIT_FRAGMENTS]; |
} PXE_CPB_FILL_HEADER_FRAGMENTED; |
typedef struct s_pxe_cpb_transmit { |
// |
// Address of first byte of frame buffer. This is also the first byte |
// of the media header. |
// |
PXE_UINT64 FrameAddr; |
// |
// Length of the data portion of the frame buffer in bytes. Do not |
// include the length of the media header. |
// |
PXE_UINT32 DataLen; |
// |
// Length of the media header in bytes. |
// |
PXE_UINT16 MediaheaderLen; |
// |
// Reserved, must be zero. |
// |
PXE_UINT16 reserved; |
} PXE_CPB_TRANSMIT; |
typedef struct s_pxe_cpb_transmit_fragments { |
// |
// Length of packet data in bytes (not including the media header). |
// |
PXE_UINT32 FrameLen; |
// |
// Length of the media header in bytes. |
// |
PXE_UINT16 MediaheaderLen; |
// |
// Number of packet fragment descriptors. |
// |
PXE_UINT16 FragCnt; |
// |
// Array of frame fragment descriptors. The first byte of the first |
// fragment is also the first byte of the media header. |
// |
struct { |
// |
// Address of this frame fragment. |
// |
PXE_UINT64 FragAddr; |
// |
// Length of this frame fragment. |
// |
PXE_UINT32 FragLen; |
// |
// Reserved, must be set to zero. |
// |
PXE_UINT32 reserved; |
} FragDesc[MAX_XMIT_FRAGMENTS]; |
} PXE_CPB_TRANSMIT_FRAGMENTS; |
typedef struct s_pxe_cpb_receive { |
// |
// Address of first byte of receive buffer. This is also the first byte |
// of the frame header. |
// |
PXE_UINT64 BufferAddr; |
// |
// Length of receive buffer. This must be large enough to hold the |
// received frame (media header + data). If the length of smaller than |
// the received frame, data will be lost. |
// |
PXE_UINT32 BufferLen; |
// |
// Reserved, must be set to zero. |
// |
PXE_UINT32 reserved; |
} PXE_CPB_RECEIVE; |
typedef struct s_pxe_db_receive { |
// |
// Source and destination MAC addresses from media header. |
// |
PXE_MAC_ADDR SrcAddr; |
PXE_MAC_ADDR DestAddr; |
// |
// Length of received frame. May be larger than receive buffer size. |
// The receive buffer will not be overwritten. This is how to tell |
// if data was lost because the receive buffer was too small. |
// |
PXE_UINT32 FrameLen; |
// |
// Protocol type from media header. |
// |
PXE_MEDIA_PROTOCOL Protocol; |
// |
// Length of media header in received frame. |
// |
PXE_UINT16 MediaHeaderLen; |
// |
// Type of receive frame. |
// |
PXE_FRAME_TYPE Type; |
// |
// Reserved, must be zero. |
// |
PXE_UINT8 reserved[7]; |
} PXE_DB_RECEIVE; |
#pragma pack() |
/* EOF - efi_pxe.h */ |
#endif /* _EFI_PXE_H */ |
/branches/dd/boot/arch/ia64/loader/gefi/inc/pci22.h |
---|
0,0 → 1,193 |
#ifndef _PCI22_H |
#define _PCI22_H |
/*++ |
Copyright (c) 1999 Intel Corporation |
Module Name: |
pci22.h |
Abstract: |
Support for PCI 2.2 standard. |
Revision History |
--*/ |
#ifdef SOFT_SDV |
#define PCI_MAX_BUS 1 |
#else |
#define PCI_MAX_BUS 255 |
#endif |
#define PCI_MAX_DEVICE 31 |
#define PCI_MAX_FUNC 7 |
// |
// Command |
// |
#define PCI_VGA_PALETTE_SNOOP_DISABLED 0x20 |
#pragma pack(1) |
typedef struct { |
UINT16 VendorId; |
UINT16 DeviceId; |
UINT16 Command; |
UINT16 Status; |
UINT8 RevisionID; |
UINT8 ClassCode[3]; |
UINT8 CacheLineSize; |
UINT8 LaytencyTimer; |
UINT8 HeaderType; |
UINT8 BIST; |
} PCI_DEVICE_INDEPENDENT_REGION; |
typedef struct { |
UINT32 Bar[6]; |
UINT32 CISPtr; |
UINT16 SubsystemVendorID; |
UINT16 SubsystemID; |
UINT32 ExpansionRomBar; |
UINT32 Reserved[2]; |
UINT8 InterruptLine; |
UINT8 InterruptPin; |
UINT8 MinGnt; |
UINT8 MaxLat; |
} PCI_DEVICE_HEADER_TYPE_REGION; |
typedef struct { |
PCI_DEVICE_INDEPENDENT_REGION Hdr; |
PCI_DEVICE_HEADER_TYPE_REGION Device; |
} PCI_TYPE00; |
typedef struct { |
UINT32 Bar[2]; |
UINT8 PrimaryBus; |
UINT8 SecondaryBus; |
UINT8 SubordinateBus; |
UINT8 SecondaryLatencyTimer; |
UINT8 IoBase; |
UINT8 IoLimit; |
UINT16 SecondaryStatus; |
UINT16 MemoryBase; |
UINT16 MemoryLimit; |
UINT16 PrefetchableMemoryBase; |
UINT16 PrefetchableMemoryLimit; |
UINT32 PrefetchableBaseUpper32; |
UINT32 PrefetchableLimitUpper32; |
UINT16 IoBaseUpper16; |
UINT16 IoLimitUpper16; |
UINT32 Reserved; |
UINT32 ExpansionRomBAR; |
UINT8 InterruptLine; |
UINT8 InterruptPin; |
UINT16 BridgeControl; |
} PCI_BRIDGE_CONTROL_REGISTER; |
#define PCI_CLASS_DISPLAY_CTRL 0x03 |
#define PCI_CLASS_VGA 0x00 |
#define PCI_CLASS_BRIDGE 0x06 |
#define PCI_CLASS_ISA 0x01 |
#define PCI_CLASS_ISA_POSITIVE_DECODE 0x80 |
#define PCI_CLASS_NETWORK 0x02 |
#define PCI_CLASS_ETHERNET 0x00 |
#define HEADER_TYPE_DEVICE 0x00 |
#define HEADER_TYPE_PCI_TO_PCI_BRIDGE 0x01 |
#define HEADER_TYPE_MULTI_FUNCTION 0x80 |
#define HEADER_LAYOUT_CODE 0x7f |
#define IS_PCI_BRIDGE(_p) ((((_p)->Hdr.HeaderType) & HEADER_LAYOUT_CODE) == HEADER_TYPE_PCI_TO_PCI_BRIDGE) |
#define IS_PCI_MULTI_FUNC(_p) (((_p)->Hdr.HeaderType) & HEADER_TYPE_MULTI_FUNCTION) |
typedef struct { |
PCI_DEVICE_INDEPENDENT_REGION Hdr; |
PCI_BRIDGE_CONTROL_REGISTER Bridge; |
} PCI_TYPE01; |
typedef struct { |
UINT8 Register; |
UINT8 Function; |
UINT8 Device; |
UINT8 Bus; |
UINT8 Reserved[4]; |
} DEFIO_PCI_ADDR; |
typedef struct { |
UINT32 Reg : 8; |
UINT32 Func : 3; |
UINT32 Dev : 5; |
UINT32 Bus : 8; |
UINT32 Reserved: 7; |
UINT32 Enable : 1; |
} PCI_CONFIG_ACCESS_CF8; |
#pragma pack() |
#define EFI_ROOT_BRIDGE_LIST 'eprb' |
typedef struct { |
UINTN Signature; |
UINT16 BridgeNumber; |
UINT16 PrimaryBus; |
UINT16 SubordinateBus; |
EFI_DEVICE_PATH *DevicePath; |
LIST_ENTRY Link; |
} PCI_ROOT_BRIDGE_ENTRY; |
#define PCI_EXPANSION_ROM_HEADER_SIGNATURE 0xaa55 |
#define EFI_PCI_EXPANSION_ROM_HEADER_EFISIGNATURE 0x0EF1 |
#define PCI_DATA_STRUCTURE_SIGNATURE EFI_SIGNATURE_32('P','C','I','R') |
#pragma pack(1) |
typedef struct { |
UINT16 Signature; // 0xaa55 |
UINT8 Reserved[0x16]; |
UINT16 PcirOffset; |
} PCI_EXPANSION_ROM_HEADER; |
typedef struct { |
UINT16 Signature; // 0xaa55 |
UINT16 InitializationSize; |
UINT16 EfiSignature; // 0x0EF1 |
UINT16 EfiSubsystem; |
UINT16 EfiMachineType; |
UINT8 Reserved[0x0A]; |
UINT16 EfiImageHeaderOffset; |
UINT16 PcirOffset; |
} EFI_PCI_EXPANSION_ROM_HEADER; |
typedef struct { |
UINT32 Signature; // "PCIR" |
UINT16 VendorId; |
UINT16 DeviceId; |
UINT16 Reserved0; |
UINT16 Length; |
UINT8 Revision; |
UINT8 ClassCode[3]; |
UINT16 ImageLength; |
UINT16 CodeRevision; |
UINT8 CodeType; |
UINT8 Indicator; |
UINT16 Reserved1; |
} PCI_DATA_STRUCTURE; |
#pragma pack() |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efilink.h |
---|
0,0 → 1,177 |
#ifndef _EFI_LINK_H |
#define _EFI_LINK_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
link.h (renamed efilink.h to avoid conflicts) |
Abstract: |
EFI link list macro's |
Revision History |
--*/ |
#ifndef EFI_NT_EMUL |
// |
// List entry - doubly linked list |
// |
typedef struct _LIST_ENTRY { |
struct _LIST_ENTRY *Flink; |
struct _LIST_ENTRY *Blink; |
} LIST_ENTRY; |
#endif |
// |
// VOID |
// InitializeListHead( |
// LIST_ENTRY *ListHead |
// ); |
// |
#define InitializeListHead(ListHead) \ |
(ListHead)->Flink = ListHead; \ |
(ListHead)->Blink = ListHead; |
// |
// BOOLEAN |
// IsListEmpty( |
// PLIST_ENTRY ListHead |
// ); |
// |
#define IsListEmpty(ListHead) \ |
((ListHead)->Flink == (ListHead)) |
// |
// VOID |
// RemoveEntryList( |
// PLIST_ENTRY Entry |
// ); |
// |
#define _RemoveEntryList(Entry) { \ |
LIST_ENTRY *_Blink, *_Flink; \ |
_Flink = (Entry)->Flink; \ |
_Blink = (Entry)->Blink; \ |
_Blink->Flink = _Flink; \ |
_Flink->Blink = _Blink; \ |
} |
#if EFI_DEBUG |
#define RemoveEntryList(Entry) \ |
_RemoveEntryList(Entry); \ |
(Entry)->Flink = (LIST_ENTRY *) BAD_POINTER; \ |
(Entry)->Blink = (LIST_ENTRY *) BAD_POINTER; |
#else |
#define RemoveEntryList(Entry) \ |
_RemoveEntryList(Entry); |
#endif |
// |
// VOID |
// InsertTailList( |
// PLIST_ENTRY ListHead, |
// PLIST_ENTRY Entry |
// ); |
// |
#define InsertTailList(ListHead,Entry) {\ |
LIST_ENTRY *_ListHead, *_Blink; \ |
_ListHead = (ListHead); \ |
_Blink = _ListHead->Blink; \ |
(Entry)->Flink = _ListHead; \ |
(Entry)->Blink = _Blink; \ |
_Blink->Flink = (Entry); \ |
_ListHead->Blink = (Entry); \ |
} |
// |
// VOID |
// InsertHeadList( |
// PLIST_ENTRY ListHead, |
// PLIST_ENTRY Entry |
// ); |
// |
#define InsertHeadList(ListHead,Entry) {\ |
LIST_ENTRY *_ListHead, *_Flink; \ |
_ListHead = (ListHead); \ |
_Flink = _ListHead->Flink; \ |
(Entry)->Flink = _Flink; \ |
(Entry)->Blink = _ListHead; \ |
_Flink->Blink = (Entry); \ |
_ListHead->Flink = (Entry); \ |
} |
// VOID |
// SwapListEntries( |
// PLIST_ENTRY Entry1, |
// PLIST_ENTRY Entry2 |
// ); |
// |
// Put Entry2 before Entry1 |
// |
#define SwapListEntries(Entry1,Entry2) {\ |
LIST_ENTRY *Entry1Flink, *Entry1Blink; \ |
LIST_ENTRY *Entry2Flink, *Entry2Blink; \ |
Entry2Flink = (Entry2)->Flink; \ |
Entry2Blink = (Entry2)->Blink; \ |
Entry1Flink = (Entry1)->Flink; \ |
Entry1Blink = (Entry1)->Blink; \ |
Entry2Blink->Flink = Entry2Flink; \ |
Entry2Flink->Blink = Entry2Blink; \ |
(Entry2)->Flink = Entry1; \ |
(Entry2)->Blink = Entry1Blink; \ |
Entry1Blink->Flink = (Entry2); \ |
(Entry1)->Blink = (Entry2); \ |
} |
// |
// EFI_FIELD_OFFSET - returns the byte offset to a field within a structure |
// |
#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field))) |
// |
// CONTAINING_RECORD - returns a pointer to the structure |
// from one of it's elements. |
// |
#define _CR(Record, TYPE, Field) \ |
((TYPE *) ( (CHAR8 *)(Record) - (CHAR8 *) &(((TYPE *) 0)->Field))) |
#if EFI_DEBUG |
#define CR(Record, TYPE, Field, Sig) \ |
_CR(Record, TYPE, Field)->Signature != Sig ? \ |
(TYPE *) ASSERT_STRUCT(_CR(Record, TYPE, Field), Record) : \ |
_CR(Record, TYPE, Field) |
#else |
#define CR(Record, TYPE, Field, Signature) \ |
_CR(Record, TYPE, Field) |
#endif |
// |
// A lock structure |
// |
typedef struct _FLOCK { |
EFI_TPL Tpl; |
EFI_TPL OwnerTpl; |
UINTN Lock; |
} FLOCK; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efidevp.h |
---|
0,0 → 1,393 |
#ifndef _DEVPATH_H |
#define _DEVPATH_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
devpath.h |
Abstract: |
Defines for parsing the EFI Device Path structures |
Revision History |
--*/ |
// |
// Device Path structures - Section C |
// |
typedef struct _EFI_DEVICE_PATH { |
UINT8 Type; |
UINT8 SubType; |
UINT8 Length[2]; |
} EFI_DEVICE_PATH; |
#define EFI_DP_TYPE_MASK 0x7F |
#define EFI_DP_TYPE_UNPACKED 0x80 |
//#define END_DEVICE_PATH_TYPE 0xff |
#define END_DEVICE_PATH_TYPE 0x7f |
//#define END_DEVICE_PATH_TYPE_UNPACKED 0x7f |
#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff |
#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01 |
#define END_DEVICE_PATH_LENGTH (sizeof(EFI_DEVICE_PATH)) |
#define DP_IS_END_TYPE(a) |
#define DP_IS_END_SUBTYPE(a) ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE ) |
#define DevicePathType(a) ( ((a)->Type) & EFI_DP_TYPE_MASK ) |
#define DevicePathSubType(a) ( (a)->SubType ) |
#define DevicePathNodeLength(a) ( ((a)->Length[0]) | ((a)->Length[1] << 8) ) |
#define NextDevicePathNode(a) ( (EFI_DEVICE_PATH *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a))) |
//#define IsDevicePathEndType(a) ( DevicePathType(a) == END_DEVICE_PATH_TYPE_UNPACKED ) |
#define IsDevicePathEndType(a) ( DevicePathType(a) == END_DEVICE_PATH_TYPE ) |
#define IsDevicePathEndSubType(a) ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE ) |
#define IsDevicePathEnd(a) ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) ) |
#define IsDevicePathUnpacked(a) ( (a)->Type & EFI_DP_TYPE_UNPACKED ) |
#define SetDevicePathNodeLength(a,l) { \ |
(a)->Length[0] = (UINT8) (l); \ |
(a)->Length[1] = (UINT8) ((l) >> 8); \ |
} |
#define SetDevicePathEndNode(a) { \ |
(a)->Type = END_DEVICE_PATH_TYPE; \ |
(a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; \ |
(a)->Length[0] = sizeof(EFI_DEVICE_PATH); \ |
(a)->Length[1] = 0; \ |
} |
/* |
* |
*/ |
#define HARDWARE_DEVICE_PATH 0x01 |
#define HW_PCI_DP 0x01 |
typedef struct _PCI_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT8 Function; |
UINT8 Device; |
} PCI_DEVICE_PATH; |
#define HW_PCCARD_DP 0x02 |
typedef struct _PCCARD_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT8 SocketNumber; |
} PCCARD_DEVICE_PATH; |
#define HW_MEMMAP_DP 0x03 |
typedef struct _MEMMAP_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 MemoryType; |
EFI_PHYSICAL_ADDRESS StartingAddress; |
EFI_PHYSICAL_ADDRESS EndingAddress; |
} MEMMAP_DEVICE_PATH; |
#define HW_VENDOR_DP 0x04 |
typedef struct _VENDOR_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
EFI_GUID Guid; |
} VENDOR_DEVICE_PATH; |
#define UNKNOWN_DEVICE_GUID \ |
{ 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} } |
typedef struct _UKNOWN_DEVICE_VENDOR_DP { |
VENDOR_DEVICE_PATH DevicePath; |
UINT8 LegacyDriveLetter; |
} UNKNOWN_DEVICE_VENDOR_DEVICE_PATH; |
#define HW_CONTROLLER_DP 0x05 |
typedef struct _CONTROLLER_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 Controller; |
} CONTROLLER_DEVICE_PATH; |
/* |
* |
*/ |
#define ACPI_DEVICE_PATH 0x02 |
#define ACPI_DP 0x01 |
typedef struct _ACPI_HID_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 HID; |
UINT32 UID; |
} ACPI_HID_DEVICE_PATH; |
// |
// EISA ID Macro |
// EISA ID Definition 32-bits |
// bits[15:0] - three character compressed ASCII EISA ID. |
// bits[31:16] - binary number |
// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z' |
// |
#define PNP_EISA_ID_CONST 0x41d0 |
#define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16)) |
#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId))) |
#define PNP_EISA_ID_MASK 0xffff |
#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16) |
/* |
* |
*/ |
#define MESSAGING_DEVICE_PATH 0x03 |
#define MSG_ATAPI_DP 0x01 |
typedef struct _ATAPI_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT8 PrimarySecondary; |
UINT8 SlaveMaster; |
UINT16 Lun; |
} ATAPI_DEVICE_PATH; |
#define MSG_SCSI_DP 0x02 |
typedef struct _SCSI_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT16 Pun; |
UINT16 Lun; |
} SCSI_DEVICE_PATH; |
#define MSG_FIBRECHANNEL_DP 0x03 |
typedef struct _FIBRECHANNEL_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 Reserved; |
UINT64 WWN; |
UINT64 Lun; |
} FIBRECHANNEL_DEVICE_PATH; |
#define MSG_1394_DP 0x04 |
typedef struct _F1394_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 Reserved; |
UINT64 Guid; |
} F1394_DEVICE_PATH; |
#define MSG_USB_DP 0x05 |
typedef struct _USB_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT8 Port; |
UINT8 Endpoint; |
} USB_DEVICE_PATH; |
#define MSG_USB_CLASS_DP 0x0F |
typedef struct _USB_CLASS_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT16 VendorId; |
UINT16 ProductId; |
UINT8 DeviceClass; |
UINT8 DeviceSubclass; |
UINT8 DeviceProtocol; |
} USB_CLASS_DEVICE_PATH; |
#define MSG_I2O_DP 0x06 |
typedef struct _I2O_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 Tid; |
} I2O_DEVICE_PATH; |
#define MSG_MAC_ADDR_DP 0x0b |
typedef struct _MAC_ADDR_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
EFI_MAC_ADDRESS MacAddress; |
UINT8 IfType; |
} MAC_ADDR_DEVICE_PATH; |
#define MSG_IPv4_DP 0x0c |
typedef struct _IPv4_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
EFI_IPv4_ADDRESS LocalIpAddress; |
EFI_IPv4_ADDRESS RemoteIpAddress; |
UINT16 LocalPort; |
UINT16 RemotePort; |
UINT16 Protocol; |
BOOLEAN StaticIpAddress; |
} IPv4_DEVICE_PATH; |
#define MSG_IPv6_DP 0x0d |
typedef struct _IPv6_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
EFI_IPv6_ADDRESS LocalIpAddress; |
EFI_IPv6_ADDRESS RemoteIpAddress; |
UINT16 LocalPort; |
UINT16 RemotePort; |
UINT16 Protocol; |
BOOLEAN StaticIpAddress; |
} IPv6_DEVICE_PATH; |
#define MSG_INFINIBAND_DP 0x09 |
typedef struct _INFINIBAND_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 Reserved; |
UINT64 NodeGuid; |
UINT64 IocGuid; |
UINT64 DeviceId; |
} INFINIBAND_DEVICE_PATH; |
#define MSG_UART_DP 0x0e |
typedef struct _UART_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 Reserved; |
UINT64 BaudRate; |
UINT8 DataBits; |
UINT8 Parity; |
UINT8 StopBits; |
} UART_DEVICE_PATH; |
#define MSG_VENDOR_DP 0x0A |
/* Use VENDOR_DEVICE_PATH struct */ |
#define DEVICE_PATH_MESSAGING_PC_ANSI \ |
{ 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
#define DEVICE_PATH_MESSAGING_VT_100 \ |
{ 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
#define MEDIA_DEVICE_PATH 0x04 |
#define MEDIA_HARDDRIVE_DP 0x01 |
typedef struct _HARDDRIVE_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 PartitionNumber; |
UINT64 PartitionStart; |
UINT64 PartitionSize; |
UINT8 Signature[16]; |
UINT8 MBRType; |
UINT8 SignatureType; |
} HARDDRIVE_DEVICE_PATH; |
#define MBR_TYPE_PCAT 0x01 |
#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02 |
#define SIGNATURE_TYPE_MBR 0x01 |
#define SIGNATURE_TYPE_GUID 0x02 |
#define MEDIA_CDROM_DP 0x02 |
typedef struct _CDROM_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT32 BootEntry; |
UINT64 PartitionStart; |
UINT64 PartitionSize; |
} CDROM_DEVICE_PATH; |
#define MEDIA_VENDOR_DP 0x03 |
/* Use VENDOR_DEVICE_PATH struct */ |
#define MEDIA_FILEPATH_DP 0x04 |
typedef struct _FILEPATH_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
CHAR16 PathName[1]; |
} FILEPATH_DEVICE_PATH; |
#define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName) |
#define MEDIA_PROTOCOL_DP 0x05 |
typedef struct _MEDIA_PROTOCOL_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
EFI_GUID Protocol; |
} MEDIA_PROTOCOL_DEVICE_PATH; |
#define BBS_DEVICE_PATH 0x05 |
#define BBS_BBS_DP 0x01 |
typedef struct _BBS_BBS_DEVICE_PATH { |
EFI_DEVICE_PATH Header; |
UINT16 DeviceType; |
UINT16 StatusFlag; |
CHAR8 String[1]; |
} BBS_BBS_DEVICE_PATH; |
/* DeviceType definitions - from BBS specification */ |
#define BBS_TYPE_FLOPPY 0x01 |
#define BBS_TYPE_HARDDRIVE 0x02 |
#define BBS_TYPE_CDROM 0x03 |
#define BBS_TYPE_PCMCIA 0x04 |
#define BBS_TYPE_USB 0x05 |
#define BBS_TYPE_EMBEDDED_NETWORK 0x06 |
#define BBS_TYPE_DEV 0x80 |
#define BBS_TYPE_UNKNOWN 0xFF |
typedef union { |
EFI_DEVICE_PATH DevPath; |
PCI_DEVICE_PATH Pci; |
PCCARD_DEVICE_PATH PcCard; |
MEMMAP_DEVICE_PATH MemMap; |
VENDOR_DEVICE_PATH Vendor; |
UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor; |
CONTROLLER_DEVICE_PATH Controller; |
ACPI_HID_DEVICE_PATH Acpi; |
ATAPI_DEVICE_PATH Atapi; |
SCSI_DEVICE_PATH Scsi; |
FIBRECHANNEL_DEVICE_PATH FibreChannel; |
F1394_DEVICE_PATH F1394; |
USB_DEVICE_PATH Usb; |
USB_CLASS_DEVICE_PATH UsbClass; |
I2O_DEVICE_PATH I2O; |
MAC_ADDR_DEVICE_PATH MacAddr; |
IPv4_DEVICE_PATH Ipv4; |
IPv6_DEVICE_PATH Ipv6; |
INFINIBAND_DEVICE_PATH InfiniBand; |
UART_DEVICE_PATH Uart; |
HARDDRIVE_DEVICE_PATH HardDrive; |
CDROM_DEVICE_PATH CD; |
FILEPATH_DEVICE_PATH FilePath; |
MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol; |
BBS_BBS_DEVICE_PATH Bbs; |
} EFI_DEV_PATH; |
typedef union { |
EFI_DEVICE_PATH *DevPath; |
PCI_DEVICE_PATH *Pci; |
PCCARD_DEVICE_PATH *PcCard; |
MEMMAP_DEVICE_PATH *MemMap; |
VENDOR_DEVICE_PATH *Vendor; |
UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor; |
CONTROLLER_DEVICE_PATH *Controller; |
ACPI_HID_DEVICE_PATH *Acpi; |
ATAPI_DEVICE_PATH *Atapi; |
SCSI_DEVICE_PATH *Scsi; |
FIBRECHANNEL_DEVICE_PATH *FibreChannel; |
F1394_DEVICE_PATH *F1394; |
USB_DEVICE_PATH *Usb; |
USB_CLASS_DEVICE_PATH *UsbClass; |
I2O_DEVICE_PATH *I2O; |
MAC_ADDR_DEVICE_PATH *MacAddr; |
IPv4_DEVICE_PATH *Ipv4; |
IPv6_DEVICE_PATH *Ipv6; |
INFINIBAND_DEVICE_PATH *InfiniBand; |
UART_DEVICE_PATH *Uart; |
HARDDRIVE_DEVICE_PATH *HardDrive; |
FILEPATH_DEVICE_PATH *FilePath; |
MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol; |
CDROM_DEVICE_PATH *CD; |
BBS_BBS_DEVICE_PATH *Bbs; |
} EFI_DEV_PATH_PTR; |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efidef.h |
---|
0,0 → 1,195 |
#ifndef _EFI_DEF_H |
#define _EFI_DEF_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efidef.h |
Abstract: |
EFI definitions |
Revision History |
--*/ |
typedef UINT16 CHAR16; |
typedef UINT8 CHAR8; |
typedef UINT8 BOOLEAN; |
#ifndef TRUE |
#define TRUE ((BOOLEAN) 1) |
#define FALSE ((BOOLEAN) 0) |
#endif |
#ifndef NULL |
#define NULL ((VOID *) 0) |
#endif |
typedef UINTN EFI_STATUS; |
typedef UINT64 EFI_LBA; |
typedef UINTN EFI_TPL; |
typedef VOID *EFI_HANDLE; |
typedef VOID *EFI_EVENT; |
// |
// Prototype argument decoration for EFI parameters to indicate |
// their direction |
// |
// IN - argument is passed into the function |
// OUT - argument (pointer) is returned from the function |
// OPTIONAL - argument is optional |
// |
#ifndef IN |
#define IN |
#define OUT |
#define OPTIONAL |
#endif |
// |
// A GUID |
// |
typedef struct { |
UINT32 Data1; |
UINT16 Data2; |
UINT16 Data3; |
UINT8 Data4[8]; |
} EFI_GUID; |
// |
// Time |
// |
typedef struct { |
UINT16 Year; // 1998 - 20XX |
UINT8 Month; // 1 - 12 |
UINT8 Day; // 1 - 31 |
UINT8 Hour; // 0 - 23 |
UINT8 Minute; // 0 - 59 |
UINT8 Second; // 0 - 59 |
UINT8 Pad1; |
UINT32 Nanosecond; // 0 - 999,999,999 |
INT16 TimeZone; // -1440 to 1440 or 2047 |
UINT8 Daylight; |
UINT8 Pad2; |
} EFI_TIME; |
// Bit definitions for EFI_TIME.Daylight |
#define EFI_TIME_ADJUST_DAYLIGHT 0x01 |
#define EFI_TIME_IN_DAYLIGHT 0x02 |
// Value definition for EFI_TIME.TimeZone |
#define EFI_UNSPECIFIED_TIMEZONE 0x07FF |
// |
// Networking |
// |
typedef struct { |
UINT8 Addr[4]; |
} EFI_IPv4_ADDRESS; |
typedef struct { |
UINT8 Addr[16]; |
} EFI_IPv6_ADDRESS; |
typedef struct { |
UINT8 Addr[32]; |
} EFI_MAC_ADDRESS; |
// |
// Memory |
// |
typedef UINT64 EFI_PHYSICAL_ADDRESS; |
typedef UINT64 EFI_VIRTUAL_ADDRESS; |
typedef enum { |
AllocateAnyPages, |
AllocateMaxAddress, |
AllocateAddress, |
MaxAllocateType |
} EFI_ALLOCATE_TYPE; |
//Preseve the attr on any range supplied. |
//ConventialMemory must have WB,SR,SW when supplied. |
//When allocating from ConventialMemory always make it WB,SR,SW |
//When returning to ConventialMemory always make it WB,SR,SW |
//When getting the memory map, or on RT for runtime types |
typedef enum { |
EfiReservedMemoryType, |
EfiLoaderCode, |
EfiLoaderData, |
EfiBootServicesCode, |
EfiBootServicesData, |
EfiRuntimeServicesCode, |
EfiRuntimeServicesData, |
EfiConventionalMemory, |
EfiUnusableMemory, |
EfiACPIReclaimMemory, |
EfiACPIMemoryNVS, |
EfiMemoryMappedIO, |
EfiMemoryMappedIOPortSpace, |
EfiPalCode, |
EfiMaxMemoryType |
} EFI_MEMORY_TYPE; |
// possible caching types for the memory range |
#define EFI_MEMORY_UC 0x0000000000000001 |
#define EFI_MEMORY_WC 0x0000000000000002 |
#define EFI_MEMORY_WT 0x0000000000000004 |
#define EFI_MEMORY_WB 0x0000000000000008 |
#define EFI_MEMORY_UCE 0x0000000000000010 |
// physical memory protection on range |
#define EFI_MEMORY_WP 0x0000000000001000 |
#define EFI_MEMORY_RP 0x0000000000002000 |
#define EFI_MEMORY_XP 0x0000000000004000 |
// range requires a runtime mapping |
#define EFI_MEMORY_RUNTIME 0x8000000000000000 |
#define EFI_MEMORY_DESCRIPTOR_VERSION 1 |
typedef struct { |
UINT32 Type; // Field size is 32 bits followed by 32 bit pad |
EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits |
EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits |
UINT64 NumberOfPages; // Field size is 64 bits |
UINT64 Attribute; // Field size is 64 bits |
} EFI_MEMORY_DESCRIPTOR; |
// |
// International Language |
// |
typedef UINT8 ISO_639_2; |
#define ISO_639_2_ENTRY_SIZE 3 |
// |
// |
// |
#define EFI_PAGE_SIZE 4096 |
#define EFI_PAGE_MASK 0xFFF |
#define EFI_PAGE_SHIFT 12 |
#define EFI_SIZE_TO_PAGES(a) \ |
( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) ) |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/libsmbios.h |
---|
0,0 → 1,132 |
#ifndef _LIB_SMBIOS_H |
#define _LIB_SMBIOS_H |
/*++ |
Copyright (c) 2000 Intel Corporation |
Module Name: |
LibSmbios.h |
Abstract: |
Lib include for SMBIOS services. Used to get system serial number and GUID |
Revision History |
--*/ |
// |
// Define SMBIOS tables. |
// |
#pragma pack(1) |
typedef struct { |
UINT8 AnchorString[4]; |
UINT8 EntryPointStructureChecksum; |
UINT8 EntryPointLength; |
UINT8 MajorVersion; |
UINT8 MinorVersion; |
UINT16 MaxStructureSize; |
UINT8 EntryPointRevision; |
UINT8 FormattedArea[5]; |
UINT8 IntermediateAnchorString[5]; |
UINT8 IntermediateChecksum; |
UINT16 TableLength; |
UINT32 TableAddress; |
UINT16 NumberOfSmbiosStructures; |
UINT8 SmbiosBcdRevision; |
} SMBIOS_STRUCTURE_TABLE; |
// |
// Please note that SMBIOS structures can be odd byte aligned since the |
// unformated section of each record is a set of arbitrary size strings. |
// |
typedef struct { |
UINT8 Type; |
UINT8 Length; |
UINT8 Handle[2]; |
} SMBIOS_HEADER; |
typedef UINT8 SMBIOS_STRING; |
typedef struct { |
SMBIOS_HEADER Hdr; |
SMBIOS_STRING Vendor; |
SMBIOS_STRING BiosVersion; |
UINT8 BiosSegment[2]; |
SMBIOS_STRING BiosReleaseDate; |
UINT8 BiosSize; |
UINT8 BiosCharacteristics[8]; |
} SMBIOS_TYPE0; |
typedef struct { |
SMBIOS_HEADER Hdr; |
SMBIOS_STRING Manufacturer; |
SMBIOS_STRING ProductName; |
SMBIOS_STRING Version; |
SMBIOS_STRING SerialNumber; |
// |
// always byte copy this data to prevent alignment faults! |
// |
EFI_GUID Uuid; |
UINT8 WakeUpType; |
} SMBIOS_TYPE1; |
typedef struct { |
SMBIOS_HEADER Hdr; |
SMBIOS_STRING Manufacturer; |
SMBIOS_STRING ProductName; |
SMBIOS_STRING Version; |
SMBIOS_STRING SerialNumber; |
} SMBIOS_TYPE2; |
typedef struct { |
SMBIOS_HEADER Hdr; |
SMBIOS_STRING Manufacturer; |
UINT8 Type; |
SMBIOS_STRING Version; |
SMBIOS_STRING SerialNumber; |
SMBIOS_STRING AssetTag; |
UINT8 BootupState; |
UINT8 PowerSupplyState; |
UINT8 ThermalState; |
UINT8 SecurityStatus; |
UINT8 OemDefined[4]; |
} SMBIOS_TYPE3; |
typedef struct { |
SMBIOS_HEADER Hdr; |
UINT8 Socket; |
UINT8 ProcessorType; |
UINT8 ProcessorFamily; |
SMBIOS_STRING ProcessorManufacture; |
UINT8 ProcessorId[8]; |
SMBIOS_STRING ProcessorVersion; |
UINT8 Voltage; |
UINT8 ExternalClock[2]; |
UINT8 MaxSpeed[2]; |
UINT8 CurrentSpeed[2]; |
UINT8 Status; |
UINT8 ProcessorUpgrade; |
UINT8 L1CacheHandle[2]; |
UINT8 L2CacheHandle[2]; |
UINT8 L3CacheHandle[2]; |
} SMBIOS_TYPE4; |
typedef union { |
SMBIOS_HEADER *Hdr; |
SMBIOS_TYPE0 *Type0; |
SMBIOS_TYPE1 *Type1; |
SMBIOS_TYPE2 *Type2; |
SMBIOS_TYPE3 *Type3; |
SMBIOS_TYPE4 *Type4; |
UINT8 *Raw; |
} SMBIOS_STRUCTURE_POINTER; |
#pragma pack() |
#endif |
/branches/dd/boot/arch/ia64/loader/gefi/inc/efipxebc.h |
---|
0,0 → 1,463 |
#ifndef _EFIPXEBC_H |
#define _EFIPXEBC_H |
/*++ |
Copyright (c) 1998 Intel Corporation |
Module Name: |
efipxebc.h |
Abstract: |
EFI PXE Base Code Protocol |
Revision History |
--*/ |
// |
// PXE Base Code protocol |
// |
#define EFI_PXE_BASE_CODE_PROTOCOL \ |
{ 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
INTERFACE_DECL(_EFI_PXE_BASE_CODE); |
#define DEFAULT_TTL 4 |
#define DEFAULT_ToS 0 |
// |
// Address definitions |
// |
typedef union { |
UINT32 Addr[4]; |
EFI_IPv4_ADDRESS v4; |
EFI_IPv6_ADDRESS v6; |
} EFI_IP_ADDRESS; |
typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT; |
// |
// Packet definitions |
// |
typedef struct { |
UINT8 BootpOpcode; |
UINT8 BootpHwType; |
UINT8 BootpHwAddrLen; |
UINT8 BootpGateHops; |
UINT32 BootpIdent; |
UINT16 BootpSeconds; |
UINT16 BootpFlags; |
UINT8 BootpCiAddr[4]; |
UINT8 BootpYiAddr[4]; |
UINT8 BootpSiAddr[4]; |
UINT8 BootpGiAddr[4]; |
UINT8 BootpHwAddr[16]; |
UINT8 BootpSrvName[64]; |
UINT8 BootpBootFile[128]; |
UINT32 DhcpMagik; |
UINT8 DhcpOptions[56]; |
} EFI_PXE_BASE_CODE_DHCPV4_PACKET; |
// TBD in EFI v1.1 |
//typedef struct { |
// UINT8 reserved; |
//} EFI_PXE_BASE_CODE_DHCPV6_PACKET; |
typedef union { |
UINT8 Raw[1472]; |
EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4; |
// EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6; |
} EFI_PXE_BASE_CODE_PACKET; |
typedef struct { |
UINT8 Type; |
UINT8 Code; |
UINT16 Checksum; |
union { |
UINT32 reserved; |
UINT32 Mtu; |
UINT32 Pointer; |
struct { |
UINT16 Identifier; |
UINT16 Sequence; |
} Echo; |
} u; |
UINT8 Data[494]; |
} EFI_PXE_BASE_CODE_ICMP_ERROR; |
typedef struct { |
UINT8 ErrorCode; |
CHAR8 ErrorString[127]; |
} EFI_PXE_BASE_CODE_TFTP_ERROR; |
// |
// IP Receive Filter definitions |
// |
#define EFI_PXE_BASE_CODE_MAX_IPCNT 8 |
typedef struct { |
UINT8 Filters; |
UINT8 IpCnt; |
UINT16 reserved; |
EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT]; |
} EFI_PXE_BASE_CODE_IP_FILTER; |
#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001 |
#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002 |
#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004 |
#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008 |
// |
// ARP Cache definitions |
// |
typedef struct { |
EFI_IP_ADDRESS IpAddr; |
EFI_MAC_ADDRESS MacAddr; |
} EFI_PXE_BASE_CODE_ARP_ENTRY; |
typedef struct { |
EFI_IP_ADDRESS IpAddr; |
EFI_IP_ADDRESS SubnetMask; |
EFI_IP_ADDRESS GwAddr; |
} EFI_PXE_BASE_CODE_ROUTE_ENTRY; |
// |
// UDP definitions |
// |
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001 |
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002 |
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004 |
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008 |
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010 |
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020 |
// |
// Discover() definitions |
// |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15 |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16 |
// |
// 17 through 32767 are reserved |
// 32768 through 65279 are for vendor use |
// 65280 through 65534 are reserved |
// |
#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535 |
#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF |
#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000 |
typedef struct { |
UINT16 Type; |
BOOLEAN AcceptAnyResponse; |
UINT8 Reserved; |
EFI_IP_ADDRESS IpAddr; |
} EFI_PXE_BASE_CODE_SRVLIST; |
typedef struct { |
BOOLEAN UseMCast; |
BOOLEAN UseBCast; |
BOOLEAN UseUCast; |
BOOLEAN MustUseList; |
EFI_IP_ADDRESS ServerMCastIp; |
UINT16 IpCnt; |
EFI_PXE_BASE_CODE_SRVLIST SrvList[1]; |
} EFI_PXE_BASE_CODE_DISCOVER_INFO; |
// |
// Mtftp() definitions |
// |
typedef enum { |
EFI_PXE_BASE_CODE_TFTP_FIRST, |
EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE, |
EFI_PXE_BASE_CODE_TFTP_READ_FILE, |
EFI_PXE_BASE_CODE_TFTP_WRITE_FILE, |
EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY, |
EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE, |
EFI_PXE_BASE_CODE_MTFTP_READ_FILE, |
EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY, |
EFI_PXE_BASE_CODE_MTFTP_LAST |
} EFI_PXE_BASE_CODE_TFTP_OPCODE; |
typedef struct { |
EFI_IP_ADDRESS MCastIp; |
EFI_PXE_BASE_CODE_UDP_PORT CPort; |
EFI_PXE_BASE_CODE_UDP_PORT SPort; |
UINT16 ListenTimeout; |
UINT16 TransmitTimeout; |
} EFI_PXE_BASE_CODE_MTFTP_INFO; |
// |
// PXE Base Code Mode structure |
// |
#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8 |
#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8 |
typedef struct { |
BOOLEAN Started; |
BOOLEAN Ipv6Available; |
BOOLEAN Ipv6Supported; |
BOOLEAN UsingIpv6; |
BOOLEAN BisSupported; |
BOOLEAN BisDetected; |
BOOLEAN AutoArp; |
BOOLEAN SendGUID; |
BOOLEAN DhcpDiscoverValid; |
BOOLEAN DhcpAckReceived; |
BOOLEAN ProxyOfferReceived; |
BOOLEAN PxeDiscoverValid; |
BOOLEAN PxeReplyReceived; |
BOOLEAN PxeBisReplyReceived; |
BOOLEAN IcmpErrorReceived; |
BOOLEAN TftpErrorReceived; |
BOOLEAN MakeCallbacks; |
UINT8 TTL; |
UINT8 ToS; |
EFI_IP_ADDRESS StationIp; |
EFI_IP_ADDRESS SubnetMask; |
EFI_PXE_BASE_CODE_PACKET DhcpDiscover; |
EFI_PXE_BASE_CODE_PACKET DhcpAck; |
EFI_PXE_BASE_CODE_PACKET ProxyOffer; |
EFI_PXE_BASE_CODE_PACKET PxeDiscover; |
EFI_PXE_BASE_CODE_PACKET PxeReply; |
EFI_PXE_BASE_CODE_PACKET PxeBisReply; |
EFI_PXE_BASE_CODE_IP_FILTER IpFilter; |
UINT32 ArpCacheEntries; |
EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES]; |
UINT32 RouteTableEntries; |
EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES]; |
EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError; |
EFI_PXE_BASE_CODE_TFTP_ERROR TftpError; |
} EFI_PXE_BASE_CODE_MODE; |
// |
// PXE Base Code Interface Function definitions |
// |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_START) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN BOOLEAN UseIpv6 |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_STOP) ( |
IN struct _EFI_PXE_BASE_CODE *This |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_DHCP) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN BOOLEAN SortOffers |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN UINT16 Type, |
IN UINT16 *Layer, |
IN BOOLEAN UseBis, |
IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_MTFTP) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, |
IN OUT VOID *BufferPtr OPTIONAL, |
IN BOOLEAN Overwrite, |
IN OUT UINTN *BufferSize, |
IN UINTN *BlockSize OPTIONAL, |
IN EFI_IP_ADDRESS *ServerIp, |
IN UINT8 *Filename, |
IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL, |
IN BOOLEAN DontUseBuffer |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN UINT16 OpFlags, |
IN EFI_IP_ADDRESS *DestIp, |
IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort, |
IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL |
IN EFI_IP_ADDRESS *SrcIp, OPTIONAL |
IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL |
IN UINTN *HeaderSize, OPTIONAL |
IN VOID *HeaderPtr, OPTIONAL |
IN UINTN *BufferSize, |
IN VOID *BufferPtr |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN UINT16 OpFlags, |
IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL |
IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL |
IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL |
IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL |
IN UINTN *HeaderSize, OPTIONAL |
IN VOID *HeaderPtr, OPTIONAL |
IN OUT UINTN *BufferSize, |
IN VOID *BufferPtr |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_ARP) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN EFI_IP_ADDRESS *IpAddr, |
IN EFI_MAC_ADDRESS *MacAddr OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN BOOLEAN *NewAutoArp, OPTIONAL |
IN BOOLEAN *NewSendGUID, OPTIONAL |
IN UINT8 *NewTTL, OPTIONAL |
IN UINT8 *NewToS, OPTIONAL |
IN BOOLEAN *NewMakeCallback OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL |
IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL |
); |
typedef |
EFI_STATUS |
(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) ( |
IN struct _EFI_PXE_BASE_CODE *This, |
BOOLEAN *NewDhcpDiscoverValid, OPTIONAL |
BOOLEAN *NewDhcpAckReceived, OPTIONAL |
BOOLEAN *NewProxyOfferReceived, OPTIONAL |
BOOLEAN *NewPxeDiscoverValid, OPTIONAL |
BOOLEAN *NewPxeReplyReceived, OPTIONAL |
BOOLEAN *NewPxeBisReplyReceived,OPTIONAL |
IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL |
IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL |
IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL |
IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL |
IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL |
IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL |
); |
// |
// PXE Base Code Protocol structure |
// |
#define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000 |
typedef struct _EFI_PXE_BASE_CODE { |
UINT64 Revision; |
EFI_PXE_BASE_CODE_START Start; |
EFI_PXE_BASE_CODE_STOP Stop; |
EFI_PXE_BASE_CODE_DHCP Dhcp; |
EFI_PXE_BASE_CODE_DISCOVER Discover; |
EFI_PXE_BASE_CODE_MTFTP Mtftp; |
EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite; |
EFI_PXE_BASE_CODE_UDP_READ UdpRead; |
EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter; |
EFI_PXE_BASE_CODE_ARP Arp; |
EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters; |
EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp; |
EFI_PXE_BASE_CODE_SET_PACKETS SetPackets; |
EFI_PXE_BASE_CODE_MODE *Mode; |
} EFI_PXE_BASE_CODE; |
// |
// Call Back Definitions |
// |
#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \ |
{ 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
// |
// Revision Number |
// |
#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000 |
INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK); |
typedef enum { |
EFI_PXE_BASE_CODE_FUNCTION_FIRST, |
EFI_PXE_BASE_CODE_FUNCTION_DHCP, |
EFI_PXE_BASE_CODE_FUNCTION_DISCOVER, |
EFI_PXE_BASE_CODE_FUNCTION_MTFTP, |
EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE, |
EFI_PXE_BASE_CODE_FUNCTION_UDP_READ, |
EFI_PXE_BASE_CODE_FUNCTION_ARP, |
EFI_PXE_BASE_CODE_FUNCTION_IGMP, |
EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST |
} EFI_PXE_BASE_CODE_FUNCTION; |
typedef enum { |
EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST, |
EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE, |
EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT, |
EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST |
} EFI_PXE_BASE_CODE_CALLBACK_STATUS; |
typedef |
EFI_PXE_BASE_CODE_CALLBACK_STATUS |
(EFIAPI *EFI_PXE_CALLBACK) ( |
IN struct _EFI_PXE_BASE_CODE_CALLBACK *This, |
IN EFI_PXE_BASE_CODE_FUNCTION Function, |
IN BOOLEAN Received, |
IN UINT32 PacketLen, |
IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL |
); |
typedef struct _EFI_PXE_BASE_CODE_CALLBACK { |
UINT64 Revision; |
EFI_PXE_CALLBACK Callback; |
} EFI_PXE_BASE_CODE_CALLBACK; |
#endif /* _EFIPXEBC_H */ |
/branches/dd/boot/arch/ia64/loader/gefi/inc/Makefile |
---|
0,0 → 1,21 |
include ../Make.defaults |
CDIR=$(TOPDIR)/.. |
all: |
clean: |
install: |
mkdir -p $(INSTALLROOT)/include/efi |
mkdir -p $(INSTALLROOT)/include/efi/protocol |
mkdir -p $(INSTALLROOT)/include/efi/$(ARCH) |
$(INSTALL) -m 644 *.h $(INSTALLROOT)/include/efi |
$(INSTALL) -m 644 protocol/*.h $(INSTALLROOT)/include/efi/protocol |
$(INSTALL) -m 644 $(ARCH)/*.h $(INSTALLROOT)/include/efi/$(ARCH) |
ifeq ($(ARCH),ia64) |
mkdir -p $(INSTALLROOT)/include/efi/protocol/ia64 |
$(INSTALL) -m 644 protocol/ia64/*.h $(INSTALLROOT)/include/efi/protocol/ia64 |
endif |
include ../Make.rules |