summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/efi.h
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2001-09-29 11:01:24 +0000
committerdfr <dfr@FreeBSD.org>2001-09-29 11:01:24 +0000
commit76491e7ff0b951a298b3e9fcef06ddd092e95fe0 (patch)
treecf8f4f7e356b130079b6cc50766467b6b57d0452 /sys/ia64/include/efi.h
parent06473c99eb6a80ea1482d2995d05d18fe65856eb (diff)
downloadFreeBSD-src-76491e7ff0b951a298b3e9fcef06ddd092e95fe0.zip
FreeBSD-src-76491e7ff0b951a298b3e9fcef06ddd092e95fe0.tar.gz
Fill out the firmware interfaces somewhat.
Diffstat (limited to 'sys/ia64/include/efi.h')
-rw-r--r--sys/ia64/include/efi.h593
1 files changed, 10 insertions, 583 deletions
diff --git a/sys/ia64/include/efi.h b/sys/ia64/include/efi.h
index bd8988d..2363812 100644
--- a/sys/ia64/include/efi.h
+++ b/sys/ia64/include/efi.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2000 Doug Rabson
+ * Copyright (c) 2001 Doug Rabson
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,589 +29,16 @@
#ifndef _MACHINE_EFI_H_
#define _MACHINE_EFI_H_
-typedef u_int8_t BOOLEAN;
-typedef int64_t INTN;
-typedef u_int64_t UINTN;
-typedef int8_t INT8;
-typedef u_int8_t UINT8;
-typedef int16_t INT16;
-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;
+#include <boot/efi/include/ia64/efibind.h>
+#include <boot/efi/include/efidef.h>
+#include <boot/efi/include/efierr.h>
+#include <boot/efi/include/efidevp.h>
+#include <boot/efi/include/eficon.h>
+#include <boot/efi/include/efiapi.h>
-typedef struct _EFI_GUID {
- UINT32 Data1;
- UINT16 Data2;
- UINT16 Data3;
- UINT8 Data4[8];
-} EFI_GUID;
+extern EFI_SYSTEM_TABLE *ia64_efi_systab;
+extern EFI_RUNTIME_SERVICES *ia64_efi_runtime;
-typedef INTN EFI_STATUS;
-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;
+extern void ia64_efi_init(void);
#endif /* _MACHINE_EFI_H_ */
OpenPOWER on IntegriCloud