Fill out the firmware interfaces somewhat.
This commit is contained in:
parent
06473c99eb
commit
76491e7ff0
@ -1,5 +1,5 @@
|
|||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2000 Doug Rabson
|
* Copyright (c) 2001 Doug Rabson
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -29,589 +29,16 @@
|
|||||||
#ifndef _MACHINE_EFI_H_
|
#ifndef _MACHINE_EFI_H_
|
||||||
#define _MACHINE_EFI_H_
|
#define _MACHINE_EFI_H_
|
||||||
|
|
||||||
typedef u_int8_t BOOLEAN;
|
#include <boot/efi/include/ia64/efibind.h>
|
||||||
typedef int64_t INTN;
|
#include <boot/efi/include/efidef.h>
|
||||||
typedef u_int64_t UINTN;
|
#include <boot/efi/include/efierr.h>
|
||||||
typedef int8_t INT8;
|
#include <boot/efi/include/efidevp.h>
|
||||||
typedef u_int8_t UINT8;
|
#include <boot/efi/include/eficon.h>
|
||||||
typedef int16_t INT16;
|
#include <boot/efi/include/efiapi.h>
|
||||||
typedef u_int16_t UINT16;
|
|
||||||
typedef int32_t INT32;
|
|
||||||
typedef u_int32_t UINT32;
|
|
||||||
typedef int64_t INT64;
|
|
||||||
typedef u_int64_t UINT64;
|
|
||||||
typedef UINT8 CHAR8;
|
|
||||||
typedef UINT16 CHAR16;
|
|
||||||
|
|
||||||
typedef struct _EFI_GUID {
|
extern EFI_SYSTEM_TABLE *ia64_efi_systab;
|
||||||
UINT32 Data1;
|
extern EFI_RUNTIME_SERVICES *ia64_efi_runtime;
|
||||||
UINT16 Data2;
|
|
||||||
UINT16 Data3;
|
|
||||||
UINT8 Data4[8];
|
|
||||||
} EFI_GUID;
|
|
||||||
|
|
||||||
typedef INTN EFI_STATUS;
|
extern void ia64_efi_init(void);
|
||||||
typedef void *EFI_HANDLE;
|
|
||||||
typedef void *EFI_EVENT;
|
|
||||||
typedef UINT64 EFI_LBA;
|
|
||||||
typedef UINTN EFI_TPL;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* EFI_STATUS Error Codes.
|
|
||||||
*/
|
|
||||||
#define EFI_SUCCESS 0
|
|
||||||
#define EFI_LOAD_ERROR 1
|
|
||||||
#define EFI_INVALID_PARAMETER 2
|
|
||||||
#define EFI_UNSUPPORTED 3
|
|
||||||
#define EFI_BAD_BUFFER_SIZE 4
|
|
||||||
#define EFI_BUFFER_TOO_SMALL 5
|
|
||||||
#define EFI_NOT_READY 6
|
|
||||||
#define EFI_DEVICE_ERROR 7
|
|
||||||
#define EFI_WRITE_PROTECTED 8
|
|
||||||
#define EFI_OUT_OF_RESOURCES 9
|
|
||||||
#define EFI_VOLUME_CORRUPTED 10
|
|
||||||
#define EFI_VOLUME_FULL 11
|
|
||||||
#define EFI_NO_MEDIA 12
|
|
||||||
#define EFI_MEDIA_CHANGED 13
|
|
||||||
#define EFI_NOT_FOUND 14
|
|
||||||
#define EFI_ACCESS_DENIED 15
|
|
||||||
#define EFI_NO_RESPONSE 16
|
|
||||||
#define EFI_NO_MAPPING 17
|
|
||||||
#define EFI_TIMEOUT 18
|
|
||||||
#define EFI_NOT_STARTED 19
|
|
||||||
#define EFI_ALREADY_STARTED 20
|
|
||||||
#define EFI_ABORTED 21
|
|
||||||
#define EFI_ICMP_ERROR 22
|
|
||||||
#define EFI_TFTP_ERROR 23
|
|
||||||
#define EFI_PROTOCOL_ERROR 24
|
|
||||||
|
|
||||||
/*
|
|
||||||
* EFI_STATUS Warning Codes.
|
|
||||||
*/
|
|
||||||
#define EFI_WARN_UNKNOWN_GLYPH 1
|
|
||||||
#define EFI_WARN_DELETE_FAILURE 2
|
|
||||||
#define EFI_WARN_WRITE_FAILURE 3
|
|
||||||
#define EFI_WARN_BUFFER_TOO_SMALL 4
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _EFI_MAC_ADDRESS {
|
|
||||||
CHAR8 Address[32];
|
|
||||||
} EFI_MAC_ADDRESS;
|
|
||||||
|
|
||||||
typedef struct _EFI_IPv4_ADDRESS {
|
|
||||||
CHAR8 Address[4];
|
|
||||||
} EFI_IPv4_ADDRESS;
|
|
||||||
|
|
||||||
typedef struct _EFI_IPv6_ADDRESS {
|
|
||||||
CHAR8 Address[16];
|
|
||||||
} EFI_IPv6_ADDRESS, EFI_IP_ADDRESS;
|
|
||||||
|
|
||||||
typedef struct _EFI_TIME {
|
|
||||||
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 - 1440 or 2047 */
|
|
||||||
UINT8 Daylight;
|
|
||||||
UINT8 Pad2;
|
|
||||||
} EFI_TIME;
|
|
||||||
|
|
||||||
typedef struct _EFI_TIME_CAPABILITIES {
|
|
||||||
UINT32 Resolution;
|
|
||||||
UINT32 Accuracy;
|
|
||||||
BOOLEAN SetsToZero;
|
|
||||||
} EFI_TIME_CAPABILITIES;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Reset types.
|
|
||||||
*/
|
|
||||||
typedef enum _EFI_RESET_TYPE {
|
|
||||||
EfiResetCold,
|
|
||||||
EfiResetWarm
|
|
||||||
} EFI_RESET_TYPE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Allocate Types.
|
|
||||||
*/
|
|
||||||
typedef enum _EFI_ALLOCATE_TYPE {
|
|
||||||
AllocateAnyPages,
|
|
||||||
AllocateMaxAddress,
|
|
||||||
AllocateAddress,
|
|
||||||
MaxAllocateType
|
|
||||||
} EFI_ALLOCATE_TYPE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Memory types.
|
|
||||||
*/
|
|
||||||
typedef enum _EFI_MEMORY_TYPE {
|
|
||||||
EfiReservedMemoryType,
|
|
||||||
EfiLoaderCode,
|
|
||||||
EfiLoaderData,
|
|
||||||
EfiBootServicesCode,
|
|
||||||
EfiBootServicesData,
|
|
||||||
EfiRuntimeServicesCode,
|
|
||||||
EfiRuntimeServicesData,
|
|
||||||
EfiConventionalMemory,
|
|
||||||
EfiUnusableMemory,
|
|
||||||
EfiAcpiReclaimMemory,
|
|
||||||
EfiAcpiMemoryNvs,
|
|
||||||
EfiMemoryMappedIo,
|
|
||||||
EfiMemoryMappedIoPortSpace,
|
|
||||||
EfiPalCode,
|
|
||||||
EfiMaxMemoryType
|
|
||||||
} EFI_MEMORY_TYPE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Physical Address.
|
|
||||||
*/
|
|
||||||
typedef UINT64 EFI_PHYSICAL_ADDRESS;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Virtual Address.
|
|
||||||
*/
|
|
||||||
typedef UINT64 EFI_VIRTUAL_ADDRESS;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Memory Descriptor.
|
|
||||||
*/
|
|
||||||
typedef struct _EFI_MEMORY_DESCRIPTOR {
|
|
||||||
UINT32 Type;
|
|
||||||
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
|
||||||
EFI_VIRTUAL_ADDRESS VirtualStart;
|
|
||||||
UINT64 NumberOfPages;
|
|
||||||
UINT64 Attribute;
|
|
||||||
} EFI_MEMORY_DESCRIPTOR;
|
|
||||||
|
|
||||||
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Memory Attribute Definitions.
|
|
||||||
*/
|
|
||||||
#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
|
|
||||||
#define EFI_MEMORY_WP 0x0000000000001000
|
|
||||||
#define EFI_MEMORY_RP 0x0000000000002000
|
|
||||||
#define EFI_MEMORY_XP 0x0000000000004000
|
|
||||||
#define EFI_MEMORY_RUNTIME 0x8000000000000000
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Variable Attributes.
|
|
||||||
*/
|
|
||||||
#define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
|
|
||||||
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
|
|
||||||
#define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Task Priority Levels.
|
|
||||||
*/
|
|
||||||
#define TPL_APPLICATION 4
|
|
||||||
#define TPL_CALLBACK 8
|
|
||||||
#define TPL_NOTIFY 16
|
|
||||||
#define TPL_HIGH_LEVEL 31
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Event Types.
|
|
||||||
*/
|
|
||||||
#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
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Event Notification Function.
|
|
||||||
*/
|
|
||||||
typedef void (*EFI_EVENT_NOTIFY)(EFI_EVENT Event,
|
|
||||||
void *Context);
|
|
||||||
/*
|
|
||||||
* Timer Delay
|
|
||||||
*/
|
|
||||||
typedef enum _EFI_TIMER_DELAY {
|
|
||||||
TimerCancel,
|
|
||||||
TimerPeriodic,
|
|
||||||
TimerRelative
|
|
||||||
} EFI_TIMER_DELAY;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Interface Types.
|
|
||||||
*/
|
|
||||||
typedef enum _EFI_INTERFACE_TYPE {
|
|
||||||
EFI_NATIVE_INTERFACE,
|
|
||||||
EFI_PCODE_INTERFACE
|
|
||||||
} EFI_INTERFACE_TYPE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Search Type.
|
|
||||||
*/
|
|
||||||
typedef enum _EFI_LOCATE_SEARCH_TYPE {
|
|
||||||
AllHandles,
|
|
||||||
ByRegisterNotify,
|
|
||||||
ByProtocol
|
|
||||||
} EFI_LOCATE_SEARCH_TYPE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Device Path.
|
|
||||||
*/
|
|
||||||
typedef struct _EFI_DEVICE_PATH {
|
|
||||||
UINT8 Type;
|
|
||||||
UINT8 SubType;
|
|
||||||
UINT8 Length[2];
|
|
||||||
} EFI_DEVICE_PATH;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SIMPLE_INPUT Protocol
|
|
||||||
*/
|
|
||||||
#define SIMPLE_INPUT_PROTOCOL \
|
|
||||||
{ 0x387477c1,0x69c7,0x11d2,0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b }
|
|
||||||
|
|
||||||
typedef struct _EFI_INPUT_KEY {
|
|
||||||
UINT16 ScanCode;
|
|
||||||
CHAR16 UnicodeChar;
|
|
||||||
} EFI_INPUT_KEY;
|
|
||||||
|
|
||||||
typedef struct _SIMPLE_INPUT_INTERFACE SIMPLE_INPUT_INTERFACE;
|
|
||||||
struct _SIMPLE_INPUT_INTERFACE {
|
|
||||||
EFI_STATUS (*Reset)
|
|
||||||
(SIMPLE_INPUT_INTERFACE *This,
|
|
||||||
BOOLEAN ExtendedVerification);
|
|
||||||
EFI_STATUS (*ReadKey)
|
|
||||||
(SIMPLE_INPUT_INTERFACE *This,
|
|
||||||
EFI_INPUT_KEY *Key);
|
|
||||||
EFI_EVENT WaitForKey;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SIMPLE_TEXT_OUTPUT Protocol.
|
|
||||||
*/
|
|
||||||
#define SIMPLE_TEXT_OUTPUT_PROTOCOL \
|
|
||||||
{ 0x387477c2,0x69c7,0x11d2,0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b }
|
|
||||||
|
|
||||||
typedef struct _SIMPLE_TEXT_OUTPUT_MODE {
|
|
||||||
INT32 MaxMode;
|
|
||||||
/* current settings */
|
|
||||||
INT32 Mode;
|
|
||||||
INT32 Attribute;
|
|
||||||
INT32 CursorColumn;
|
|
||||||
INT32 CursorRow;
|
|
||||||
BOOLEAN CursorVisible;
|
|
||||||
} SIMPLE_TEXT_OUTPUT_MODE;
|
|
||||||
|
|
||||||
typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE SIMPLE_TEXT_OUTPUT_INTERFACE;
|
|
||||||
struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
|
|
||||||
EFI_STATUS (*Reset)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
BOOLEAN ExtendedVerification);
|
|
||||||
EFI_STATUS (*OutputString)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
CHAR16 *String);
|
|
||||||
EFI_STATUS (*TestString)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
CHAR16 *String);
|
|
||||||
EFI_STATUS (*QueryMode)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
UINTN ModeNumber,
|
|
||||||
UINTN *Columns,
|
|
||||||
UINTN *Rows);
|
|
||||||
EFI_STATUS (*SetMode)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
UINTN ModeNumber);
|
|
||||||
EFI_STATUS (*SetAttribute)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
UINTN Attribute);
|
|
||||||
EFI_STATUS (*ClearScreen)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This);
|
|
||||||
EFI_STATUS (*SetCursorPosition)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
UINTN Column,
|
|
||||||
UINTN Row);
|
|
||||||
EFI_STATUS (*EnableCursor)
|
|
||||||
(SIMPLE_TEXT_OUTPUT_INTERFACE *This,
|
|
||||||
BOOLEAN Visible);
|
|
||||||
SIMPLE_TEXT_OUTPUT_MODE Mode;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Standard EFI table header.
|
|
||||||
*/
|
|
||||||
typedef struct _EFI_TABLE_HEADER {
|
|
||||||
u_int64_t Signature;
|
|
||||||
u_int32_t Revision;
|
|
||||||
u_int32_t HeaderSize;
|
|
||||||
u_int32_t CRC32;
|
|
||||||
u_int32_t Reserved;
|
|
||||||
} EFI_TABLE_HEADER;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* EFI Runtime Services Table.
|
|
||||||
*/
|
|
||||||
#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
|
|
||||||
#define EFI_RUNTIME_SERVICES_REVISION ((1<<16) | 99)
|
|
||||||
|
|
||||||
typedef struct _EFI_RUNTIME_SERVICES {
|
|
||||||
EFI_TABLE_HEADER Hdr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Time Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*GetTime)
|
|
||||||
(EFI_TIME *Time,
|
|
||||||
EFI_TIME_CAPABILITIES *Capabilities);
|
|
||||||
EFI_STATUS (*SetTime)
|
|
||||||
(EFI_TIME *Time);
|
|
||||||
EFI_STATUS (*GetWakeupTime)
|
|
||||||
(BOOLEAN *Enabled,
|
|
||||||
BOOLEAN *Pending,
|
|
||||||
EFI_TIME *Time);
|
|
||||||
EFI_STATUS (*SetWakeupTime)
|
|
||||||
(BOOLEAN Enable,
|
|
||||||
EFI_TIME *Time);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Virtual Memory Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*SetVirtualAddressMap)
|
|
||||||
(UINTN MemoryMapSize,
|
|
||||||
UINTN DescriptorSize,
|
|
||||||
UINT32 DescriptorVersion,
|
|
||||||
EFI_MEMORY_DESCRIPTOR *VirtualMap);
|
|
||||||
EFI_STATUS (*ConvertPointer)
|
|
||||||
(UINTN DebugDisposition,
|
|
||||||
void **Address);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Variable Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*GetVariable)
|
|
||||||
(CHAR16 *VariableName,
|
|
||||||
EFI_GUID *VendorGuid,
|
|
||||||
UINT32 *Attributes,
|
|
||||||
UINTN *DataSize,
|
|
||||||
void *Data);
|
|
||||||
EFI_STATUS (*GetNextVariableName)
|
|
||||||
(UINTN *VariableNameSize,
|
|
||||||
CHAR16 *VariableName,
|
|
||||||
EFI_GUID *VendorGuid);
|
|
||||||
EFI_STATUS (*SetVariable)
|
|
||||||
(CHAR16 *VariableName,
|
|
||||||
EFI_GUID *VendorGuid,
|
|
||||||
UINT32 Attributes,
|
|
||||||
UINTN DataSize,
|
|
||||||
void *Data);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Miscellaneous Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*GetNextHighMonotonicCount)
|
|
||||||
(UINT32 *HighCount);
|
|
||||||
EFI_STATUS (*ResetSystem)
|
|
||||||
(EFI_RESET_TYPE ResetType,
|
|
||||||
EFI_STATUS ResetStatus,
|
|
||||||
UINTN DataSize,
|
|
||||||
CHAR16 *ResetData);
|
|
||||||
|
|
||||||
} EFI_RUNTIME_SERVICES;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Boot Services Table.
|
|
||||||
*/
|
|
||||||
#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
|
|
||||||
#define EFI_BOOT_SERVICES_REVISION ((0<<16) | 91)
|
|
||||||
|
|
||||||
typedef struct _EFI_BOOT_SERVICES {
|
|
||||||
EFI_TABLE_HEADER Hdr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Task Priority Services.
|
|
||||||
*/
|
|
||||||
EFI_TPL (*RaiseTPL)
|
|
||||||
(EFI_TPL NewTpl);
|
|
||||||
void (*RestoreTPL)
|
|
||||||
(EFI_TPL OldTpl);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Memory Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*AllocatePages)
|
|
||||||
(EFI_ALLOCATE_TYPE Type,
|
|
||||||
EFI_MEMORY_TYPE MemoryType,
|
|
||||||
UINTN Pages,
|
|
||||||
EFI_PHYSICAL_ADDRESS *Memory);
|
|
||||||
EFI_STATUS (*FreePages)
|
|
||||||
(EFI_PHYSICAL_ADDRESS Memory,
|
|
||||||
UINTN Pages);
|
|
||||||
EFI_STATUS (*GetMemoryMap)
|
|
||||||
(UINTN *MemoryMapSize,
|
|
||||||
EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
|
||||||
UINTN *MapKey,
|
|
||||||
UINTN *DescriptorSize,
|
|
||||||
UINT32 *DescriptorVersion);
|
|
||||||
EFI_STATUS (*AllocatePool)
|
|
||||||
(EFI_MEMORY_TYPE *PoolType,
|
|
||||||
UINTN Size,
|
|
||||||
void **Buffer);
|
|
||||||
EFI_STATUS (*FreePool)
|
|
||||||
(void *Buffer);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Event & Timer Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*CreateEvent)
|
|
||||||
(UINT32 Type,
|
|
||||||
EFI_TPL NotifyTpl,
|
|
||||||
EFI_EVENT_NOTIFY NotifyFunction,
|
|
||||||
void *NotifyContext,
|
|
||||||
EFI_EVENT *Event);
|
|
||||||
EFI_STATUS (*SetTimer)
|
|
||||||
(EFI_EVENT Event,
|
|
||||||
EFI_TIMER_DELAY Type,
|
|
||||||
UINT64 TriggerTime);
|
|
||||||
EFI_STATUS (*WaitForEvent)
|
|
||||||
(UINTN NumberOfEvents,
|
|
||||||
EFI_EVENT *Event,
|
|
||||||
UINTN *Index);
|
|
||||||
EFI_STATUS (*SignalEvent)
|
|
||||||
(EFI_EVENT Event);
|
|
||||||
EFI_STATUS (*CloseEvent)
|
|
||||||
(EFI_EVENT Event);
|
|
||||||
EFI_STATUS (*CheckEvent)
|
|
||||||
(EFI_EVENT Event);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Protocol Handler Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*InstallProtocolInterface)
|
|
||||||
(EFI_HANDLE *Handle,
|
|
||||||
EFI_GUID *Protocol,
|
|
||||||
EFI_INTERFACE_TYPE InterfaceType,
|
|
||||||
void *Interface);
|
|
||||||
EFI_STATUS (*ReinstallProtocolInterface)
|
|
||||||
(EFI_HANDLE *Handle,
|
|
||||||
EFI_GUID *Protocol,
|
|
||||||
void *OldInterface,
|
|
||||||
void *NewInterface);
|
|
||||||
EFI_STATUS (*UninstallProtocolInterface)
|
|
||||||
(EFI_HANDLE Handle,
|
|
||||||
EFI_GUID *Protocol,
|
|
||||||
void *Interface);
|
|
||||||
EFI_STATUS (*HandleProtocol)
|
|
||||||
(EFI_HANDLE Handle,
|
|
||||||
EFI_GUID *Protocol,
|
|
||||||
void **Interface);
|
|
||||||
EFI_STATUS (*PCHandleProtocol)
|
|
||||||
(EFI_HANDLE Handle,
|
|
||||||
EFI_GUID *Protocol,
|
|
||||||
void **Interface);
|
|
||||||
EFI_STATUS (*RegisterProtocolNotify)
|
|
||||||
(EFI_GUID *Protocol,
|
|
||||||
EFI_EVENT Event,
|
|
||||||
void **Registration);
|
|
||||||
EFI_STATUS (*LocateHandle)
|
|
||||||
(EFI_LOCATE_SEARCH_TYPE SearchType,
|
|
||||||
EFI_GUID *Protocol,
|
|
||||||
void *SearchKey,
|
|
||||||
UINTN *BufferSize,
|
|
||||||
EFI_HANDLE *Buffer);
|
|
||||||
EFI_STATUS (*LocateDevicePath)
|
|
||||||
(EFI_GUID *Protocol,
|
|
||||||
EFI_DEVICE_PATH **DevicePath,
|
|
||||||
EFI_HANDLE Device);
|
|
||||||
EFI_STATUS (*InstallConfigurationTable)
|
|
||||||
(EFI_GUID *Guid,
|
|
||||||
void *Table);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Image Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*LoadImage)
|
|
||||||
(BOOLEAN BootPolicy,
|
|
||||||
EFI_HANDLE ParentImageHandle,
|
|
||||||
EFI_DEVICE_PATH *FilePath,
|
|
||||||
void *SourceBuffer,
|
|
||||||
UINTN SourceSize,
|
|
||||||
EFI_HANDLE *ImageHandle);
|
|
||||||
EFI_STATUS (*StartImage)
|
|
||||||
(EFI_HANDLE ImageHandle,
|
|
||||||
UINTN *ExitDataSize,
|
|
||||||
CHAR16 *ExitData);
|
|
||||||
EFI_STATUS (*Exit)
|
|
||||||
(EFI_HANDLE ImageHandle,
|
|
||||||
EFI_STATUS ExitStatus,
|
|
||||||
UINTN ExitDataSize,
|
|
||||||
CHAR16 ExitData);
|
|
||||||
EFI_STATUS (*UnloadImage)
|
|
||||||
(EFI_HANDLE ImageHandle);
|
|
||||||
EFI_STATUS (*ExitBootServices)
|
|
||||||
(EFI_HANDLE ImageHandle,
|
|
||||||
UINTN MapKey);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Miscellaneous Services.
|
|
||||||
*/
|
|
||||||
EFI_STATUS (*GetNextMonotonicCount)
|
|
||||||
(UINT64 *Count);
|
|
||||||
EFI_STATUS (*Stall)
|
|
||||||
(UINTN Microseconds);
|
|
||||||
EFI_STATUS (*SetWatchdogTimer)
|
|
||||||
(UINTN Timeout,
|
|
||||||
UINT64 WatchdogCode,
|
|
||||||
UINTN DataSize,
|
|
||||||
CHAR16 *WatchdogData);
|
|
||||||
|
|
||||||
} EFI_BOOT_SERVICES;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* EFI Configuration Table and GUID Declarations.
|
|
||||||
*/
|
|
||||||
#define MPS_TABLE_GUID \
|
|
||||||
{0xeb9d2d2f,0x2d88,0x11d3,0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}
|
|
||||||
#define ACPI_TABLE_GUID \
|
|
||||||
{0xeb9d2d30,0x2d88,0x11d3,0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}
|
|
||||||
#define ACPI_20_TABLE_GUID \
|
|
||||||
{0x8868e871,0xe4f1,0x11d3,0xbc,0x22,0x00,x080,0xc7,0x3c,0x88,0x81}
|
|
||||||
#define SMBIOS_TABLE_GUID \
|
|
||||||
{0xeb9d2d31,0x2d88,0x11d3,0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}
|
|
||||||
#define SAL_TABLE_GUID \
|
|
||||||
{0xeb9d2d32,0x2d88,0x11d3,0x9a,0x16,0x00,0x90,0x27,0x3f,0xc1,0x4d}
|
|
||||||
|
|
||||||
typedef struct _EFI_CONFIGURATION_TABLE {
|
|
||||||
EFI_GUID VendorGuid;
|
|
||||||
void *VendorTable;
|
|
||||||
} EFI_CONFIGURATION_TABLE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* EFI System Table.
|
|
||||||
*/
|
|
||||||
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 /* _MACHINE_EFI_H_ */
|
#endif /* _MACHINE_EFI_H_ */
|
||||||
|
@ -90,9 +90,15 @@ struct ia64_pal_result {
|
|||||||
extern struct ia64_pal_result
|
extern struct ia64_pal_result
|
||||||
ia64_call_pal_static(u_int64_t proc, u_int64_t arg1,
|
ia64_call_pal_static(u_int64_t proc, u_int64_t arg1,
|
||||||
u_int64_t arg2, u_int64_t arg3);
|
u_int64_t arg2, u_int64_t arg3);
|
||||||
|
extern struct ia64_pal_result
|
||||||
|
ia64_call_pal_static_physical(u_int64_t proc, u_int64_t arg1,
|
||||||
|
u_int64_t arg2, u_int64_t arg3);
|
||||||
extern struct ia64_pal_result
|
extern struct ia64_pal_result
|
||||||
ia64_call_pal_stacked(u_int64_t proc, u_int64_t arg1,
|
ia64_call_pal_stacked(u_int64_t proc, u_int64_t arg1,
|
||||||
u_int64_t arg2, u_int64_t arg3);
|
u_int64_t arg2, u_int64_t arg3);
|
||||||
|
extern struct ia64_pal_result
|
||||||
|
ia64_call_pal_stacked_physical(u_int64_t proc, u_int64_t arg1,
|
||||||
|
u_int64_t arg2, u_int64_t arg3);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _MACHINE_PAL_H_ */
|
#endif /* _MACHINE_PAL_H_ */
|
||||||
|
@ -95,4 +95,34 @@ struct sal_ap_wakeup_descriptor {
|
|||||||
u_int64_t sale_vector;
|
u_int64_t sale_vector;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SAL Procedure numbers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define SAL_SET_VECTORS 0x01000000
|
||||||
|
#define SAL_GET_STATE_INFO 0x01000001
|
||||||
|
#define SAL_GET_STATE_INFO_SIZE 0x01000002
|
||||||
|
#define SAL_CLEAR_STATE_INFO 0x01000003
|
||||||
|
#define SAL_MC_RENDEZ 0x01000004
|
||||||
|
#define SAL_MC_SET_PARAMS 0x01000005
|
||||||
|
#define SAL_REGISTER_PHYSICAL_ADDR 0x01000006
|
||||||
|
#define SAL_CACHE_FLUSH 0x01000008
|
||||||
|
#define SAL_CACHE_INIT 0x01000009
|
||||||
|
#define SAL_PCI_CONFIG_READ 0x01000010
|
||||||
|
#define SAL_PCI_CONFIG_WRITE 0x01000011
|
||||||
|
#define SAL_FREQ_BASE 0x01000012
|
||||||
|
#define SAL_UPDATE_PAL 0x01000020
|
||||||
|
|
||||||
|
struct ia64_sal_result {
|
||||||
|
int64_t sal_status;
|
||||||
|
u_int64_t sal_result[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct ia64_sal_result sal_entry_t
|
||||||
|
(u_int64_t, u_int64_t, u_int64_t, u_int64_t,
|
||||||
|
u_int64_t, u_int64_t, u_int64_t, u_int64_t);
|
||||||
|
|
||||||
|
extern void ia64_sal_init(struct sal_system_table *saltab);
|
||||||
|
extern sal_entry_t *ia64_sal_entry;
|
||||||
|
|
||||||
#endif /* _MACHINE_SAL_H_ */
|
#endif /* _MACHINE_SAL_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user