177943Sdfr/* $FreeBSD$ */ 277943Sdfr#ifndef _EFI_DEF_H 377943Sdfr#define _EFI_DEF_H 477943Sdfr 577943Sdfr/*++ 677943Sdfr 7163898SmarcelCopyright (c) 1999 - 2002 Intel Corporation. All rights reserved 8163898SmarcelThis software and associated documentation (if any) is furnished 9163898Smarcelunder a license and may only be used or copied in accordance 10163898Smarcelwith the terms of the license. Except as permitted by such 11163898Smarcellicense, no part of this software or documentation may be 12163898Smarcelreproduced, stored in a retrieval system, or transmitted in any 13163898Smarcelform or by any means without the express written consent of 14163898SmarcelIntel Corporation. 1577943Sdfr 1677943SdfrModule Name: 1777943Sdfr 1877943Sdfr efidef.h 1977943Sdfr 2077943SdfrAbstract: 2177943Sdfr 2277943Sdfr EFI definitions 2377943Sdfr 2477943Sdfr 2577943Sdfr 2677943Sdfr 2777943SdfrRevision History 2877943Sdfr 2977943Sdfr--*/ 3077943Sdfr 3177943Sdfrtypedef UINT16 CHAR16; 3277943Sdfrtypedef UINT8 CHAR8; 3377943Sdfrtypedef UINT8 BOOLEAN; 3477943Sdfr 3577943Sdfr#ifndef TRUE 3677943Sdfr #define TRUE ((BOOLEAN) 1) 3777943Sdfr #define FALSE ((BOOLEAN) 0) 3877943Sdfr#endif 3977943Sdfr 4077943Sdfr#ifndef NULL 4177943Sdfr #define NULL ((VOID *) 0) 4277943Sdfr#endif 4377943Sdfr 4477943Sdfrtypedef UINTN EFI_STATUS; 4577943Sdfrtypedef UINT64 EFI_LBA; 4677943Sdfrtypedef UINTN EFI_TPL; 4777943Sdfrtypedef VOID *EFI_HANDLE; 4877943Sdfrtypedef VOID *EFI_EVENT; 4977943Sdfr 5077943Sdfr 51163898Smarcel// 52163898Smarcel// Prototype argument decoration for EFI parameters to indicate 53163898Smarcel// their direction 54163898Smarcel// 55163898Smarcel// IN - argument is passed into the function 56163898Smarcel// OUT - argument (pointer) is returned from the function 57163898Smarcel// OPTIONAL - argument is optional 58163898Smarcel// 5977943Sdfr 6077943Sdfr#ifndef IN 6177943Sdfr #define IN 6277943Sdfr #define OUT 6377943Sdfr #define OPTIONAL 6477943Sdfr#endif 6577943Sdfr 6677943Sdfr 67163898Smarcel// 68163898Smarcel// A GUID 69163898Smarcel// 7077943Sdfr 7177943Sdfrtypedef struct { 7277943Sdfr UINT32 Data1; 7377943Sdfr UINT16 Data2; 7477943Sdfr UINT16 Data3; 7577943Sdfr UINT8 Data4[8]; 7677943Sdfr} EFI_GUID; 7777943Sdfr 7877943Sdfr 79163898Smarcel// 80163898Smarcel// Time 81163898Smarcel// 8277943Sdfr 8377943Sdfrtypedef struct { 84163898Smarcel UINT16 Year; // 1998 - 20XX 85163898Smarcel UINT8 Month; // 1 - 12 86163898Smarcel UINT8 Day; // 1 - 31 87163898Smarcel UINT8 Hour; // 0 - 23 88163898Smarcel UINT8 Minute; // 0 - 59 89163898Smarcel UINT8 Second; // 0 - 59 90163898Smarcel UINT8 Pad1; 91163898Smarcel UINT32 Nanosecond; // 0 - 999,999,999 92163898Smarcel INT16 TimeZone; // -1440 to 1440 or 2047 93163898Smarcel UINT8 Daylight; 94163898Smarcel UINT8 Pad2; 9577943Sdfr} EFI_TIME; 9677943Sdfr 97163898Smarcel// Bit definitions for EFI_TIME.Daylight 9877943Sdfr#define EFI_TIME_ADJUST_DAYLIGHT 0x01 9977943Sdfr#define EFI_TIME_IN_DAYLIGHT 0x02 10077943Sdfr 101163898Smarcel// Value definition for EFI_TIME.TimeZone 10277943Sdfr#define EFI_UNSPECIFIED_TIMEZONE 0x07FF 10377943Sdfr 10477943Sdfr 10577943Sdfr 106163898Smarcel// 107163898Smarcel// Networking 108163898Smarcel// 10977943Sdfr 11077943Sdfrtypedef struct { 11177943Sdfr UINT8 Addr[4]; 11277943Sdfr} EFI_IPv4_ADDRESS; 11377943Sdfr 11477943Sdfrtypedef struct { 11577943Sdfr UINT8 Addr[16]; 11677943Sdfr} EFI_IPv6_ADDRESS; 11777943Sdfr 11877943Sdfrtypedef struct { 11977943Sdfr UINT8 Addr[32]; 12077943Sdfr} EFI_MAC_ADDRESS; 12177943Sdfr 122163898Smarcel// 123163898Smarcel// Memory 124163898Smarcel// 12577943Sdfr 12677943Sdfrtypedef UINT64 EFI_PHYSICAL_ADDRESS; 12777943Sdfrtypedef UINT64 EFI_VIRTUAL_ADDRESS; 12877943Sdfr 12977943Sdfrtypedef enum { 13077943Sdfr AllocateAnyPages, 13177943Sdfr AllocateMaxAddress, 13277943Sdfr AllocateAddress, 13377943Sdfr MaxAllocateType 13477943Sdfr} EFI_ALLOCATE_TYPE; 13577943Sdfr 136163898Smarcel//Preseve the attr on any range supplied. 137163898Smarcel//ConventialMemory must have WB,SR,SW when supplied. 138163898Smarcel//When allocating from ConventialMemory always make it WB,SR,SW 139163898Smarcel//When returning to ConventialMemory always make it WB,SR,SW 140163898Smarcel//When getting the memory map, or on RT for runtime types 14177943Sdfr 142163898Smarcel 14377943Sdfrtypedef enum { 14477943Sdfr EfiReservedMemoryType, 14577943Sdfr EfiLoaderCode, 14677943Sdfr EfiLoaderData, 14777943Sdfr EfiBootServicesCode, 14877943Sdfr EfiBootServicesData, 14977943Sdfr EfiRuntimeServicesCode, 15077943Sdfr EfiRuntimeServicesData, 15177943Sdfr EfiConventionalMemory, 15277943Sdfr EfiUnusableMemory, 15377943Sdfr EfiACPIReclaimMemory, 15477943Sdfr EfiACPIMemoryNVS, 15577943Sdfr EfiMemoryMappedIO, 15677943Sdfr EfiMemoryMappedIOPortSpace, 15777943Sdfr EfiPalCode, 15877943Sdfr EfiMaxMemoryType 15977943Sdfr} EFI_MEMORY_TYPE; 16077943Sdfr 161163898Smarcel// possible caching types for the memory range 16277943Sdfr#define EFI_MEMORY_UC 0x0000000000000001 16377943Sdfr#define EFI_MEMORY_WC 0x0000000000000002 16477943Sdfr#define EFI_MEMORY_WT 0x0000000000000004 16577943Sdfr#define EFI_MEMORY_WB 0x0000000000000008 16677943Sdfr#define EFI_MEMORY_UCE 0x0000000000000010 16777943Sdfr 168163898Smarcel// physical memory protection on range 16977943Sdfr#define EFI_MEMORY_WP 0x0000000000001000 17077943Sdfr#define EFI_MEMORY_RP 0x0000000000002000 17177943Sdfr#define EFI_MEMORY_XP 0x0000000000004000 17277943Sdfr 173163898Smarcel// range requires a runtime mapping 17477943Sdfr#define EFI_MEMORY_RUNTIME 0x8000000000000000 17577943Sdfr 17677943Sdfr#define EFI_MEMORY_DESCRIPTOR_VERSION 1 17777943Sdfrtypedef struct { 178163898Smarcel UINT32 Type; // Field size is 32 bits followed by 32 bit pad 179163898Smarcel EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits 180163898Smarcel EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits 181163898Smarcel UINT64 NumberOfPages; // Field size is 64 bits 182163898Smarcel UINT64 Attribute; // Field size is 64 bits 18377943Sdfr} EFI_MEMORY_DESCRIPTOR; 18477943Sdfr 185163898Smarcel// 186163898Smarcel// International Language 187163898Smarcel// 18877943Sdfr 18977943Sdfrtypedef UINT8 ISO_639_2; 19077943Sdfr#define ISO_639_2_ENTRY_SIZE 3 19177943Sdfr 192163898Smarcel// 193163898Smarcel// 194163898Smarcel// 195163898Smarcel 19677943Sdfr#define EFI_PAGE_SIZE 4096 19777943Sdfr#define EFI_PAGE_MASK 0xFFF 19877943Sdfr#define EFI_PAGE_SHIFT 12 19977943Sdfr 20077943Sdfr#define EFI_SIZE_TO_PAGES(a) \ 201163898Smarcel ( ((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0) ) 20277943Sdfr 20377943Sdfr#endif 204