diff --git a/.gitignore b/.gitignore index 5fd5a25..c92ae86 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,11 @@ *.opendb *.fd *.db* +*.*db* arm aa64 x86_64 x86_32 image +x64 +.vs \ No newline at end of file diff --git a/efi/inc/aarch64/efibind.h b/efi/inc/aarch64/efibind.h deleted file mode 100644 index bdaa523..0000000 --- a/efi/inc/aarch64/efibind.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copright (C) 2014 - 2015 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) - -// ANSI C 1999/2000 stdint.h 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 signed char int8_t; // unqualified 'char' is unsigned on ARM - -#else -#include -#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; - -#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); // Make it hang on Bios[Dbg]32 - -// -// Pointers must be aligned to these address to function -// - -#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 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)) - -// -// 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 -#define EFIAPI // Substitute expresion to force C calling convention -#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 - -#define MEMORY_FENCE __sync_synchronize - -// -// When build similiar to FW, then link everything together as -// one big module. For the MSVC toolchain, we simply tell the -// linker what our driver init function is using /ENTRY. -// -#if defined(_MSC_EXTENSIONS) -#define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - __pragma(comment(linker, "/ENTRY:" # InitFunction)) -#else -#define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - UINTN \ - InitializeDriver ( \ - VOID *ImageHandle, \ - VOID *SystemTable \ - ) \ - { \ - return InitFunction(ImageHandle, \ - SystemTable); \ - } \ - \ - EFI_STATUS efi_main( \ - EFI_HANDLE image, \ - EFI_SYSTEM_TABLE *systab \ - ) __attribute__((weak, \ - alias ("InitializeDriver"))); -#endif - -#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. - -#define INTERFACE_DECL(x) struct x - -#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__) -#define EFI_FUNCTION diff --git a/efi/inc/aarch64/efilibplat.h b/efi/inc/aarch64/efilibplat.h deleted file mode 100644 index 70a0786..0000000 --- a/efi/inc/aarch64/efilibplat.h +++ /dev/null @@ -1,25 +0,0 @@ -/*++ - -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 - ); - diff --git a/efi/inc/aarch64/efisetjmp_arch.h b/efi/inc/aarch64/efisetjmp_arch.h deleted file mode 100644 index abd7a0e..0000000 --- a/efi/inc/aarch64/efisetjmp_arch.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef GNU_EFI_AARCH64_SETJMP_H -#define GNU_EFI_AARCH64_SETJMP_H - -#define JMPBUF_ALIGN 8 - -typedef struct { - /* GP regs */ - UINT64 X19; - UINT64 X20; - UINT64 X21; - UINT64 X22; - UINT64 X23; - UINT64 X24; - UINT64 X25; - UINT64 X26; - UINT64 X27; - UINT64 X28; - UINT64 FP; - UINT64 LR; - UINT64 IP0; - - /* FP regs */ - UINT64 D8; - UINT64 D9; - UINT64 D10; - UINT64 D11; - UINT64 D12; - UINT64 D13; - UINT64 D14; - UINT64 D15; -} ALIGN(JMPBUF_ALIGN) jmp_buf; - -#endif /* GNU_EFI_AARCH64_SETJMP_H */ diff --git a/efi/inc/arm/efibind.h b/efi/inc/arm/efibind.h deleted file mode 100644 index 40a5a9c..0000000 --- a/efi/inc/arm/efibind.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copright (C) 2014 - 2015 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#if !defined(_MSC_VER) && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L )) - -// ANSI C 1999/2000 stdint.h 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 signed char int8_t; // unqualified 'char' is unsigned on ARM - -#else -#include -#endif - -/* - * This prevents GCC from emitting GOT based relocations, and use R_ARM_REL32 - * relative relocations instead, which are more suitable for static binaries. - */ -#ifdef __GNUC__ -#pragma GCC visibility push (hidden) -#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 int32_t INTN; -typedef uint32_t UINTN; - -#define EFIERR(a) (0x80000000 | a) -#define EFI_ERROR_MASK 0x80000000 -#define EFIERR_OEM(a) (0xc0000000 | a) - -#define BAD_POINTER 0xFBFBFBFB -#define MAX_ADDRESS 0xFFFFFFFF - -#define BREAKPOINT() while (TRUE); - -// -// 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)) - -// -// 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 -#define EFIAPI // Substitute expresion to force C calling convention -#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 - -#define MEMORY_FENCE __sync_synchronize - -// -// When build similiar to FW, then link everything together as -// one big module. For the MSVC toolchain, we simply tell the -// linker what our driver init function is using /ENTRY. -// -#if defined(_MSC_EXTENSIONS) -#define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - __pragma(comment(linker, "/ENTRY:" # InitFunction)) -#else -#define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - UINTN \ - InitializeDriver ( \ - VOID *ImageHandle, \ - VOID *SystemTable \ - ) \ - { \ - return InitFunction(ImageHandle, \ - SystemTable); \ - } \ - \ - EFI_STATUS efi_main( \ - EFI_HANDLE image, \ - EFI_SYSTEM_TABLE *systab \ - ) __attribute__((weak, \ - alias ("InitializeDriver"))); -#endif - -#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. - -#define INTERFACE_DECL(x) struct x - -#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__) -#define EFI_FUNCTION diff --git a/efi/inc/arm/efilibplat.h b/efi/inc/arm/efilibplat.h deleted file mode 100644 index 70a0786..0000000 --- a/efi/inc/arm/efilibplat.h +++ /dev/null @@ -1,25 +0,0 @@ -/*++ - -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 - ); - diff --git a/efi/inc/arm/efisetjmp_arch.h b/efi/inc/arm/efisetjmp_arch.h deleted file mode 100644 index 3a09ea5..0000000 --- a/efi/inc/arm/efisetjmp_arch.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef GNU_EFI_ARM_SETJMP_H -#define GNU_EFI_ARM_SETJMP_H - -#define JMPBUF_ALIGN 4 - -typedef struct { - UINT32 R3; // A copy of R13 - UINT32 R4; - UINT32 R5; - UINT32 R6; - UINT32 R7; - UINT32 R8; - UINT32 R9; - UINT32 R10; - UINT32 R11; - UINT32 R12; - UINT32 R13; - UINT32 R14; -} ALIGN(JMPBUF_ALIGN) jmp_buf; - -#endif /* GNU_EFI_ARM_SETJMP_H */ diff --git a/efi/inc/efi.h b/efi/inc/efi.h deleted file mode 100644 index 9cbc22d..0000000 --- a/efi/inc/efi.h +++ /dev/null @@ -1,62 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - efi.h - -Abstract: - - Public EFI header files - - - -Revision History - ---*/ - - -// Add a predefined macro to detect usage of the library -#ifndef _GNU_EFI -#define _GNU_EFI -#endif - -// -// 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 "eficompiler.h" -#include "efidef.h" -#include "efidevp.h" -#include "efipciio.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" -#include "efiip.h" -#include "efiudp.h" -#include "efitcp.h" -#include "efipoint.h" -#include "efisetjmp.h" - -#endif diff --git a/efi/inc/efi_nii.h b/efi/inc/efi_nii.h deleted file mode 100644 index fdf5cb4..0000000 --- a/efi/inc/efi_nii.h +++ /dev/null @@ -1,78 +0,0 @@ -#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_GUID \ - { 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29} } - -#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION 0x00010000 -#define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION - -typedef enum { - EfiNetworkInterfaceUndi = 1 -} EFI_NETWORK_INTERFACE_TYPE; - -typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL { - - 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_PROTOCOL, EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE; - -// Note: Because it conflicted with the EDK2 struct name, the -// 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL' GUID definition, -// from older versions of gnu-efi, is now obsoleted. -// Use 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID' instead. - -#endif // _EFI_NII_H diff --git a/efi/inc/efi_pxe.h b/efi/inc/efi_pxe.h deleted file mode 100644 index d24251f..0000000 --- a/efi/inc/efi_pxe.h +++ /dev/null @@ -1,1743 +0,0 @@ -#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 */ - diff --git a/efi/inc/efiapi.h b/efi/inc/efiapi.h deleted file mode 100644 index e7d2abd..0000000 --- a/efi/inc/efiapi.h +++ /dev/null @@ -1,967 +0,0 @@ -#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 4 - -#define EFI_EVENT_TIMER EVT_TIMER -#define EFI_EVENT_RUNTIME EVT_RUNTIME -#define EFI_EVENT_RUNTIME_CONTEXT EVT_RUNTIME_CONTEXT -#define EFI_EVENT_NOTIFY_WAIT EVT_NOTIFY_WAIT -#define EFI_EVENT_NOTIFY_SIGNAL EVT_NOTIFY_SIGNAL -#define EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES EVT_SIGNAL_EXIT_BOOT_SERVICES -#define EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE -#define EFI_EVENT_EFI_SIGNAL_MASK EVT_EFI_SIGNAL_MASK -#define EFI_EVENT_EFI_SIGNAL_MAX EVT_EFI_SIGNAL_MAX - - -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 -#define EFI_TPL_APPLICATION TPL_APPLICATION -#define EFI_TPL_CALLBACK TPL_CALLBACK -#define EFI_TPL_NOTIFY TPL_NOTIFY -#define EFI_TPL_HIGH_LEVEL TPL_HIGH_LEVEL -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 -#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008 -#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010 -#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020 -#define EFI_VARIABLE_APPEND_WRITE 0x00000040 - -// 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 - -#if !defined(EFI_IMAGE_MACHINE_EBC) -#define EFI_IMAGE_MACHINE_EBC 0x0EBC -#endif - -#if !defined(EFI_IMAGE_MACHINE_X64) -#define EFI_IMAGE_MACHINE_X64 0x8664 -#endif - -#if !defined(EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) -#define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2 -#endif - -#if !defined(EFI_IMAGE_MACHINE_AARCH64) -#define EFI_IMAGE_MACHINE_AARCH64 0xAA64 -#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 - ); - - -// 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 -EFI_STATUS -(EFIAPI *EFI_CONNECT_CONTROLLER) ( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE *DriverImageHandle OPTIONAL, - IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL, - IN BOOLEAN Recursive - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_DISCONNECT_CONTROLLER) ( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE DriverImageHandle OPTIONAL, - IN EFI_HANDLE ChildHandle OPTIONAL - ); - -#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 -#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 -#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 -#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 -#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 -#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020 - -typedef -EFI_STATUS -(EFIAPI *EFI_OPEN_PROTOCOL) ( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - OUT VOID **Interface OPTIONAL, - IN EFI_HANDLE AgentHandle, - IN EFI_HANDLE ControllerHandle, - IN UINT32 Attributes - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_CLOSE_PROTOCOL) ( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - IN EFI_HANDLE AgentHandle, - IN EFI_HANDLE ControllerHandle - ); - -typedef struct { - EFI_HANDLE AgentHandle; - EFI_HANDLE ControllerHandle; - UINT32 Attributes; - UINT32 OpenCount; -} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY; - -typedef -EFI_STATUS -(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) ( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, - OUT UINTN *EntryCount - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) ( - IN EFI_HANDLE Handle, - OUT EFI_GUID ***ProtocolBuffer, - OUT UINTN *ProtocolBufferCount - ); - -typedef enum { - AllHandles, - ByRegisterNotify, - ByProtocol -} EFI_LOCATE_SEARCH_TYPE; - -typedef -EFI_STATUS -(EFIAPI *EFI_LOCATE_HANDLE_BUFFER) ( - IN EFI_LOCATE_SEARCH_TYPE SearchType, - IN EFI_GUID *Protocol OPTIONAL, - IN VOID *SearchKey OPTIONAL, - IN OUT UINTN *NoHandles, - OUT EFI_HANDLE **Buffer - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_LOCATE_PROTOCOL) ( - IN EFI_GUID *Protocol, - IN VOID *Registration OPTIONAL, - OUT VOID **Interface - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( - IN OUT EFI_HANDLE *Handle, - ... - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( - IN OUT EFI_HANDLE Handle, - ... - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_CALCULATE_CRC32) ( - IN VOID *Data, - IN UINTN DataSize, - OUT UINT32 *Crc32 - ); - -typedef -VOID -(EFIAPI *EFI_COPY_MEM) ( - IN VOID *Destination, - IN VOID *Source, - IN UINTN Length - ); - -typedef -VOID -(EFIAPI *EFI_SET_MEM) ( - IN VOID *Buffer, - IN UINTN Size, - IN UINT8 Value - ); - - -typedef -EFI_STATUS -(EFIAPI *EFI_CREATE_EVENT_EX) ( - IN UINT32 Type, - IN EFI_TPL NotifyTpl, - IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL, - IN const VOID *NotifyContext OPTIONAL, - IN const EFI_GUID EventGroup OPTIONAL, - OUT EFI_EVENT *Event - ); - -typedef enum { - EfiResetCold, - EfiResetWarm, - EfiResetShutdown -} 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 - ); - -typedef struct { - UINT64 Length; - union { - EFI_PHYSICAL_ADDRESS DataBlock; - EFI_PHYSICAL_ADDRESS ContinuationPointer; - } Union; -} EFI_CAPSULE_BLOCK_DESCRIPTOR; - -typedef struct { - EFI_GUID CapsuleGuid; - UINT32 HeaderSize; - UINT32 Flags; - UINT32 CapsuleImageSize; -} EFI_CAPSULE_HEADER; - -#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000 -#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000 -#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000 - -typedef -EFI_STATUS -(EFIAPI *EFI_UPDATE_CAPSULE) ( - IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, - IN UINTN CapsuleCount, - IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES) ( - IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, - IN UINTN CapsuleCount, - OUT UINT64 *MaximumCapsuleSize, - OUT EFI_RESET_TYPE *ResetType - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_QUERY_VARIABLE_INFO) ( - IN UINT32 Attributes, - OUT UINT64 *MaximumVariableStorageSize, - OUT UINT64 *RemainingVariableStorageSize, - OUT UINT64 *MaximumVariableSize - ); - -// -// 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 -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_HEADER { - 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_UPDATE_CAPSULE UpdateCapsule; - EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities; - EFI_QUERY_VARIABLE_INFO QueryVariableInfo; -} 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; - - // - // DriverSupport Services - // - - EFI_CONNECT_CONTROLLER ConnectController; - EFI_DISCONNECT_CONTROLLER DisconnectController; - - // - // Open and Close Protocol Services - // - EFI_OPEN_PROTOCOL OpenProtocol; - EFI_CLOSE_PROTOCOL CloseProtocol; - EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; - - // - // Library Services - // - EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; - EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; - EFI_LOCATE_PROTOCOL LocateProtocol; - EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; - EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; - - // - // 32-bit CRC Services - // - EFI_CALCULATE_CRC32 CalculateCrc32; - - // - // Misc Services - // - EFI_COPY_MEM CopyMem; - EFI_SET_MEM SetMem; - EFI_CREATE_EVENT_EX CreateEventEx; -} 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 SMBIOS3_TABLE_GUID \ - { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} } - -#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 - diff --git a/efi/inc/eficompiler.h b/efi/inc/eficompiler.h deleted file mode 100644 index 26636c7..0000000 --- a/efi/inc/eficompiler.h +++ /dev/null @@ -1,30 +0,0 @@ -/*++ - -Copyright (c) 2016 Pete Batard - -Module Name: - - eficompiler.h - -Abstract: - - Compiler specific adjustments - ---*/ - -#ifdef _MSC_EXTENSIONS -#define EFI_UNUSED -#else -#define EFI_UNUSED __attribute__((__unused__)) -#endif - -#ifdef _MSC_EXTENSIONS -#define ALIGN(x) __declspec(align(x)) -#else -#define ALIGN(x) __attribute__((__aligned__(x))) -#endif - -/* Also add a catch-all on __attribute__() for MS compilers */ -#ifdef _MSC_EXTENSIONS -#define __attribute__(x) -#endif diff --git a/efi/inc/eficon.h b/efi/inc/eficon.h deleted file mode 100644 index 5d17e04..0000000 --- a/efi/inc/eficon.h +++ /dev/null @@ -1,306 +0,0 @@ -#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 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ - { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID - -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, EFI_SIMPLE_TEXT_OUT_PROTOCOL; - -// -// 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 EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ - { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID - -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_F11 0x0015 -#define SCAN_F12 0x0016 -#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, EFI_SIMPLE_TEXT_IN_PROTOCOL; - -#endif - diff --git a/efi/inc/efidebug.h b/efi/inc/efidebug.h deleted file mode 100644 index 8e54dcd..0000000 --- a/efi/inc/efidebug.h +++ /dev/null @@ -1,620 +0,0 @@ -#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 ( - CONST CHAR8 *file, - INTN lineno, - CONST CHAR8 *string - ); - -INTN -DbgPrint ( - INTN mask, - CONST CHAR8 *format, - ... - ); - -// -// Instruction Set Architectures definitions for debuggers -// - -typedef INTN EFI_EXCEPTION_TYPE; - -// IA32 -#define EXCEPT_IA32_DIVIDE_ERROR 0 -#define EXCEPT_IA32_DEBUG 1 -#define EXCEPT_IA32_NMI 2 -#define EXCEPT_IA32_BREAKPOINT 3 -#define EXCEPT_IA32_OVERFLOW 4 -#define EXCEPT_IA32_BOUND 5 -#define EXCEPT_IA32_INVALID_OPCODE 6 -#define EXCEPT_IA32_DOUBLE_FAULT 8 -#define EXCEPT_IA32_INVALID_TSS 10 -#define EXCEPT_IA32_SEG_NOT_PRESENT 11 -#define EXCEPT_IA32_STACK_FAULT 12 -#define EXCEPT_IA32_GP_FAULT 13 -#define EXCEPT_IA32_PAGE_FAULT 14 -#define EXCEPT_IA32_FP_ERROR 16 -#define EXCEPT_IA32_ALIGNMENT_CHECK 17 -#define EXCEPT_IA32_MACHINE_CHECK 18 -#define EXCEPT_IA32_SIMD 19 - -typedef struct { - UINT16 Fcw; - UINT16 Fsw; - UINT16 Ftw; - UINT16 Opcode; - UINT32 Eip; - UINT16 Cs; - UINT16 Reserved1; - UINT32 DataOffset; - UINT16 Ds; - UINT8 Reserved2[10]; - UINT8 St0Mm0[10], Reserved3[6]; - UINT8 St1Mm1[10], Reserved4[6]; - UINT8 St2Mm2[10], Reserved5[6]; - UINT8 St3Mm3[10], Reserved6[6]; - UINT8 St4Mm4[10], Reserved7[6]; - UINT8 St5Mm5[10], Reserved8[6]; - UINT8 St6Mm6[10], Reserved9[6]; - UINT8 St7Mm7[10], Reserved10[6]; - UINT8 Xmm0[16]; - UINT8 Xmm1[16]; - UINT8 Xmm2[16]; - UINT8 Xmm3[16]; - UINT8 Xmm4[16]; - UINT8 Xmm5[16]; - UINT8 Xmm6[16]; - UINT8 Xmm7[16]; - UINT8 Reserved11[14 * 16]; -} EFI_FX_SAVE_STATE_IA32; - -typedef struct { - UINT32 ExceptionData; - EFI_FX_SAVE_STATE_IA32 FxSaveState; - UINT32 Dr0; - UINT32 Dr1; - UINT32 Dr2; - UINT32 Dr3; - UINT32 Dr6; - UINT32 Dr7; - UINT32 Cr0; - UINT32 Cr1; - UINT32 Cr2; - UINT32 Cr3; - UINT32 Cr4; - UINT32 Eflags; - UINT32 Ldtr; - UINT32 Tr; - UINT32 Gdtr[2]; - UINT32 Idtr[2]; - UINT32 Eip; - UINT32 Gs; - UINT32 Fs; - UINT32 Es; - UINT32 Ds; - UINT32 Cs; - UINT32 Ss; - UINT32 Edi; - UINT32 Esi; - UINT32 Ebp; - UINT32 Esp; - UINT32 Ebx; - UINT32 Edx; - UINT32 Ecx; - UINT32 Eax; -} EFI_SYSTEM_CONTEXT_IA32; - -// X64 -#define EXCEPT_X64_DIVIDE_ERROR 0 -#define EXCEPT_X64_DEBUG 1 -#define EXCEPT_X64_NMI 2 -#define EXCEPT_X64_BREAKPOINT 3 -#define EXCEPT_X64_OVERFLOW 4 -#define EXCEPT_X64_BOUND 5 -#define EXCEPT_X64_INVALID_OPCODE 6 -#define EXCEPT_X64_DOUBLE_FAULT 8 -#define EXCEPT_X64_INVALID_TSS 10 -#define EXCEPT_X64_SEG_NOT_PRESENT 11 -#define EXCEPT_X64_STACK_FAULT 12 -#define EXCEPT_X64_GP_FAULT 13 -#define EXCEPT_X64_PAGE_FAULT 14 -#define EXCEPT_X64_FP_ERROR 16 -#define EXCEPT_X64_ALIGNMENT_CHECK 17 -#define EXCEPT_X64_MACHINE_CHECK 18 -#define EXCEPT_X64_SIMD 19 - -typedef struct { - UINT16 Fcw; - UINT16 Fsw; - UINT16 Ftw; - UINT16 Opcode; - UINT64 Rip; - UINT64 DataOffset; - UINT8 Reserved1[8]; - UINT8 St0Mm0[10], Reserved2[6]; - UINT8 St1Mm1[10], Reserved3[6]; - UINT8 St2Mm2[10], Reserved4[6]; - UINT8 St3Mm3[10], Reserved5[6]; - UINT8 St4Mm4[10], Reserved6[6]; - UINT8 St5Mm5[10], Reserved7[6]; - UINT8 St6Mm6[10], Reserved8[6]; - UINT8 St7Mm7[10], Reserved9[6]; - UINT8 Xmm0[16]; - UINT8 Xmm1[16]; - UINT8 Xmm2[16]; - UINT8 Xmm3[16]; - UINT8 Xmm4[16]; - UINT8 Xmm5[16]; - UINT8 Xmm6[16]; - UINT8 Xmm7[16]; - UINT8 Reserved11[14 * 16]; -} EFI_FX_SAVE_STATE_X64; - -typedef struct { - UINT64 ExceptionData; - EFI_FX_SAVE_STATE_X64 FxSaveState; - UINT64 Dr0; - UINT64 Dr1; - UINT64 Dr2; - UINT64 Dr3; - UINT64 Dr6; - UINT64 Dr7; - UINT64 Cr0; - UINT64 Cr1; - UINT64 Cr2; - UINT64 Cr3; - UINT64 Cr4; - UINT64 Cr8; - UINT64 Rflags; - UINT64 Ldtr; - UINT64 Tr; - UINT64 Gdtr[2]; - UINT64 Idtr[2]; - UINT64 Rip; - UINT64 Gs; - UINT64 Fs; - UINT64 Es; - UINT64 Ds; - UINT64 Cs; - UINT64 Ss; - UINT64 Rdi; - UINT64 Rsi; - UINT64 Rbp; - UINT64 Rsp; - UINT64 Rbx; - UINT64 Rdx; - UINT64 Rcx; - UINT64 Rax; - UINT64 R8; - UINT64 R9; - UINT64 R10; - UINT64 R11; - UINT64 R12; - UINT64 R13; - UINT64 R14; - UINT64 R15; -} EFI_SYSTEM_CONTEXT_X64; - -/// IA64 -#define EXCEPT_IPF_VHTP_TRANSLATION 0 -#define EXCEPT_IPF_INSTRUCTION_TLB 1 -#define EXCEPT_IPF_DATA_TLB 2 -#define EXCEPT_IPF_ALT_INSTRUCTION_TLB 3 -#define EXCEPT_IPF_ALT_DATA_TLB 4 -#define EXCEPT_IPF_DATA_NESTED_TLB 5 -#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED 6 -#define EXCEPT_IPF_DATA_KEY_MISSED 7 -#define EXCEPT_IPF_DIRTY_BIT 8 -#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT 9 -#define EXCEPT_IPF_DATA_ACCESS_BIT 10 -#define EXCEPT_IPF_BREAKPOINT 11 -#define EXCEPT_IPF_EXTERNAL_INTERRUPT 12 -#define EXCEPT_IPF_PAGE_NOT_PRESENT 20 -#define EXCEPT_IPF_KEY_PERMISSION 21 -#define EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS 22 -#define EXCEPT_IPF_DATA_ACCESS_RIGHTS 23 -#define EXCEPT_IPF_GENERAL_EXCEPTION 24 -#define EXCEPT_IPF_DISABLED_FP_REGISTER 25 -#define EXCEPT_IPF_NAT_CONSUMPTION 26 -#define EXCEPT_IPF_SPECULATION 27 -#define EXCEPT_IPF_DEBUG 29 -#define EXCEPT_IPF_UNALIGNED_REFERENCE 30 -#define EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE 31 -#define EXCEPT_IPF_FP_FAULT 32 -#define EXCEPT_IPF_FP_TRAP 33 -#define EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP 34 -#define EXCEPT_IPF_TAKEN_BRANCH 35 -#define EXCEPT_IPF_SINGLE_STEP 36 -#define EXCEPT_IPF_IA32_EXCEPTION 45 -#define EXCEPT_IPF_IA32_INTERCEPT 46 -#define EXCEPT_IPF_IA32_INTERRUPT 47 - -typedef struct { - UINT64 Reserved; - 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; - UINT64 ArRsc; - UINT64 ArBsp; - UINT64 ArBspstore; - UINT64 ArRnat; - UINT64 ArFcr; - UINT64 ArEflag; - UINT64 ArCsd; - UINT64 ArSsd; - UINT64 ArCflg; - UINT64 ArFsr; - UINT64 ArFir; - UINT64 ArFdr; - UINT64 ArCcv; - UINT64 ArUnat; - UINT64 ArFpsr; - UINT64 ArPfs; - UINT64 ArLc; - UINT64 ArEc; - UINT64 CrDcr; - UINT64 CrItm; - UINT64 CrIva; - UINT64 CrPta; - UINT64 CrIpsr; - UINT64 CrIsr; - UINT64 CrIip; - UINT64 CrIfa; - UINT64 CrItir; - UINT64 CrIipa; - UINT64 CrIfs; - UINT64 CrIim; - UINT64 CrIha; - 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; - UINT64 IntNat; -} EFI_SYSTEM_CONTEXT_IPF; - -// EBC -#define EXCEPT_EBC_UNDEFINED 0 -#define EXCEPT_EBC_DIVIDE_ERROR 1 -#define EXCEPT_EBC_DEBUG 2 -#define EXCEPT_EBC_BREAKPOINT 3 -#define EXCEPT_EBC_OVERFLOW 4 -#define EXCEPT_EBC_INVALID_OPCODE 5 -#define EXCEPT_EBC_STACK_FAULT 6 -#define EXCEPT_EBC_ALIGNMENT_CHECK 7 -#define EXCEPT_EBC_INSTRUCTION_ENCODING 8 -#define EXCEPT_EBC_BAD_BREAK 9 -#define EXCEPT_EBC_STEP 10 -#define MAX_EBC_EXCEPTION EXCEPT_EBC_STEP - -typedef struct { - UINT64 R0; - UINT64 R1; - UINT64 R2; - UINT64 R3; - UINT64 R4; - UINT64 R5; - UINT64 R6; - UINT64 R7; - UINT64 Flags; - UINT64 ControlFlags; - UINT64 Ip; -} EFI_SYSTEM_CONTEXT_EBC; - -// ARM -#define EXCEPT_ARM_RESET 0 -#define EXCEPT_ARM_UNDEFINED_INSTRUCTION 1 -#define EXCEPT_ARM_SOFTWARE_INTERRUPT 2 -#define EXCEPT_ARM_PREFETCH_ABORT 3 -#define EXCEPT_ARM_DATA_ABORT 4 -#define EXCEPT_ARM_RESERVED 5 -#define EXCEPT_ARM_IRQ 6 -#define EXCEPT_ARM_FIQ 7 -#define MAX_ARM_EXCEPTION EXCEPT_ARM_FIQ - -typedef struct { - UINT32 R0; - UINT32 R1; - UINT32 R2; - UINT32 R3; - UINT32 R4; - UINT32 R5; - UINT32 R6; - UINT32 R7; - UINT32 R8; - UINT32 R9; - UINT32 R10; - UINT32 R11; - UINT32 R12; - UINT32 SP; - UINT32 LR; - UINT32 PC; - UINT32 CPSR; - UINT32 DFSR; - UINT32 DFAR; - UINT32 IFSR; - UINT32 IFAR; -} EFI_SYSTEM_CONTEXT_ARM; - - -typedef union { - EFI_SYSTEM_CONTEXT_EBC *SystemContextEbc; - EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32; - EFI_SYSTEM_CONTEXT_X64 *SystemContextX64; - EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf; - EFI_SYSTEM_CONTEXT_ARM *SystemContextArm; -} EFI_SYSTEM_CONTEXT; - -typedef -VOID -(EFIAPI *EFI_EXCEPTION_CALLBACK)( - IN EFI_EXCEPTION_TYPE ExceptionType, - IN OUT EFI_SYSTEM_CONTEXT SystemContext); - -typedef -VOID -(EFIAPI *EFI_PERIODIC_CALLBACK)( - IN OUT EFI_SYSTEM_CONTEXT SystemContext); - -typedef enum { - IsaIa32 = EFI_IMAGE_MACHINE_IA32, - IsaX64 = EFI_IMAGE_MACHINE_X64, - IsaIpf = EFI_IMAGE_MACHINE_IA64, - IsaEbc = EFI_IMAGE_MACHINE_EBC, - IsaArm = EFI_IMAGE_MACHINE_ARMTHUMB_MIXED, -// IsaArm64 = EFI_IMAGE_MACHINE_AARCH64 -} EFI_INSTRUCTION_SET_ARCHITECTURE; - -// -// DEBUG_IMAGE_INFO -// - -#define EFI_DEBUG_IMAGE_INFO_TABLE_GUID \ - { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} } - -#define EFI_DEBUG_IMAGE_INFO_UPDATE_IN_PROGRESS 0x01 -#define EFI_DEBUG_IMAGE_INFO_TABLE_MODIFIED 0x02 -#define EFI_DEBUG_IMAGE_INFO_INITIAL_SIZE (EFI_PAGE_SIZE / sizeof (UINTN)) -#define EFI_DEBUG_IMAGE_INFO_TYPE_NORMAL 0x01 - -typedef struct { -UINT64 Signature; -EFI_PHYSICAL_ADDRESS EfiSystemTableBase; -UINT32 Crc32; -} EFI_SYSTEM_TABLE_POINTER; - -typedef struct { -UINT32 ImageInfoType; -EFI_LOADED_IMAGE_PROTOCOL *LoadedImageProtocolInstance; -EFI_HANDLE *ImageHandle; -} EFI_DEBUG_IMAGE_INFO_NORMAL; - -typedef union { -UINT32 *ImageInfoType; -EFI_DEBUG_IMAGE_INFO_NORMAL *NormalImage; -} EFI_DEBUG_IMAGE_INFO; - -typedef struct { -volatile UINT32 UpdateStatus; -UINT32 TableSize; -EFI_DEBUG_IMAGE_INFO *EfiDebugImageInfoTable; -} EFI_DEBUG_IMAGE_INFO_TABLE_HEADER; - -// -// EFI_DEBUGGER_PROTOCOL -// - -#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \ - { 0x2755590c, 0x6f3c, 0x42fa, {0x9e, 0xa4, 0xa3, 0xba, 0x54, 0x3c, 0xda, 0x25} } - -INTERFACE_DECL(_EFI_DEBUG_SUPPORT_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_GET_MAXIMUM_PROCESSOR_INDEX)( - IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, - OUT UINTN *MaxProcessorIndex); - -typedef -EFI_STATUS -(EFIAPI *EFI_REGISTER_PERIODIC_CALLBACK)( - IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, - IN UINTN ProcessorIndex, - IN EFI_PERIODIC_CALLBACK PeriodicCallback); - -typedef -EFI_STATUS -(EFIAPI *EFI_REGISTER_EXCEPTION_CALLBACK)( - IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, - IN UINTN ProcessorIndex, - IN EFI_EXCEPTION_CALLBACK ExceptionCallback, - IN EFI_EXCEPTION_TYPE ExceptionType); - -typedef -EFI_STATUS -(EFIAPI *EFI_INVALIDATE_INSTRUCTION_CACHE)( - IN struct _EFI_DEBUG_SUPPORT_PROTOCOL *This, - IN UINTN ProcessorIndex, - IN VOID *Start, - IN UINT64 Length); - -typedef struct _EFI_DEBUG_SUPPORT_PROTOCOL { - EFI_INSTRUCTION_SET_ARCHITECTURE Isa; - EFI_GET_MAXIMUM_PROCESSOR_INDEX GetMaximumProcessorIndex; - EFI_REGISTER_PERIODIC_CALLBACK RegisterPeriodicCallback; - EFI_REGISTER_EXCEPTION_CALLBACK RegisterExceptionCallback; - EFI_INVALIDATE_INSTRUCTION_CACHE InvalidateInstructionCache; -} EFI_DEBUG_SUPPORT_PROTOCOL; - -#endif diff --git a/efi/inc/efidef.h b/efi/inc/efidef.h deleted file mode 100644 index 8b70051..0000000 --- a/efi/inc/efidef.h +++ /dev/null @@ -1,220 +0,0 @@ -#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 CONST - #define CONST const -#endif -#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; - -typedef struct { - UINT32 ReceivedQueueTimeoutValue; - UINT32 TransmitQueueTimeoutValue; - UINT16 ProtocolTypeFilter; - BOOLEAN EnableUnicastReceive; - BOOLEAN EnableMulticastReceive; - BOOLEAN EnableBroadcastReceive; - BOOLEAN EnablePromiscuousReceive; - BOOLEAN FlushQueuesOnReset; - BOOLEAN EnableReceiveTimestamps; - BOOLEAN DisableBackgroundPolling; -} EFI_MANAGED_NETWORK_CONFIG_DATA; - -// -// 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 - UINT32 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) ) - -#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001 -#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002 -#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED \ - 0x0000000000000004 -#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED \ - 0x0000000000000008 -#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED \ - 0x0000000000000010 - -#endif diff --git a/efi/inc/efidevp.h b/efi/inc/efidevp.h deleted file mode 100644 index ffaf6e2..0000000 --- a/efi/inc/efidevp.h +++ /dev/null @@ -1,582 +0,0 @@ -#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_PROTOCOL { - UINT8 Type; - UINT8 SubType; - UINT8 Length[2]; -} EFI_DEVICE_PATH_PROTOCOL; - -typedef struct _EFI_DEVICE_PATH_PROTOCOL _EFI_DEVICE_PATH; -typedef EFI_DEVICE_PATH_PROTOCOL 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_PROTOCOL)) - - -#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_PROTOCOL *) ( ((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_PROTOCOL); \ - (a)->Length[1] = 0; \ - } - - -/* - * Hardware Device Path (UEFI 2.4 specification, version 2.4 § 9.3.2.) - */ - -#define HARDWARE_DEVICE_PATH 0x01 - -#define HW_PCI_DP 0x01 -typedef struct _PCI_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT8 Function; - UINT8 Device; -} PCI_DEVICE_PATH; - -#define HW_PCCARD_DP 0x02 -typedef struct _PCCARD_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT8 FunctionNumber ; -} PCCARD_DEVICE_PATH; - -#define HW_MEMMAP_DP 0x03 -typedef struct _MEMMAP_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL 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_PROTOCOL 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_PROTOCOL Header; - UINT32 Controller; -} CONTROLLER_DEVICE_PATH; - - -/* - * ACPI Device Path (UEFI 2.4 specification, version 2.4 § 9.3.3 and 9.3.4.) - */ -#define ACPI_DEVICE_PATH 0x02 - -#define ACPI_DP 0x01 -typedef struct _ACPI_HID_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 HID; - UINT32 UID; -} ACPI_HID_DEVICE_PATH; - -#define EXPANDED_ACPI_DP 0x02 -typedef struct _EXPANDED_ACPI_HID_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 HID; - UINT32 UID; - UINT32 CID; - UINT8 HidStr[1]; -} EXPANDED_ACPI_HID_DEVICE_PATH; - -#define ACPI_ADR_DP 3 -typedef struct _ACPI_ADR_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT32 ADR ; -} ACPI_ADR_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) - - -/* - * Messaging Device Path (UEFI 2.4 specification, version 2.4 § 9.3.5.) - */ -#define MESSAGING_DEVICE_PATH 0x03 - -#define MSG_ATAPI_DP 0x01 -typedef struct _ATAPI_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT8 PrimarySecondary; - UINT8 SlaveMaster; - UINT16 Lun; -} ATAPI_DEVICE_PATH; - -#define MSG_SCSI_DP 0x02 -typedef struct _SCSI_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT16 Pun; - UINT16 Lun; -} SCSI_DEVICE_PATH; - -#define MSG_FIBRECHANNEL_DP 0x03 -typedef struct _FIBRECHANNEL_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 Reserved; - UINT64 WWN; - UINT64 Lun; -} FIBRECHANNEL_DEVICE_PATH; - -/** - * Fibre Channel Ex SubType. - * UEFI 2.0 specification version 2.4 § 9.3.5.6. - */ -#define MSG_FIBRECHANNELEX_DP 21 -typedef struct _FIBRECHANNELEX_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT32 Reserved ; - UINT8 WWN[ 8 ] ; /* World Wide Name */ - UINT8 Lun[ 8 ] ; /* Logical unit, T-10 SCSI Architecture Model 4 specification */ -} FIBRECHANNELEX_DEVICE_PATH ; - -#define MSG_1394_DP 0x04 -typedef struct _F1394_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 Reserved; - UINT64 Guid; -} F1394_DEVICE_PATH; - -#define MSG_USB_DP 0x05 -typedef struct _USB_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT8 Port; - UINT8 Endpoint; -} USB_DEVICE_PATH; - -/** - * SATA Device Path SubType. - * UEFI 2.0 specification version 2.4 § 9.3.5.6. - */ -#define MSG_SATA_DP 18 -typedef struct _SATA_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT16 HBAPortNumber ; - UINT16 PortMultiplierPortNumber ; - UINT16 Lun ; /* Logical Unit Number */ -} SATA_DEVICE_PATH ; - -/** - * USB WWID Device Path SubType. - * UEFI 2.0 specification version 2.4 § 9.3.5.7. - */ -#define MSG_USB_WWID_DP 16 -typedef struct _USB_WWID_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT16 InterfaceNumber ; - UINT16 VendorId ; - UINT16 ProductId ; - CHAR16 SerialNumber[ 1 ] ; /* UTF-16 characters of the USB serial number */ -} USB_WWID_DEVICE_PATH ; - -/** - * Device Logical Unit SubType. - * UEFI 2.0 specification version 2.4 § 9.3.5.8. - */ -#define MSG_DEVICE_LOGICAL_UNIT_DP 17 -typedef struct _DEVICE_LOGICAL_UNIT_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT8 Lun ; /* Logical Unit Number */ -} DEVICE_LOGICAL_UNIT_DEVICE_PATH ; - -#define MSG_USB_CLASS_DP 0x0F -typedef struct _USB_CLASS_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL 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_PROTOCOL Header; - UINT32 Tid; -} I2O_DEVICE_PATH; - -#define MSG_MAC_ADDR_DP 0x0b -typedef struct _MAC_ADDR_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - EFI_MAC_ADDRESS MacAddress; - UINT8 IfType; -} MAC_ADDR_DEVICE_PATH; - -#define MSG_IPv4_DP 0x0c -typedef struct _IPv4_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - EFI_IPv4_ADDRESS LocalIpAddress; - EFI_IPv4_ADDRESS RemoteIpAddress; - UINT16 LocalPort; - UINT16 RemotePort; - UINT16 Protocol; - BOOLEAN StaticIpAddress; - /* new from UEFI version 2, code must check Length field in Header */ - EFI_IPv4_ADDRESS GatewayIpAddress ; - EFI_IPv4_ADDRESS SubnetMask ; -} IPv4_DEVICE_PATH; - -#define MSG_IPv6_DP 0x0d -typedef struct _IPv6_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - EFI_IPv6_ADDRESS LocalIpAddress; - EFI_IPv6_ADDRESS RemoteIpAddress; - UINT16 LocalPort; - UINT16 RemotePort; - UINT16 Protocol; - BOOLEAN IPAddressOrigin ; - /* new from UEFI version 2, code must check Length field in Header */ - UINT8 PrefixLength ; - EFI_IPv6_ADDRESS GatewayIpAddress ; -} IPv6_DEVICE_PATH; - - -/** - * Uniform Resource Identifiers SubType. - * UEFI 2.0 specification version 2.4C § 9.3.5.23. - */ -#define MSG_URI_DP 24 -typedef struct _URI_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - CHAR8 Uri[1]; -} URI_DEVICE_PATH; - -/** - * Device Logical Unit SubType. - * UEFI 2.0 specification version 2.4 § 9.3.5.8. - */ -#define MSG_VLAN_DP 20 -typedef struct _VLAN_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT16 VlanId ; -} VLAN_DEVICE_PATH; - -#define MSG_INFINIBAND_DP 0x09 -typedef struct _INFINIBAND_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 ResourceFlags ; - UINT64 PortGid ; - UINT64 ServiceId ; - UINT64 TargetPortId ; - UINT64 DeviceId ; -} INFINIBAND_DEVICE_PATH; - -#define MSG_UART_DP 0x0e -typedef struct _UART_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL 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 EFI_PC_ANSI_GUID \ - { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } -#define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID - -#define EFI_VT_100_GUID \ - { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } -#define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID - -#define EFI_VT_100_PLUS_GUID \ - { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} } -#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID - -#define EFI_VT_UTF8_GUID \ - { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} } -#define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID - - -/* - * Media Device Path (UEFI 2.4 specification, version 2.4 § 9.3.6.) - */ -#define MEDIA_DEVICE_PATH 0x04 - -#define MEDIA_HARDDRIVE_DP 0x01 -typedef struct _HARDDRIVE_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL 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_PROTOCOL 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_PROTOCOL 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_PROTOCOL Header; - EFI_GUID Protocol; -} MEDIA_PROTOCOL_DEVICE_PATH; - -/** - * PIWG Firmware File SubType. - * UEFI 2.0 specification version 2.4 § 9.3.6.6. - */ -#define MEDIA_PIWG_FW_FILE_DP 6 -typedef struct _MEDIA_FW_VOL_FILEPATH_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - EFI_GUID FvFileName ; -} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH ; - -/** - * PIWG Firmware Volume Device Path SubType. - * UEFI 2.0 specification version 2.4 § 9.3.6.7. - */ -#define MEDIA_PIWG_FW_VOL_DP 7 -typedef struct _MEDIA_FW_VOL_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - EFI_GUID FvName ; -} MEDIA_FW_VOL_DEVICE_PATH ; - -/** - * Media relative offset range device path. - * UEFI 2.0 specification version 2.4 § 9.3.6.8. - */ -#define MEDIA_RELATIVE_OFFSET_RANGE_DP 8 -typedef struct _MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL Header ; - UINT32 Reserved ; - UINT64 StartingOffset ; - UINT64 EndingOffset ; -} MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH ; - - -/* - * BIOS Boot Specification Device Path (UEFI 2.4 specification, version 2.4 § 9.3.7.) - */ -#define BBS_DEVICE_PATH 0x05 - -#define BBS_BBS_DP 0x01 -typedef struct _BBS_BBS_DEVICE_PATH { - EFI_DEVICE_PATH_PROTOCOL 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_PROTOCOL 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; - URI_DEVICE_PATH Uri; - 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_PROTOCOL *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; - URI_DEVICE_PATH *Uri; - 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; - -#define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ - { 0x8b843e20, 0x8132, 0x4852, {0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c} } - -typedef -CHAR16* -(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE) ( - IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode, - IN BOOLEAN DisplayOnly, - IN BOOLEAN AllowShortcuts - ); - -typedef -CHAR16* -(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH) ( - IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, - IN BOOLEAN DisplayOnly, - IN BOOLEAN AllowShortcuts - ); - -typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL { - EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText; - EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText; -} EFI_DEVICE_PATH_TO_TEXT_PROTOCOL; - -#define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \ - { 0x5c99a21, 0xc70f, 0x4ad2, {0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e} } - -typedef -EFI_DEVICE_PATH_PROTOCOL* -(EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE) ( - IN CONST CHAR16 *TextDeviceNode - ); - -typedef -EFI_DEVICE_PATH_PROTOCOL* -(EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH) ( - IN CONST CHAR16 *TextDevicePath - ); - -typedef struct { - EFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDeviceNode; - EFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicePath; -} EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL; - -#endif diff --git a/efi/inc/efierr.h b/efi/inc/efierr.h deleted file mode 100644 index dfd3d3c..0000000 --- a/efi/inc/efierr.h +++ /dev/null @@ -1,67 +0,0 @@ -#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_INCOMPATIBLE_VERSION EFIERR(25) -#define EFI_SECURITY_VIOLATION EFIERR(26) -#define EFI_CRC_ERROR EFIERR(27) -#define EFI_END_OF_MEDIA EFIERR(28) -#define EFI_END_OF_FILE EFIERR(31) -#define EFI_INVALID_LANGUAGE EFIERR(32) -#define EFI_COMPROMISED_DATA EFIERR(33) - -#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 - diff --git a/efi/inc/efifs.h b/efi/inc/efifs.h deleted file mode 100644 index fc595d1..0000000 --- a/efi/inc/efifs.h +++ /dev/null @@ -1,116 +0,0 @@ -#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 - diff --git a/efi/inc/efigpt.h b/efi/inc/efigpt.h deleted file mode 100644 index d1694ae..0000000 --- a/efi/inc/efigpt.h +++ /dev/null @@ -1,68 +0,0 @@ -#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 - diff --git a/efi/inc/efiip.h b/efi/inc/efiip.h deleted file mode 100644 index 8395079..0000000 --- a/efi/inc/efiip.h +++ /dev/null @@ -1,459 +0,0 @@ -#ifndef _EFI_IP_H -#define _EFI_IP_H - -/*++ -Copyright (c) 2013 Intel Corporation - ---*/ - -#define EFI_IP4_SERVICE_BINDING_PROTOCOL \ - {0xc51711e7,0xb4bf,0x404a,{0xbf,0xb8,0x0a,0x04, 0x8e,0xf1,0xff,0xe4}} - -#define EFI_IP4_PROTOCOL \ - {0x41d94cd2,0x35b6,0x455a,{0x82,0x58,0xd4,0xe5,0x13,0x34,0xaa,0xdd}} - -#define EFI_IP6_SERVICE_BINDING_PROTOCOL \ - {0xec835dd3,0xfe0f,0x617b,{0xa6,0x21,0xb3,0x50,0xc3,0xe1,0x33,0x88}} - -#define EFI_IP6_PROTOCOL \ - {0x2c8759d5,0x5c2d,0x66ef,{0x92,0x5f,0xb6,0x6c,0x10,0x19,0x57,0xe2}} - -INTERFACE_DECL(_EFI_IP4); -INTERFACE_DECL(_EFI_IP6); - -typedef struct { - EFI_HANDLE InstanceHandle; - EFI_IPv4_ADDRESS Ip4Address; - EFI_IPv4_ADDRESS SubnetMask; -} EFI_IP4_ADDRESS_PAIR; - -typedef struct { - EFI_HANDLE DriverHandle; - UINT32 AddressCount; - EFI_IP4_ADDRESS_PAIR AddressPairs[1]; -} EFI_IP4_VARIABLE_DATA; - -typedef struct { - UINT8 DefaultProtocol; - BOOLEAN AcceptAnyProtocol; - BOOLEAN AcceptIcmpErrors; - BOOLEAN AcceptBroadcast; - BOOLEAN AcceptPromiscuous; - BOOLEAN UseDefaultAddress; - EFI_IPv4_ADDRESS StationAddress; - EFI_IPv4_ADDRESS SubnetMask; - UINT8 TypeOfService; - UINT8 TimeToLive; - BOOLEAN DoNotFragment; - BOOLEAN RawData; - UINT32 ReceiveTimeout; - UINT32 TransmitTimeout; -} EFI_IP4_CONFIG_DATA; - -typedef struct { - EFI_IPv4_ADDRESS SubnetAddress; - EFI_IPv4_ADDRESS SubnetMask; - EFI_IPv4_ADDRESS GatewayAddress; -} EFI_IP4_ROUTE_TABLE; - -typedef struct { - UINT8 Type; - UINT8 Code; -} EFI_IP4_ICMP_TYPE; - -typedef struct { - BOOLEAN IsStarted; - UINT32 MaxPacketSize; - EFI_IP4_CONFIG_DATA ConfigData; - BOOLEAN IsConfigured; - UINT32 GroupCount; - EFI_IPv4_ADDRESS *GroupTable; - UINT32 RouteCount; - EFI_IP4_ROUTE_TABLE *RouteTable; - UINT32 IcmpTypeCount; - EFI_IP4_ICMP_TYPE *IcmpTypeList; -} EFI_IP4_MODE_DATA; - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_GET_MODE_DATA) ( - IN struct _EFI_IP4 *This, - OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_CONFIGURE) ( - IN struct _EFI_IP4 *This, - IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_GROUPS) ( - IN struct _EFI_IP4 *This, - IN BOOLEAN JoinFlag, - IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_ROUTES) ( - IN struct _EFI_IP4 *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress - ); - -#pragma pack(1) -typedef struct { - UINT8 HeaderLength:4; - UINT8 Version:4; - UINT8 TypeOfService; - UINT16 TotalLength; - UINT16 Identification; - UINT16 Fragmentation; - UINT8 TimeToLive; - UINT8 Protocol; - UINT16 Checksum; - EFI_IPv4_ADDRESS SourceAddress; - EFI_IPv4_ADDRESS DestinationAddress; -} EFI_IP4_HEADER; -#pragma pack() - -typedef struct { - UINT32 FragmentLength; - VOID *FragmentBuffer; -} EFI_IP4_FRAGMENT_DATA; - -typedef struct { - EFI_TIME TimeStamp; - EFI_EVENT RecycleSignal; - UINT32 HeaderLength; - EFI_IP4_HEADER *Header; - UINT32 OptionsLength; - VOID *Options; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_IP4_FRAGMENT_DATA FragmentTable[1]; -} EFI_IP4_RECEIVE_DATA; - -typedef struct { - EFI_IPv4_ADDRESS SourceAddress; - EFI_IPv4_ADDRESS GatewayAddress; - UINT8 Protocol; - UINT8 TypeOfService; - UINT8 TimeToLive; - BOOLEAN DoNotFragment; -} EFI_IP4_OVERRIDE_DATA; - -typedef struct { - EFI_IPv4_ADDRESS DestinationAddress; - EFI_IP4_OVERRIDE_DATA *OverrideData; - UINT32 OptionsLength; - VOID *OptionsBuffer; - UINT32 TotalDataLength; - UINT32 FragmentCount; - EFI_IP4_FRAGMENT_DATA FragmentTable[1]; -} EFI_IP4_TRANSMIT_DATA; - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; - union { - EFI_IP4_RECEIVE_DATA *RxData; - EFI_IP4_TRANSMIT_DATA *TxData; - } Packet; -} EFI_IP4_COMPLETION_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_TRANSMIT) ( - IN struct _EFI_IP4 *This, - IN EFI_IP4_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_RECEIVE) ( - IN struct _EFI_IP4 *This, - IN EFI_IP4_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_CANCEL)( - IN struct _EFI_IP4 *This, - IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP4_POLL) ( - IN struct _EFI_IP4 *This - ); - -typedef struct _EFI_IP4 { - EFI_IP4_GET_MODE_DATA GetModeData; - EFI_IP4_CONFIGURE Configure; - EFI_IP4_GROUPS Groups; - EFI_IP4_ROUTES Routes; - EFI_IP4_TRANSMIT Transmit; - EFI_IP4_RECEIVE Receive; - EFI_IP4_CANCEL Cancel; - EFI_IP4_POLL Poll; -} EFI_IP4; - -typedef struct { - UINT8 DefaultProtocol; - BOOLEAN AcceptAnyProtocol; - BOOLEAN AcceptIcmpErrors; - BOOLEAN AcceptPromiscuous; - EFI_IPv6_ADDRESS DestinationAddress; - EFI_IPv6_ADDRESS StationAddress; - UINT8 TrafficClass; - UINT8 HopLimit; - UINT32 FlowLabel; - UINT32 ReceiveTimeout; - UINT32 TransmitTimeout; -} EFI_IP6_CONFIG_DATA; - -typedef struct { - EFI_IPv6_ADDRESS Address; - UINT8 PrefixLength; -} EFI_IP6_ADDRESS_INFO; - -typedef struct { - EFI_IPv6_ADDRESS Gateway; - EFI_IPv6_ADDRESS Destination; - UINT8 PrefixLength; -} EFI_IP6_ROUTE_TABLE; - -typedef enum { - EfiNeighborInComplete, - EfiNeighborReachable, - EfiNeighborStale, - EfiNeighborDelay, - EfiNeighborProbe -} EFI_IP6_NEIGHBOR_STATE; - -typedef struct { - EFI_IPv6_ADDRESS Neighbor; - EFI_MAC_ADDRESS LinkAddress; - EFI_IP6_NEIGHBOR_STATE State; -} EFI_IP6_NEIGHBOR_CACHE; - -typedef struct { - UINT8 Type; - UINT8 Code; -} EFI_IP6_ICMP_TYPE; - -//*********************************************************** -// ICMPv6 type definitions for error messages -//*********************************************************** -#define ICMP_V6_DEST_UNREACHABLE 0x1 -#define ICMP_V6_PACKET_TOO_BIG 0x2 -#define ICMP_V6_TIME_EXCEEDED 0x3 -#define ICMP_V6_PARAMETER_PROBLEM 0x4 - -//*********************************************************** -// ICMPv6 type definition for informational messages -//*********************************************************** -#define ICMP_V6_ECHO_REQUEST 0x80 -#define ICMP_V6_ECHO_REPLY 0x81 -#define ICMP_V6_LISTENER_QUERY 0x82 -#define ICMP_V6_LISTENER_REPORT 0x83 -#define ICMP_V6_LISTENER_DONE 0x84 -#define ICMP_V6_ROUTER_SOLICIT 0x85 -#define ICMP_V6_ROUTER_ADVERTISE 0x86 -#define ICMP_V6_NEIGHBOR_SOLICIT 0x87 -#define ICMP_V6_NEIGHBOR_ADVERTISE 0x88 -#define ICMP_V6_REDIRECT 0x89 -#define ICMP_V6_LISTENER_REPORT_2 0x8F - -//*********************************************************** -// ICMPv6 code definitions for ICMP_V6_DEST_UNREACHABLE -//*********************************************************** -#define ICMP_V6_NO_ROUTE_TO_DEST 0x0 -#define ICMP_V6_COMM_PROHIBITED 0x1 -#define ICMP_V6_BEYOND_SCOPE 0x2 -#define ICMP_V6_ADDR_UNREACHABLE 0x3 -#define ICMP_V6_PORT_UNREACHABLE 0x4 -#define ICMP_V6_SOURCE_ADDR_FAILED 0x5 -#define ICMP_V6_ROUTE_REJECTED 0x6 - -//*********************************************************** -// ICMPv6 code definitions for ICMP_V6_TIME_EXCEEDED -//*********************************************************** -#define ICMP_V6_TIMEOUT_HOP_LIMIT 0x0 -#define ICMP_V6_TIMEOUT_REASSEMBLE 0x1 - -//*********************************************************** -// ICMPv6 code definitions for ICMP_V6_PARAMETER_PROBLEM -//*********************************************************** -#define ICMP_V6_ERRONEOUS_HEADER 0x0 -#define ICMP_V6_UNRECOGNIZE_NEXT_HDR 0x1 -#define ICMP_V6_UNRECOGNIZE_OPTION 0x2 - -typedef struct { - BOOLEAN IsStarted; - UINT32 MaxPacketSize; - EFI_IP6_CONFIG_DATA ConfigData; - BOOLEAN IsConfigured; - UINT32 AddressCount; - EFI_IP6_ADDRESS_INFO *AddressList; - UINT32 GroupCount; - EFI_IPv6_ADDRESS *GroupTable; - UINT32 RouteCount; - EFI_IP6_ROUTE_TABLE *RouteTable; - UINT32 NeighborCount; - EFI_IP6_NEIGHBOR_CACHE *NeighborCache; - UINT32 PrefixCount; - EFI_IP6_ADDRESS_INFO *PrefixTable; - UINT32 IcmpTypeCount; - EFI_IP6_ICMP_TYPE *IcmpTypeList; -} EFI_IP6_MODE_DATA; - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_GET_MODE_DATA) ( - IN struct _EFI_IP6 *This, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_CONFIGURE) ( - IN struct _EFI_IP6 *This, - IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL - ); -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_GROUPS) ( - IN struct _EFI_IP6 *This, - IN BOOLEAN JoinFlag, - IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_ROUTES) ( - IN struct _EFI_IP6 *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_NEIGHBORS) ( - IN struct _EFI_IP6 *This, - IN BOOLEAN DeleteFlag, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override - ); - -typedef struct _EFI_IP6_FRAGMENT_DATA { - UINT32 FragmentLength; - VOID *FragmentBuffer; -} EFI_IP6_FRAGMENT_DATA; - -typedef struct _EFI_IP6_OVERRIDE_DATA { - UINT8 Protocol; - UINT8 HopLimit; - UINT32 FlowLabel; -} EFI_IP6_OVERRIDE_DATA; - -typedef struct _EFI_IP6_TRANSMIT_DATA { - EFI_IPv6_ADDRESS DestinationAddress; - EFI_IP6_OVERRIDE_DATA *OverrideData; - UINT32 ExtHdrsLength; - VOID *ExtHdrs; - UINT8 NextHeader; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_IP6_FRAGMENT_DATA FragmentTable[1]; -} EFI_IP6_TRANSMIT_DATA; - -#pragma pack(1) -typedef struct _EFI_IP6_HEADER { - UINT8 TrafficClassH:4; - UINT8 Version:4; - UINT8 FlowLabelH:4; - UINT8 TrafficClassL:4; - UINT16 FlowLabelL; - UINT16 PayloadLength; - UINT8 NextHeader; - UINT8 HopLimit; - EFI_IPv6_ADDRESS SourceAddress; - EFI_IPv6_ADDRESS DestinationAddress; -} EFI_IP6_HEADER; -#pragma pack() - -typedef struct _EFI_IP6_RECEIVE_DATA { - EFI_TIME TimeStamp; - EFI_EVENT RecycleSignal; - UINT32 HeaderLength; - EFI_IP6_HEADER *Header; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_IP6_FRAGMENT_DATA FragmentTable[1]; -} EFI_IP6_RECEIVE_DATA; - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; - union { - EFI_IP6_RECEIVE_DATA *RxData; - EFI_IP6_TRANSMIT_DATA *TxData; - } Packet; -} EFI_IP6_COMPLETION_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_TRANSMIT) ( - IN struct _EFI_IP6 *This, - IN EFI_IP6_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_RECEIVE) ( - IN struct _EFI_IP6 *This, - IN EFI_IP6_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_CANCEL)( - IN struct _EFI_IP6 *This, - IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IP6_POLL) ( - IN struct _EFI_IP6 *This - ); - -typedef struct _EFI_IP6 { - EFI_IP6_GET_MODE_DATA GetModeData; - EFI_IP6_CONFIGURE Configure; - EFI_IP6_GROUPS Groups; - EFI_IP6_ROUTES Routes; - EFI_IP6_NEIGHBORS Neighbors; - EFI_IP6_TRANSMIT Transmit; - EFI_IP6_RECEIVE Receive; - EFI_IP6_CANCEL Cancel; - EFI_IP6_POLL Poll; -} EFI_IP6; - -#endif /* _EFI_IP_H */ diff --git a/efi/inc/efilib.h b/efi/inc/efilib.h deleted file mode 100644 index 8a507af..0000000 --- a/efi/inc/efilib.h +++ /dev/null @@ -1,1036 +0,0 @@ -#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 "efistdarg.h" -#include "pci22.h" -#include "libsmbios.h" - -// -// Public read-only data in the EFI library -// - -extern EFI_SYSTEM_TABLE *ST; -#define gST ST -extern EFI_BOOT_SERVICES *BS; -#define gBS BS -extern EFI_RUNTIME_SERVICES *RT; -#define gRT RT - -extern EFI_GUID gEfiDevicePathProtocolGuid; -#define DevicePathProtocol gEfiDevicePathProtocolGuid -extern EFI_GUID gEfiDevicePathToTextProtocolGuid; -#define DevicePathToTextProtocol gEfiDevicePathToTextProtocolGuid -extern EFI_GUID gEfiDevicePathFromTextProtocolGuid; -#define DevicePathFromTextProtocol gEfiDevicePathFromTextProtocolGuid -extern EFI_GUID gEfiLoadedImageProtocolGuid; -#define LoadedImageProtocol gEfiLoadedImageProtocolGuid -extern EFI_GUID gEfiSimpleTextInProtocolGuid; -#define TextInProtocol gEfiSimpleTextInProtocolGuid -extern EFI_GUID gEfiSimpleTextOutProtocolGuid; -#define TextOutProtocol gEfiSimpleTextOutProtocolGuid -extern EFI_GUID gEfiGraphicsOutputProtocolGuid; -#define GraphicsOutputProtocol gEfiGraphicsOutputProtocolGuid -extern EFI_GUID gEfiEdidDiscoveredProtocolGuid; -#define EdidDiscoveredProtocol gEfiEdidDiscoveredProtocolGuid -extern EFI_GUID gEfiEdidActiveProtocolGuid; -#define EdidActiveProtocol gEfiEdidActiveProtocolGuid -extern EFI_GUID gEfiEdidOverrideProtocolGuid; -#define EdidOverrideProtocol gEfiEdidOverrideProtocolGuid -extern EFI_GUID gEfiBlockIoProtocolGuid; -#define BlockIoProtocol gEfiBlockIoProtocolGuid -extern EFI_GUID gEfiBlockIo2ProtocolGuid; -#define BlockIo2Protocol gEfiBlockIo2ProtocolGuid -extern EFI_GUID gEfiDiskIoProtocolGuid; -#define DiskIoProtocol gEfiDiskIoProtocolGuid -extern EFI_GUID gEfiDiskIo2ProtocolGuid; -#define DiskIo2Protocol gEfiDiskIo2ProtocolGuid -extern EFI_GUID gEfiSimpleFileSystemProtocolGuid; -#define FileSystemProtocol gEfiSimpleFileSystemProtocolGuid -extern EFI_GUID gEfiLoadFileProtocolGuid; -#define LoadFileProtocol gEfiLoadFileProtocolGuid -extern EFI_GUID gEfiDeviceIoProtocolGuid; -#define DeviceIoProtocol gEfiDeviceIoProtocolGuid -extern EFI_GUID VariableStoreProtocol; -extern EFI_GUID LegacyBootProtocol; -extern EFI_GUID gEfiUnicodeCollationProtocolGuid; -#define UnicodeCollationProtocol gEfiUnicodeCollationProtocolGuid -extern EFI_GUID gEfiSerialIoProtocolGuid; -#define SerialIoProtocol gEfiSerialIoProtocolGuid -extern EFI_GUID VgaClassProtocol; -extern EFI_GUID TextOutSpliterProtocol; -extern EFI_GUID ErrorOutSpliterProtocol; -extern EFI_GUID TextInSpliterProtocol; -extern EFI_GUID gEfiSimpleNetworkProtocolGuid; -#define SimpleNetworkProtocol gEfiSimpleNetworkProtocolGuid -extern EFI_GUID gEfiPxeBaseCodeProtocolGuid; -#define PxeBaseCodeProtocol gEfiPxeBaseCodeProtocolGuid -extern EFI_GUID gEfiPxeBaseCodeCallbackProtocolGuid; -#define PxeCallbackProtocol gEfiPxeBaseCodeCallbackProtocolGuid -extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid; -#define NetworkInterfaceIdentifierProtocol gEfiNetworkInterfaceIdentifierProtocolGuid -extern EFI_GUID gEFiUiInterfaceProtocolGuid; -#define UiProtocol gEFiUiInterfaceProtocolGuid -extern EFI_GUID InternalShellProtocol; -extern EFI_GUID gEfiPciIoProtocolGuid; -#define PciIoProtocol gEfiPciIoProtocolGuid -extern EFI_GUID gEfiPciRootBridgeIoProtocolGuid; -extern EFI_GUID gEfiDriverBindingProtocolGuid; -#define DriverBindingProtocol gEfiDriverBindingProtocolGuid -extern EFI_GUID gEfiComponentNameProtocolGuid; -#define ComponentNameProtocol gEfiComponentNameProtocolGuid -extern EFI_GUID gEfiComponentName2ProtocolGuid; -#define ComponentName2Protocol gEfiComponentName2ProtocolGuid -extern EFI_GUID gEfiHashProtocolGuid; -#define HashProtocol gEfiHashProtocolGuid -extern EFI_GUID gEfiPlatformDriverOverrideProtocolGuid; -#define PlatformDriverOverrideProtocol gEfiPlatformDriverOverrideProtocolGuid -extern EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid; -#define BusSpecificDriverOverrideProtocol gEfiBusSpecificDriverOverrideProtocolGuid -extern EFI_GUID gEfiDriverFamilyOverrideProtocolGuid; -#define DriverFamilyOverrideProtocol gEfiDriverFamilyOverrideProtocolGuid -extern EFI_GUID gEfiEbcProtocolGuid; - -extern EFI_GUID gEfiGlobalVariableGuid; -#define EfiGlobalVariable gEfiGlobalVariableGuid -extern EFI_GUID gEfiFileInfoGuid; -#define GenericFileInfo gEfiFileInfoGuid -extern EFI_GUID gEfiFileSystemInfoGuid; -#define FileSystemInfo gEfiFileSystemInfoGuid -extern EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid; -#define FileSystemVolumeLabelInfo gEfiFileSystemVolumeLabelInfoIdGuid -extern EFI_GUID gEfiPcAnsiGuid; -#define PcAnsiProtocol gEfiPcAnsiGuid -extern EFI_GUID gEfiVT100Guid; -#define Vt100Protocol gEfiVT100Guid -extern EFI_GUID gEfiVT100PlusGuid; -extern EFI_GUID gEfiVTUTF8Guid; - -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; - -extern EFI_GUID SimplePointerProtocol; -extern EFI_GUID AbsolutePointerProtocol; - -extern EFI_GUID gEfiDebugImageInfoTableGuid; -extern EFI_GUID gEfiDebugSupportProtocolGuid; - -// -// 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 -Exit( - IN EFI_STATUS ExitStatus, - IN UINTN ExitDataSize, - IN CHAR16 *ExitData OPTIONAL - ); - -INTN -GetShellArgcArgv( - EFI_HANDLE ImageHandle, - CHAR16 **Argv[] /* Statically allocated */ - ); - -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 CONST VOID *Src, - IN UINTN len - ); - -INTN -CompareMem ( - IN CONST VOID *Dest, - IN CONST VOID *Src, - IN UINTN len - ); - -INTN -StrCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2 - ); - -INTN -StrnCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2, - IN UINTN len - ); - -INTN -StriCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2 - ); - -VOID -StrLwr ( - IN CHAR16 *Str - ); - -VOID -StrUpr ( - IN CHAR16 *Str - ); - -VOID -StrCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ); - -VOID -StrnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ); - -CHAR16 * -StpCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ); - -CHAR16 * -StpnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ); - -VOID -StrCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ); - -VOID -StrnCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ); - -UINTN -StrLen ( - IN CONST CHAR16 *s1 - ); - -UINTN -StrnLen ( - IN CONST CHAR16 *s1, - IN UINTN Len - ); - -UINTN -StrSize ( - IN CONST CHAR16 *s1 - ); - -CHAR16 * -StrDuplicate ( - IN CONST CHAR16 *Src - ); - -UINTN -strlena ( - IN CONST CHAR8 *s1 - ); - -UINTN -strcmpa ( - IN CONST CHAR8 *s1, - IN CONST CHAR8 *s2 - ); - -UINTN -strncmpa ( - IN CONST CHAR8 *s1, - IN CONST CHAR8 *s2, - IN UINTN len - ); - -UINTN -xtoi ( - CONST CHAR16 *str - ); - -UINTN -Atoi ( - CONST 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 CONST CHAR16 *fmt, - ... - ); - -UINTN -VPrint ( - IN CONST CHAR16 *fmt, - va_list args - ); - -UINTN -SPrint ( - OUT CHAR16 *Str, - IN UINTN StrSize, - IN CONST CHAR16 *fmt, - ... - ); - -UINTN -VSPrint ( - OUT CHAR16 *Str, - IN UINTN StrSize, - IN CONST CHAR16 *fmt, - va_list args - ); - -CHAR16 * -VPoolPrint ( - IN CONST CHAR16 *fmt, - va_list args - ); - -CHAR16 * -PoolPrint ( - IN CONST CHAR16 *fmt, - ... - ); - -typedef struct { - CHAR16 *str; - UINTN len; - UINTN maxlen; -} POOL_PRINT; - -CHAR16 * -CatPrint ( - IN OUT POOL_PRINT *Str, - IN CONST CHAR16 *fmt, - ... - ); - -UINTN -PrintAt ( - IN UINTN Column, - IN UINTN Row, - IN CONST CHAR16 *fmt, - ... - ); - -UINTN -IPrint ( - IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, - IN CONST CHAR16 *fmt, - ... - ); - -UINTN -IPrintAt ( - IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, - IN UINTN Column, - IN UINTN Row, - IN CONST CHAR16 *fmt, - ... - ); - -UINTN -APrint ( - IN CONST CHAR8 *fmt, - ... - ); - -VOID -ValueToHex ( - IN CHAR16 *Buffer, - IN UINT64 v - ); - -VOID -ValueToString ( - IN CHAR16 *Buffer, - IN BOOLEAN Comma, - IN INT64 v - ); - -VOID -FloatToString ( - IN CHAR16 *Buffer, - IN BOOLEAN Comma, - IN double 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 -LibSetNVVariable ( - IN CHAR16 *VarName, - IN EFI_GUID *VarGuid, - IN UINTN DataSize, - IN VOID *Data - ); - -EFI_STATUS -LibSetVariable ( - IN CHAR16 *VarName, - IN EFI_GUID *VarGuid, - IN UINTN DataSize, - IN VOID *Data - ); -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 diff --git a/efi/inc/efilink.h b/efi/inc/efilink.h deleted file mode 100644 index cc5aa2d..0000000 --- a/efi/inc/efilink.h +++ /dev/null @@ -1,177 +0,0 @@ -#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)(intptr_t)(&(((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 - diff --git a/efi/inc/efinet.h b/efi/inc/efinet.h deleted file mode 100644 index 6215816..0000000 --- a/efi/inc/efinet.h +++ /dev/null @@ -1,348 +0,0 @@ -#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_GUID \ - { 0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} } - -INTERFACE_DECL(_EFI_SIMPLE_NETWORK_PROTOCOL); - -/////////////////////////////////////////////////////////////////////////////// -// - -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_PROTOCOL *This -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_STOP) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_RESET) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN ExtendedVerification -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *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_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *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_PROTOCOL *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_PROTOCOL *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_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL -); - -/////////////////////////////////////////////////////////////////////////////// -// - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) ( - IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *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_PROTOCOL *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_PROTOCOL_REVISION 0x00010000 -#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION EFI_SIMPLE_NETWORK_PROTOCOL_REVISION - -typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL { - 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_PROTOCOL; - -// Note: Because it conflicted with the EDK2 struct name, the -// 'EFI_SIMPLE_NETWORK_PROTOCOL' GUID definition, from older -// versions of gnu-efi, is now obsoleted. -// Use 'EFI_SIMPLE_NETWORK_PROTOCOL_GUID' instead. - -typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL _EFI_SIMPLE_NETWORK; -typedef EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK; - -#endif /* _EFINET_H */ diff --git a/efi/inc/efipart.h b/efi/inc/efipart.h deleted file mode 100644 index d4c5573..0000000 --- a/efi/inc/efipart.h +++ /dev/null @@ -1,61 +0,0 @@ -#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 diff --git a/efi/inc/efipciio.h b/efi/inc/efipciio.h deleted file mode 100644 index e885387..0000000 --- a/efi/inc/efipciio.h +++ /dev/null @@ -1,399 +0,0 @@ -#ifndef _EFI_PCI_IO_H -#define _EFI_PCI_IO_H - -#define EFI_PCI_IO_PROTOCOL_GUID \ - { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} } - -#define EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID \ - { 0x2f707ebb, 0x4a1a, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } - -INTERFACE_DECL(_EFI_PCI_IO_PROTOCOL); -INTERFACE_DECL(_EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL); - -typedef enum { - EfiPciIoWidthUint8, - EfiPciIoWidthUint16, - EfiPciIoWidthUint32, - EfiPciIoWidthUint64, - EfiPciIoWidthFifoUint8, - EfiPciIoWidthFifoUint16, - EfiPciIoWidthFifoUint32, - EfiPciIoWidthFifoUint64, - EfiPciIoWidthFillUint8, - EfiPciIoWidthFillUint16, - EfiPciIoWidthFillUint32, - EfiPciIoWidthFillUint64, - EfiPciIoWidthMaximum -} EFI_PCI_IO_PROTOCOL_WIDTH, EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH; - -#define EFI_PCI_IO_PASS_THROUGH_BAR 0xff - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_PCI_IO_PROTOCOL_WIDTH Width, - IN UINT8 BarIndex, - IN UINT64 Offset, - IN UINT64 Mask, - IN UINT64 Value, - IN UINT64 Delay, - OUT UINT64 *Result -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINT64 Mask, - IN UINT64 Value, - IN UINT64 Delay, - OUT UINT64 *Result -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_PCI_IO_PROTOCOL_WIDTH Width, - IN UINT8 BarIndex, - IN UINT64 Offset, - IN UINTN Count, - IN OUT VOID *Buffer -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, - IN UINT64 Address, - IN UINTN Count, - IN OUT VOID *Buffer -); - -typedef struct { - EFI_PCI_IO_PROTOCOL_IO_MEM Read; - EFI_PCI_IO_PROTOCOL_IO_MEM Write; -} EFI_PCI_IO_PROTOCOL_ACCESS; - -typedef struct { - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Read; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Write; -} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS; - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_PCI_IO_PROTOCOL_WIDTH Width, - IN UINT32 Offset, - IN UINTN Count, - IN OUT VOID *Buffer -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - OUT VOID **Resources -); - -typedef struct { - EFI_PCI_IO_PROTOCOL_CONFIG Read; - EFI_PCI_IO_PROTOCOL_CONFIG Write; -} EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS; - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_PCI_IO_PROTOCOL_WIDTH Width, - IN UINT8 DestBarIndex, - IN UINT64 DestOffset, - IN UINT8 SrcBarIndex, - IN UINT64 SrcOffset, - IN UINTN Count -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, - IN UINT64 DestAddress, - IN UINT64 SrcAddress, - IN UINTN Count -); - -typedef enum { - EfiPciIoOperationBusMasterRead, - EfiPciIoOperationBusMasterWrite, - EfiPciIoOperationBusMasterCommonBuffer, - EfiPciIoOperationMaximum -} EFI_PCI_IO_PROTOCOL_OPERATION; - -typedef enum { - EfiPciOperationBusMasterRead, - EfiPciOperationBusMasterWrite, - EfiPciOperationBusMasterCommonBuffer, - EfiPciOperationBusMasterRead64, - EfiPciOperationBusMasterWrite64, - EfiPciOperationBusMasterCommonBuffer64, - EfiPciOperationMaximum -} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION; - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_PCI_IO_PROTOCOL_OPERATION Operation, - IN VOID *HostAddress, - IN OUT UINTN *NumberOfBytes, - OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, - OUT VOID **Mapping -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION Operation, - IN VOID *HostAddress, - IN OUT UINTN *NumberOfBytes, - OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, - OUT VOID **Mapping -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN VOID *Mapping -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN VOID *Mapping -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_ALLOCATE_TYPE Type, - IN EFI_MEMORY_TYPE MemoryType, - IN UINTN Pages, - OUT VOID **HostAddress, - IN UINT64 Attributes -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN EFI_ALLOCATE_TYPE Type, - IN EFI_MEMORY_TYPE MemoryType, - IN UINTN Pages, - IN OUT VOID **HostAddress, - IN UINT64 Attributes -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN UINTN Pages, - IN VOID *HostAddress - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN UINTN Pages, - IN VOID *HostAddress -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) ( - IN struct _EFI_PCI_IO_PROTOCOL *This -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - OUT UINTN *SegmentNumber, - OUT UINTN *BusNumber, - OUT UINTN *DeviceNumber, - OUT UINTN *FunctionNumber -); - -#define EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO 0x0001 -#define EFI_PCI_ATTRIBUTE_ISA_IO 0x0002 -#define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO 0x0004 -#define EFI_PCI_ATTRIBUTE_VGA_MEMORY 0x0008 -#define EFI_PCI_ATTRIBUTE_VGA_IO 0x0010 -#define EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO 0x0020 -#define EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO 0x0040 -#define EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080 -#define EFI_PCI_ATTRIBUTE_IO 0x0100 -#define EFI_PCI_ATTRIBUTE_MEMORY 0x0200 -#define EFI_PCI_ATTRIBUTE_BUS_MASTER 0x0400 -#define EFI_PCI_ATTRIBUTE_MEMORY_CACHED 0x0800 -#define EFI_PCI_ATTRIBUTE_MEMORY_DISABLE 0x1000 -#define EFI_PCI_ATTRIBUTE_EMBEDDED_DEVICE 0x2000 -#define EFI_PCI_ATTRIBUTE_EMBEDDED_ROM 0x4000 -#define EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000 -#define EFI_PCI_ATTRIBUTE_ISA_IO_16 0x10000 -#define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000 -#define EFI_PCI_ATTRIBUTE_VGA_IO_16 0x40000 - -#define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO -#define EFI_PCI_IO_ATTRIBUTE_ISA_IO EFI_PCI_ATTRIBUTE_ISA_IO -#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO -#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY EFI_PCI_ATTRIBUTE_VGA_MEMORY -#define EFI_PCI_IO_ATTRIBUTE_VGA_IO EFI_PCI_ATTRIBUTE_VGA_IO -#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO -#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO -#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE -#define EFI_PCI_IO_ATTRIBUTE_IO EFI_PCI_ATTRIBUTE_IO -#define EFI_PCI_IO_ATTRIBUTE_MEMORY EFI_PCI_ATTRIBUTE_MEMORY -#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER EFI_PCI_ATTRIBUTE_BUS_MASTER -#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED EFI_PCI_ATTRIBUTE_MEMORY_CACHED -#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE EFI_PCI_ATTRIBUTE_MEMORY_DISABLE -#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE EFI_PCI_ATTRIBUTE_EMBEDDED_DEVICE -#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM EFI_PCI_ATTRIBUTE_EMBEDDED_ROM -#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE -#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 EFI_PCI_ATTRIBUTE_ISA_IO_16 -#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16 -#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 EFI_PCI_ATTRIBUTE_VGA_IO_16 - -#define EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER \ - (EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED | EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE) - -#define EFI_PCI_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER \ - (~EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER) - -typedef struct { - UINT8 Register; - UINT8 Function; - UINT8 Device; - UINT8 Bus; - UINT32 ExtendedRegister; -} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS; - -typedef enum { - EfiPciIoAttributeOperationGet, - EfiPciIoAttributeOperationSet, - EfiPciIoAttributeOperationEnable, - EfiPciIoAttributeOperationDisable, - EfiPciIoAttributeOperationSupported, - EfiPciIoAttributeOperationMaximum -} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION; - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation, - IN UINT64 Attributes, - OUT UINT64 *Result OPTIONAL -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN UINT8 BarIndex, - OUT UINT64 *Supports OPTIONAL, - OUT VOID **Resources OPTIONAL -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - OUT UINT64 *Supports, - OUT UINT64 *Attributes -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) ( - IN struct _EFI_PCI_IO_PROTOCOL *This, - IN UINT64 Attributes, - IN UINT8 BarIndex, - IN OUT UINT64 *Offset, - IN OUT UINT64 *Length -); - -typedef -EFI_STATUS -(EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES) ( - IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN UINT64 Attributes, - IN OUT UINT64 *ResourceBase, - IN OUT UINT64 *ResourceLength -); - -typedef struct _EFI_PCI_IO_PROTOCOL { - EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem; - EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo; - EFI_PCI_IO_PROTOCOL_ACCESS Mem; - EFI_PCI_IO_PROTOCOL_ACCESS Io; - EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci; - EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem; - EFI_PCI_IO_PROTOCOL_MAP Map; - EFI_PCI_IO_PROTOCOL_UNMAP Unmap; - EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer; - EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer; - EFI_PCI_IO_PROTOCOL_FLUSH Flush; - EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation; - EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes; - EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes; - EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes; - UINT64 RomSize; - VOID *RomImage; -} EFI_PCI_IO_PROTOCOL; - -// Note: Because it conflicted with the EDK2 struct name, the -// 'EFI_PCI_IO_PROTOCOL' GUID definition, from older versions -// of gnu-efi, is now obsoleted. -// Use 'EFI_PCI_IO_PROTOCOL_GUID' instead. - -typedef struct _EFI_PCI_IO_PROTOCOL _EFI_PCI_IO; -typedef EFI_PCI_IO_PROTOCOL EFI_PCI_IO; - -typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL { - EFI_HANDLE ParentHandle; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM PollMem; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM PollIo; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Mem; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Io; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Pci; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM CopyMem; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP Map; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP Unmap; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER FreeBuffer; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH Flush; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES GetAttributes; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES SetAttributes; - EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION Configuration; - UINT32 SegmentNumber; -} EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL; - -#endif /* _EFI_PCI_IO_H */ diff --git a/efi/inc/efipoint.h b/efi/inc/efipoint.h deleted file mode 100644 index 46e92ff..0000000 --- a/efi/inc/efipoint.h +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (C) 2014 by John Cronin - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef _EFI_POINT_H -#define _EFI_POINT_H - -#define EFI_SIMPLE_POINTER_PROTOCOL_GUID \ - { 0x31878c87, 0xb75, 0x11d5, { 0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } - -INTERFACE_DECL(_EFI_SIMPLE_POINTER); - -typedef struct { - INT32 RelativeMovementX; - INT32 RelativeMovementY; - INT32 RelativeMovementZ; - BOOLEAN LeftButton; - BOOLEAN RightButton; -} EFI_SIMPLE_POINTER_STATE; - -typedef struct { - UINT64 ResolutionX; - UINT64 ResolutionY; - UINT64 ResolutionZ; - BOOLEAN LeftButton; - BOOLEAN RightButton; -} EFI_SIMPLE_POINTER_MODE; - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_POINTER_RESET) ( - IN struct _EFI_SIMPLE_POINTER *This, - IN BOOLEAN ExtendedVerification -); - -typedef -EFI_STATUS -(EFIAPI *EFI_SIMPLE_POINTER_GET_STATE) ( - IN struct _EFI_SIMPLE_POINTER *This, - IN OUT EFI_SIMPLE_POINTER_STATE *State -); - -typedef struct _EFI_SIMPLE_POINTER { - EFI_SIMPLE_POINTER_RESET Reset; - EFI_SIMPLE_POINTER_GET_STATE GetState; - EFI_EVENT WaitForInput; - EFI_SIMPLE_POINTER_MODE *Mode; -} EFI_SIMPLE_POINTER_PROTOCOL; - -#define EFI_ABSOLUTE_POINTER_PROTOCOL_GUID \ - { 0x8D59D32B, 0xC655, 0x4AE9, { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } } - -INTERFACE_DECL(_EFI_ABSOLUTE_POINTER_PROTOCOL); - -typedef struct { - UINT64 AbsoluteMinX; - UINT64 AbsoluteMinY; - UINT64 AbsoluteMinZ; - UINT64 AbsoluteMaxX; - UINT64 AbsoluteMaxY; - UINT64 AbsoluteMaxZ; - UINT32 Attributes; -} EFI_ABSOLUTE_POINTER_MODE; - -typedef struct { - UINT64 CurrentX; - UINT64 CurrentY; - UINT64 CurrentZ; - UINT32 ActiveButtons; -} EFI_ABSOLUTE_POINTER_STATE; - -#define EFI_ABSP_SupportsAltActive 0x00000001 -#define EFI_ABSP_SupportsPressureAsZ 0x00000002 -#define EFI_ABSP_TouchActive 0x00000001 -#define EFI_ABS_AltActive 0x00000002 - -typedef -EFI_STATUS -(EFIAPI *EFI_ABSOLUTE_POINTER_RESET) ( - IN struct _EFI_ABSOLUTE_POINTER_PROTOCOL *This, - IN BOOLEAN ExtendedVerification -); - -typedef -EFI_STATUS -(EFIAPI *EFI_ABSOLUTE_POINTER_GET_STATE) ( - IN struct _EFI_ABSOLUTE_POINTER_PROTOCOL *This, - IN OUT EFI_ABSOLUTE_POINTER_STATE *State -); - -typedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL { - EFI_ABSOLUTE_POINTER_RESET Reset; - EFI_ABSOLUTE_POINTER_GET_STATE GetState; - EFI_EVENT WaitForInput; - EFI_ABSOLUTE_POINTER_MODE *Mode; -} EFI_ABSOLUTE_POINTER_PROTOCOL; - -#endif diff --git a/efi/inc/efiprot.h b/efi/inc/efiprot.h deleted file mode 100644 index 53fc560..0000000 --- a/efi/inc/efiprot.h +++ /dev/null @@ -1,1424 +0,0 @@ -#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 EFI_FPSWA_PROTOCOL_GUID \ - { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } -#define FPSWA_PROTOCOL EFI_FPSWA_PROTOCOL_GUID - -// -// Device Path protocol -// - -#define EFI_DEVICE_PATH_PROTOCOL_GUID \ - { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID - - -// -// Block IO protocol -// - -#define EFI_BLOCK_IO_PROTOCOL_GUID \ - { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL_GUID - -#define EFI_BLOCK_IO_PROTOCOL_REVISION 0x00010000 -#define EFI_BLOCK_IO_PROTOCOL_REVISION2 0x00020001 -#define EFI_BLOCK_IO_PROTOCOL_REVISION3 ((2<<16) | 31) -#define EFI_BLOCK_IO_INTERFACE_REVISION EFI_BLOCK_IO_PROTOCOL_REVISION -#define EFI_BLOCK_IO_INTERFACE_REVISION2 EFI_BLOCK_IO_PROTOCOL_REVISION2 -#define EFI_BLOCK_IO_INTERFACE_REVISION3 EFI_BLOCK_IO_PROTOCOL_REVISION3 - -INTERFACE_DECL(_EFI_BLOCK_IO_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_BLOCK_RESET) ( - IN struct _EFI_BLOCK_IO_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_BLOCK_READ) ( - IN struct _EFI_BLOCK_IO_PROTOCOL *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_PROTOCOL *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_PROTOCOL *This - ); - - - -typedef struct { - UINT32 MediaId; - BOOLEAN RemovableMedia; - BOOLEAN MediaPresent; - - BOOLEAN LogicalPartition; - BOOLEAN ReadOnly; - BOOLEAN WriteCaching; - - UINT32 BlockSize; - UINT32 IoAlign; - - EFI_LBA LastBlock; - - /* revision 2 */ - EFI_LBA LowestAlignedLba; - UINT32 LogicalBlocksPerPhysicalBlock; - /* revision 3 */ - UINT32 OptimalTransferLengthGranularity; -} EFI_BLOCK_IO_MEDIA; - -typedef struct _EFI_BLOCK_IO_PROTOCOL { - 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_PROTOCOL; - -typedef struct _EFI_BLOCK_IO_PROTOCOL _EFI_BLOCK_IO; -typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO; - -#define EFI_BLOCK_IO2_PROTOCOL_GUID \ - { 0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1} } - -INTERFACE_DECL(_EFI_BLOCK_IO2_PROTOCOL); - -typedef struct { - EFI_EVENT Event; - EFI_STATUS TransactionStatus; -} EFI_BLOCK_IO2_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_BLOCK_RESET_EX) ( - IN struct _EFI_BLOCK_IO2_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_BLOCK_READ_EX) ( - IN struct _EFI_BLOCK_IO2_PROTOCOL *This, - IN UINT32 MediaId, - IN EFI_LBA LBA, - IN OUT EFI_BLOCK_IO2_TOKEN *Token, - IN UINTN BufferSize, - OUT VOID *Buffer - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_BLOCK_WRITE_EX) ( - IN struct _EFI_BLOCK_IO2_PROTOCOL *This, - IN UINT32 MediaId, - IN EFI_LBA LBA, - IN OUT EFI_BLOCK_IO2_TOKEN *Token, - IN UINTN BufferSize, - IN VOID *Buffer - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_BLOCK_FLUSH_EX) ( - IN struct _EFI_BLOCK_IO2_PROTOCOL *This, - IN OUT EFI_BLOCK_IO2_TOKEN *Token - ); - -typedef struct _EFI_BLOCK_IO2_PROTOCOL { - EFI_BLOCK_IO_MEDIA *Media; - EFI_BLOCK_RESET_EX Reset; - EFI_BLOCK_READ_EX ReadBlocksEx; - EFI_BLOCK_WRITE_EX WriteBlocksEx; - EFI_BLOCK_FLUSH_EX FlushBlocksEx; -} EFI_BLOCK_IO2_PROTOCOL; - -// -// Disk Block IO protocol -// - -#define EFI_DISK_IO_PROTOCOL_GUID \ - { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL_GUID - -#define EFI_DISK_IO_PROTOCOL_REVISION 0x00010000 -#define EFI_DISK_IO_INTERFACE_REVISION EFI_DISK_IO_PROTOCOL_REVISION - -INTERFACE_DECL(_EFI_DISK_IO_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_DISK_READ) ( - IN struct _EFI_DISK_IO_PROTOCOL *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_PROTOCOL *This, - IN UINT32 MediaId, - IN UINT64 Offset, - IN UINTN BufferSize, - IN VOID *Buffer - ); - - -typedef struct _EFI_DISK_IO_PROTOCOL { - UINT64 Revision; - EFI_DISK_READ ReadDisk; - EFI_DISK_WRITE WriteDisk; -} EFI_DISK_IO_PROTOCOL; - -typedef struct _EFI_DISK_IO_PROTOCOL _EFI_DISK_IO; -typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO; - - -#define EFI_DISK_IO2_PROTOCOL_GUID \ - { 0x151c8eae, 0x7f2c, 0x472c, {0x9e, 0x54, 0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88} } - -#define EFI_DISK_IO2_PROTOCOL_REVISION 0x00020000 - -INTERFACE_DECL(_EFI_DISK_IO2_PROTOCOL); - -typedef struct { - EFI_EVENT Event; - EFI_STATUS TransactionStatus; -} EFI_DISK_IO2_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_DISK_CANCEL_EX) ( - IN struct _EFI_DISK_IO2_PROTOCOL *This - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_DISK_READ_EX) ( - IN struct _EFI_DISK_IO2_PROTOCOL *This, - IN UINT32 MediaId, - IN UINT64 Offset, - IN OUT EFI_DISK_IO2_TOKEN *Token, - IN UINTN BufferSize, - OUT VOID *Buffer - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_DISK_WRITE_EX) ( - IN struct _EFI_DISK_IO2_PROTOCOL *This, - IN UINT32 MediaId, - IN UINT64 Offset, - IN OUT EFI_DISK_IO2_TOKEN *Token, - IN UINTN BufferSize, - IN VOID *Buffer - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_DISK_FLUSH_EX) ( - IN struct _EFI_DISK_IO2_PROTOCOL *This, - IN OUT EFI_DISK_IO2_TOKEN *Token - ); - -typedef struct _EFI_DISK_IO2_PROTOCOL { - UINT64 Revision; - EFI_DISK_CANCEL_EX Cancel; - EFI_DISK_READ_EX ReadDiskEx; - EFI_DISK_WRITE_EX WriteDiskEx; - EFI_DISK_FLUSH_EX FlushDiskEx; -} EFI_DISK_IO2_PROTOCOL; - -// -// Simple file system protocol -// - -#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ - { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_SIMPLE_FILE_SYSTEM_PROTOCOL); -INTERFACE_DECL(_EFI_FILE_HANDLE); - -typedef -EFI_STATUS -(EFIAPI *EFI_VOLUME_OPEN) ( - IN struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, - OUT struct _EFI_FILE_HANDLE **Root - ); - -#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000 -#define EFI_FILE_IO_INTERFACE_REVISION EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION - -typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL { - UINT64 Revision; - EFI_VOLUME_OPEN OpenVolume; -} EFI_SIMPLE_FILE_SYSTEM_PROTOCOL; - -typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL _EFI_FILE_IO_INTERFACE; -typedef EFI_SIMPLE_FILE_SYSTEM_PROTOCOL 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 - ); - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; - UINTN BufferSize; - VOID *Buffer; -} EFI_FILE_IO_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_FILE_OPEN_EX)( - IN struct _EFI_FILE_HANDLE *File, - OUT struct _EFI_FILE_HANDLE **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes, - IN OUT EFI_FILE_IO_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_FILE_READ_EX) ( - IN struct _EFI_FILE_HANDLE *File, - IN OUT EFI_FILE_IO_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_FILE_WRITE_EX) ( - IN struct _EFI_FILE_HANDLE *File, - IN OUT EFI_FILE_IO_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_FILE_FLUSH_EX) ( - IN struct _EFI_FILE_HANDLE *File, - IN OUT EFI_FILE_IO_TOKEN *Token - ); - -#define EFI_FILE_PROTOCOL_REVISION 0x00010000 -#define EFI_FILE_PROTOCOL_REVISION2 0x00020000 -#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2 -#define EFI_FILE_HANDLE_REVISION EFI_FILE_PROTOCOL_REVISION - -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_OPEN_EX OpenEx; - EFI_FILE_READ_EX ReadEx; - EFI_FILE_WRITE_EX WriteEx; - EFI_FILE_FLUSH_EX FlushEx; -} EFI_FILE_PROTOCOL, *EFI_FILE_HANDLE; - -typedef EFI_FILE_PROTOCOL EFI_FILE; - - -// -// 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 EFI_LOAD_FILE_PROTOCOL_GUID \ - { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } -#define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_LOAD_FILE_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_LOAD_FILE) ( - IN struct _EFI_LOAD_FILE_PROTOCOL *This, - IN EFI_DEVICE_PATH *FilePath, - IN BOOLEAN BootPolicy, - IN OUT UINTN *BufferSize, - IN VOID *Buffer OPTIONAL - ); - -typedef struct _EFI_LOAD_FILE_PROTOCOL { - EFI_LOAD_FILE LoadFile; -} EFI_LOAD_FILE_PROTOCOL; - -typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE; -typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE; - -// -// Device IO protocol -// - -#define EFI_DEVICE_IO_PROTOCOL_GUID \ - { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } -#define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_DEVICE_IO_PROTOCOL); - -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_PROTOCOL *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_PROTOCOL *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_PROTOCOL *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_PROTOCOL *This, - IN VOID *Mapping - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IO_ALLOCATE_BUFFER) ( - IN struct _EFI_DEVICE_IO_PROTOCOL *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_PROTOCOL *This - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_IO_FREE_BUFFER) ( - IN struct _EFI_DEVICE_IO_PROTOCOL *This, - IN UINTN Pages, - IN EFI_PHYSICAL_ADDRESS HostAddress - ); - -typedef struct _EFI_DEVICE_IO_PROTOCOL { - 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_PROTOCOL; - -typedef struct _EFI_DEVICE_IO_PROTOCOL _EFI_DEVICE_IO_INTERFACE; -typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE; - -// -// Unicode Collation protocol -// - -#define EFI_UNICODE_COLLATION_PROTOCOL_GUID \ - { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } -#define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID - -#define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff) -#define UNICODE_BYTE_ORDER_MARK EFI_UNICODE_BYTE_ORDER_MARK - -INTERFACE_DECL(_EFI_UNICODE_COLLATION_PROTOCOL); - -typedef -INTN -(EFIAPI *EFI_UNICODE_STRICOLL) ( - IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *s1, - IN CHAR16 *s2 - ); - -typedef -BOOLEAN -(EFIAPI *EFI_UNICODE_METAIMATCH) ( - IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *String, - IN CHAR16 *Pattern - ); - -typedef -VOID -(EFIAPI *EFI_UNICODE_STRLWR) ( - IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, - IN OUT CHAR16 *Str - ); - -typedef -VOID -(EFIAPI *EFI_UNICODE_STRUPR) ( - IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, - IN OUT CHAR16 *Str - ); - -typedef -VOID -(EFIAPI *EFI_UNICODE_FATTOSTR) ( - IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, - IN UINTN FatSize, - IN CHAR8 *Fat, - OUT CHAR16 *String - ); - -typedef -BOOLEAN -(EFIAPI *EFI_UNICODE_STRTOFAT) ( - IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This, - IN CHAR16 *String, - IN UINTN FatSize, - OUT CHAR8 *Fat - ); - -// -// Hash Protocol -// -#define EFI_HASH_PROTOCOL_GUID \ - { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 } } -#define HASH_PROTOCOL EFI_HASH_PROTOCOL_GUID - -#define EFI_HASH_ALGORITHM_SHA1_GUID \ - { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 } } // Deprecated -#define EFI_HASH_ALGORITHM_SHA1 EFI_HASH_ALGORITHM_SHA1_GUID - -#define EFI_HASH_ALGORITHM_SHA224_GUID \ - { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B } } // Deprecated -#define EFI_HASH_ALGORITHM_SHA224 EFI_HASH_ALGORITHM_SHA224_GUID - -#define EFI_HASH_ALGORITHM_SHA256_GUID \ - { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 } } // Deprecated -#define EFI_HASH_ALGORITHM_SHA256 EFI_HASH_ALGORITHM_SHA256_GUID - -#define EFI_HASH_ALGORITHM_SHA384_GUID \ - { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A } } // Deprecated -#define EFI_HASH_ALGORITHM_SHA384 EFI_HASH_ALGORITHM_SHA384_GUID - -#define EFI_HASH_ALGORITHM_SHA512_GUID \ - { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 } } // Deprecated -#define EFI_HASH_ALGORITHM_SHA512 EFI_HASH_ALGORITHM_SHA512_GUID - -#define EFI_HASH_ALGORITHM_MD5_GUID \ - { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 } } // Deprecated -#define EFI_HASH_ALGORITHM_MD5 EFI_HASH_ALGORITHM_MD5_GUID - -#define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \ - { 0x24C5DC2F, 0x53E2, 0x40CA, { 0x9E, 0xD6, 0xA5, 0xD9, 0xA4, 0x9F, 0x46, 0x3B } } -#define EFI_HASH_ALGORITHM_SHA1_NOPAD EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID - -#define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \ - { 0x8628752A, 0x6CB7, 0x4814, { 0x96, 0xFC, 0x24, 0xA8, 0x15, 0xAC, 0x22, 0x26 } } -#define EFI_HASH_ALGORITHM_SHA256_NOPAD EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID - - -INTERFACE_DECL(_EFI_HASH_PROTOCOL); - -typedef UINT8 EFI_MD5_HASH[16]; -typedef UINT8 EFI_SHA1_HASH[20]; -typedef UINT8 EFI_SHA224_HASH[28]; -typedef UINT8 EFI_SHA256_HASH[32]; -typedef UINT8 EFI_SHA384_HASH[48]; -typedef UINT8 EFI_SHA512_HASH[64]; -typedef union _EFI_HASH_OUTPUT { - EFI_MD5_HASH *Md5Hash; - EFI_SHA1_HASH *Sha1Hash; - EFI_SHA224_HASH *Sha224Hash; - EFI_SHA256_HASH *Sha256Hash; - EFI_SHA384_HASH *Sha384Hash; - EFI_SHA512_HASH *Sha512Hash; -} EFI_HASH_OUTPUT; - -typedef -EFI_STATUS -(EFIAPI *EFI_HASH_GET_HASH_SIZE) ( - IN CONST struct _EFI_HASH_PROTOCOL *This, - IN CONST EFI_GUID *HashAlgorithm, - OUT UINTN *HashSize); - -typedef -EFI_STATUS -(EFIAPI *EFI_HASH_HASH) ( - IN CONST struct _EFI_HASH_PROTOCOL *This, - IN CONST EFI_GUID *HashAlgorithm, - IN BOOLEAN Extend, - IN CONST UINT8 *Message, - IN UINT64 MessageSize, - IN OUT EFI_HASH_OUTPUT *Hash); - -typedef struct _EFI_HASH_PROTOCOL { - EFI_HASH_GET_HASH_SIZE GetHashSize; - EFI_HASH_HASH Hash; -} EFI_HASH_PROTOCOL; - -typedef struct _EFI_HASH_PROTOCOL _EFI_HASH; -typedef EFI_HASH_PROTOCOL EFI_HASH; - - -typedef struct _EFI_UNICODE_COLLATION_PROTOCOL { - - // 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_PROTOCOL; - -typedef EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_INTERFACE; - -/* Graphics output protocol */ -#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \ - { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } } -typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL; - -typedef struct { - UINT32 RedMask; - UINT32 GreenMask; - UINT32 BlueMask; - UINT32 ReservedMask; -} EFI_PIXEL_BITMASK; - -typedef enum { - PixelRedGreenBlueReserved8BitPerColor, - PixelBlueGreenRedReserved8BitPerColor, - PixelBitMask, - PixelBltOnly, - PixelFormatMax -} EFI_GRAPHICS_PIXEL_FORMAT; - -typedef struct { - UINT32 Version; - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - EFI_GRAPHICS_PIXEL_FORMAT PixelFormat; - EFI_PIXEL_BITMASK PixelInformation; - UINT32 PixelsPerScanLine; -} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION; - -/** - Return the current video mode information. - - @param This Protocol instance pointer. - @param ModeNumber The mode number to return information on. - @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer. - @param Info A pointer to callee allocated buffer that returns information about ModeNumber. - - @retval EFI_SUCCESS Mode information returned. - @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small. - @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode. - @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode () - @retval EFI_INVALID_PARAMETER One of the input args was NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) ( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber, - OUT UINTN *SizeOfInfo, - OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info - ) -; - -/** - Return the current video mode information. - - @param This Protocol instance pointer. - @param ModeNumber The mode number to be set. - - @retval EFI_SUCCESS Graphics mode was changed. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED ModeNumber is not supported by this device. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) ( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber - ); - -typedef struct { - UINT8 Blue; - UINT8 Green; - UINT8 Red; - UINT8 Reserved; -} EFI_GRAPHICS_OUTPUT_BLT_PIXEL; - -typedef union { - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel; - UINT32 Raw; -} EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION; - -typedef enum { - EfiBltVideoFill, - EfiBltVideoToBltBuffer, - EfiBltBufferToVideo, - EfiBltVideoToVideo, - EfiGraphicsOutputBltOperationMax -} EFI_GRAPHICS_OUTPUT_BLT_OPERATION; - -/** - The following table defines actions for BltOperations: - - EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY) - directly to every pixel of the video display rectangle - (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). - Only one pixel will be used from the BltBuffer. Delta is NOT used. - - EfiBltVideoToBltBuffer - Read data from the video display rectangle - (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in - the BltBuffer rectangle (DestinationX, DestinationY ) - (DestinationX + Width, DestinationY + Height). If DestinationX or - DestinationY is not zero then Delta must be set to the length in bytes - of a row in the BltBuffer. - - EfiBltBufferToVideo - Write data from the BltBuffer rectangle - (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the - video display rectangle (DestinationX, DestinationY) - (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is - not zero then Delta must be set to the length in bytes of a row in the - BltBuffer. - - EfiBltVideoToVideo - Copy from the video display rectangle (SourceX, SourceY) - (SourceX + Width, SourceY + Height) .to the video display rectangle - (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). - The BltBuffer and Delta are not used in this mode. - - @param This Protocol instance pointer. - @param BltBuffer Buffer containing data to blit into video buffer. This - buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) - @param BltOperation Operation to perform on BlitBuffer and video memory - @param SourceX X coordinate of source for the BltBuffer. - @param SourceY Y coordinate of source for the BltBuffer. - @param DestinationX X coordinate of destination for the BltBuffer. - @param DestinationY Y coordinate of destination for the BltBuffer. - @param Width Width of rectangle in BltBuffer in pixels. - @param Height Hight of rectangle in BltBuffer in pixels. - @param Delta OPTIONAL - - @retval EFI_SUCCESS The Blt operation completed. - @retval EFI_INVALID_PARAMETER BltOperation is not valid. - @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) ( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL - IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, - IN UINTN SourceX, - IN UINTN SourceY, - IN UINTN DestinationX, - IN UINTN DestinationY, - IN UINTN Width, - IN UINTN Height, - IN UINTN Delta OPTIONAL - ); - -typedef struct { - UINT32 MaxMode; - UINT32 Mode; - EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info; - UINTN SizeOfInfo; - EFI_PHYSICAL_ADDRESS FrameBufferBase; - UINTN FrameBufferSize; -} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE; - -struct _EFI_GRAPHICS_OUTPUT_PROTOCOL { - EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode; - EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode; - EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt; - EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode; -}; - - - -/* - * EFI EDID Discovered Protocol - * UEFI Specification Version 2.5 Section 11.9 - */ -#define EFI_EDID_DISCOVERED_PROTOCOL_GUID \ - { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8a, 0xD0, 0x6C, 0x1A, 0x66, 0xAA} } - -typedef struct _EFI_EDID_DISCOVERED_PROTOCOL { - UINT32 SizeOfEdid; - UINT8 *Edid; -} EFI_EDID_DISCOVERED_PROTOCOL; - - - -/* - * EFI EDID Active Protocol - * UEFI Specification Version 2.5 Section 11.9 - */ -#define EFI_EDID_ACTIVE_PROTOCOL_GUID \ - { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86} } - -typedef struct _EFI_EDID_ACTIVE_PROTOCOL { - UINT32 SizeOfEdid; - UINT8 *Edid; -} EFI_EDID_ACTIVE_PROTOCOL; - - - -/* - * EFI EDID Override Protocol - * UEFI Specification Version 2.5 Section 11.9 - */ -#define EFI_EDID_OVERRIDE_PROTOCOL_GUID \ - { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5} } - -INTERFACE_DECL(_EFI_EDID_OVERRIDE_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID) ( - IN struct _EFI_EDID_OVERRIDE_PROTOCOL *This, - IN EFI_HANDLE *ChildHandle, - OUT UINT32 *Attributes, - IN OUT UINTN *EdidSize, - IN OUT UINT8 **Edid); - -typedef struct _EFI_EDID_OVERRIDE_PROTOCOL { - EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid; -} EFI_EDID_OVERRIDE_PROTOCOL; - - - -INTERFACE_DECL(_EFI_SERVICE_BINDING); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) ( - IN struct _EFI_SERVICE_BINDING *This, - IN EFI_HANDLE *ChildHandle - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) ( - IN struct _EFI_SERVICE_BINDING *This, - IN EFI_HANDLE ChildHandle - ); - -typedef struct _EFI_SERVICE_BINDING { - EFI_SERVICE_BINDING_CREATE_CHILD CreateChild; - EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild; -} EFI_SERVICE_BINDING; - - - -/* - * EFI Driver Binding Protocol - * UEFI Specification Version 2.5 Section 10.1 - */ -#define EFI_DRIVER_BINDING_PROTOCOL_GUID \ - { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71} } -#define DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_DRIVER_BINDING_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED) ( - IN struct _EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START) ( - IN struct _EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL); - -typedef -EFI_STATUS -(EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP) ( - IN struct _EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL); - -typedef struct _EFI_DRIVER_BINDING_PROTOCOL { - EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported; - EFI_DRIVER_BINDING_PROTOCOL_START Start; - EFI_DRIVER_BINDING_PROTOCOL_STOP Stop; - UINT32 Version; - EFI_HANDLE ImageHandle; - EFI_HANDLE DriverBindingHandle; -} EFI_DRIVER_BINDING_PROTOCOL; - -typedef struct _EFI_DRIVER_BINDING_PROTOCOL _EFI_DRIVER_BINDING; -typedef EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING; - - -/* - * Backwards compatibility with older GNU-EFI versions. Deprecated. - */ -#define EFI_DRIVER_SUPPORTED EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED -#define EFI_DRIVER_START EFI_DRIVER_BINDING_PROTOCOL_START -#define EFI_DRIVER_STOP EFI_DRIVER_BINDING_PROTOCOL_STOP - - - -/* - * EFI Component Name Protocol - * Deprecated - use EFI Component Name 2 Protocol instead - */ -#define EFI_COMPONENT_NAME_PROTOCOL_GUID \ - {0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} } -#define COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_COMPONENT_NAME_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) ( - IN struct _EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName); - -typedef -EFI_STATUS -(EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) ( - IN struct _EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName); - -typedef struct _EFI_COMPONENT_NAME_PROTOCOL { - EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName; - EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName; - CHAR8 *SupportedLanguages; -} EFI_COMPONENT_NAME_PROTOCOL; - -typedef struct _EFI_COMPONENT_NAME_PROTOCOL _EFI_COMPONENT_NAME; -typedef EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME; - - -/* - * EFI Component Name 2 Protocol - * UEFI Specification Version 2.5 Section 10.5 - */ -#define EFI_COMPONENT_NAME2_PROTOCOL_GUID \ - {0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14} } -#define COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_COMPONENT_NAME2_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ( - IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName); - -typedef -EFI_STATUS -(EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ( - IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName); - -typedef struct _EFI_COMPONENT_NAME2_PROTOCOL { - EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName; - EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName; - CHAR8 *SupportedLanguages; -} EFI_COMPONENT_NAME2_PROTOCOL; - -typedef struct _EFI_COMPONENT_NAME2_PROTOCOL _EFI_COMPONENT_NAME2; -typedef EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2; - - - -/* - * EFI Loaded Image Protocol - * UEFI Specification Version 2.5 Section 8.1 - */ -#define EFI_LOADED_IMAGE_PROTOCOL_GUID \ - { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } -#define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID - -#define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000 -#define EFI_IMAGE_INFORMATION_REVISION EFI_LOADED_IMAGE_PROTOCOL_REVISION - -typedef -EFI_STATUS -(EFIAPI *EFI_IMAGE_UNLOAD) ( - IN EFI_HANDLE ImageHandle - ); - -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_PROTOCOL; - -typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE; - - - -/* - * Random Number Generator Protocol - * UEFI Specification Version 2.5 Section 35.5 - */ -#define EFI_RNG_PROTOCOL_GUID \ - { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44} } - -typedef EFI_GUID EFI_RNG_ALGORITHM; - -#define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID \ - {0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96} } - -#define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID \ - {0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7} } - -#define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID \ - {0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e} } - -#define EFI_RNG_ALGORITHM_X9_31_3DES_GUID \ - {0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46} } - -#define EFI_RNG_ALGORITHM_X9_31_AES_GUID \ - {0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9} } - -#define EFI_RNG_ALGORITHM_RAW \ - {0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61} } - -INTERFACE_DECL(_EFI_RNG_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_RNG_GET_INFO) ( - IN struct _EFI_RNG_PROTOCOL *This, - IN OUT UINTN *RNGAlgorithmListSize, - OUT EFI_RNG_ALGORITHM *RNGAlgorithmList -); - -typedef -EFI_STATUS -(EFIAPI *EFI_RNG_GET_RNG) ( - IN struct _EFI_RNG_PROTOCOL *This, - IN EFI_RNG_ALGORITHM *RNGAlgorithm, OPTIONAL - IN UINTN RNGValueLength, - OUT UINT8 *RNGValue -); - -typedef struct _EFI_RNG_PROTOCOL { - EFI_RNG_GET_INFO GetInfo; - EFI_RNG_GET_RNG GetRNG; -} EFI_RNG_PROTOCOL; - - -// -// EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL -// - -#define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID \ - { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } - -INTERFACE_DECL(_EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER) ( -IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, -IN EFI_HANDLE ControllerHandle, -IN OUT EFI_HANDLE *DriverImageHandle); - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH) ( -IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, -IN EFI_HANDLE ControllerHandle, -IN OUT EFI_DEVICE_PATH **DriverImagePath); - -typedef -EFI_STATUS -(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED) ( -IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, -IN EFI_HANDLE ControllerHandle, -IN EFI_DEVICE_PATH *DriverImagePath, -IN EFI_HANDLE DriverImageHandle); - -typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL { - EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver; - EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath; - EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded; -} EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL; - -// -// EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL -// - -#define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID \ - { 0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65} } - -INTERFACE_DECL(_EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER) ( -IN struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This, -IN OUT EFI_HANDLE *DriverImageHandle); - -typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL { - EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver; -} EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; - -// -// EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL -// - -#define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID \ - { 0xb1ee129e, 0xda36, 0x4181, {0x91, 0xf8, 0x04, 0xa4, 0x92, 0x37, 0x66, 0xa7} } - -INTERFACE_DECL(_EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL); - -typedef -UINT32 -(EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION) ( -IN struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This); - -typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL { - EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion; -} EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; - -// -// EFI_EBC_PROTOCOL -// - -#define EFI_EBC_INTERPRETER_PROTOCOL_GUID \ - {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} } - -#define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_EBC_PROTOCOL); - -typedef -EFI_STATUS -(EFIAPI *EFI_EBC_CREATE_THUNK)( - IN struct _EFI_EBC_PROTOCOL *This, - IN EFI_HANDLE ImageHandle, - IN VOID *EbcEntryPoint, - OUT VOID **Thunk); - -typedef -EFI_STATUS -(EFIAPI *EFI_EBC_UNLOAD_IMAGE)( - IN struct _EFI_EBC_PROTOCOL *This, - IN EFI_HANDLE ImageHandle); - -typedef -EFI_STATUS -(EFIAPI *EBC_ICACHE_FLUSH)( - IN EFI_PHYSICAL_ADDRESS Start, - IN UINT64 Length); - -typedef -EFI_STATUS -(EFIAPI *EFI_EBC_REGISTER_ICACHE_FLUSH)( - IN struct _EFI_EBC_PROTOCOL *This, - IN EBC_ICACHE_FLUSH Flush); - -typedef -EFI_STATUS -(EFIAPI *EFI_EBC_GET_VERSION)( - IN struct _EFI_EBC_PROTOCOL *This, - IN OUT UINT64 *Version); - -typedef struct _EFI_EBC_PROTOCOL { - EFI_EBC_CREATE_THUNK CreateThunk; - EFI_EBC_UNLOAD_IMAGE UnloadImage; - EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush; - EFI_EBC_GET_VERSION GetVersion; -} EFI_EBC_PROTOCOL; - -#endif diff --git a/efi/inc/efipxebc.h b/efi/inc/efipxebc.h deleted file mode 100644 index 3760c7c..0000000 --- a/efi/inc/efipxebc.h +++ /dev/null @@ -1,482 +0,0 @@ -#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_GUID \ - { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } - -INTERFACE_DECL(_EFI_PXE_BASE_CODE_PROTOCOL); - -#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; - -typedef struct { - UINT32 MessageType:8; - UINT32 TransactionId:24; - UINT8 DhcpOptions[1024]; -} 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_PROTOCOL *This, - IN BOOLEAN UseIpv6 - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_PXE_BASE_CODE_STOP) ( - IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_PXE_BASE_CODE_DHCP) ( - IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This, - IN BOOLEAN SortOffers - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) ( - IN struct _EFI_PXE_BASE_CODE_PROTOCOL *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_PROTOCOL *This, - IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, - IN OUT VOID *BufferPtr OPTIONAL, - IN BOOLEAN Overwrite, - IN OUT UINT64 *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_PROTOCOL *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_PROTOCOL *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_PROTOCOL *This, - IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_PXE_BASE_CODE_ARP) ( - IN struct _EFI_PXE_BASE_CODE_PROTOCOL *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_PROTOCOL *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_PROTOCOL *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_PROTOCOL *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_PROTOCOL_REVISION 0x00010000 -#define EFI_PXE_BASE_CODE_INTERFACE_REVISION EFI_PXE_BASE_CODE_PROTOCOL_REVISION - -typedef struct _EFI_PXE_BASE_CODE_PROTOCOL { - 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_PROTOCOL; - -// Note: Because it conflicted with the EDK2 struct name, the -// 'EFI_PXE_BASE_CODE_PROTOCOL' GUID definition, from older -// versions of gnu-efi, is now obsoleted. -// Use 'EFI_PXE_BASE_CODE_PROTOCOL_GUID' instead. - -typedef struct _EFI_PXE_BASE_CODE_PROTOCOL _EFI_PXE_BASE_CODE; -typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE; - -// -// Call Back Definitions -// - -#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID \ - { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } - -// -// Revision Number -// - -#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION 0x00010000 -#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION - -INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL); - -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_PROTOCOL *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_PROTOCOL { - UINT64 Revision; - EFI_PXE_CALLBACK Callback; -} EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL; - -// Note: Because it conflicted with the EDK2 struct name, the -// 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL' GUID definition, from -// older versions of gnu-efi, is now obsoleted. -// Use 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID' instead. - -typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL _EFI_PXE_BASE_CODE_CALLBACK; -typedef EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL EFI_PXE_BASE_CODE_CALLBACK; - -#endif /* _EFIPXEBC_H */ diff --git a/efi/inc/efirtlib.h b/efi/inc/efirtlib.h deleted file mode 100644 index 49d0b4d..0000000 --- a/efi/inc/efirtlib.h +++ /dev/null @@ -1,179 +0,0 @@ -#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 CONST VOID *Src, - IN UINTN len - ); - -INTN -RUNTIMEFUNCTION -RtCompareMem ( - IN CONST VOID *Dest, - IN CONST VOID *Src, - IN UINTN len - ); - -INTN -RUNTIMEFUNCTION -RtStrCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2 - ); - - -VOID -RUNTIMEFUNCTION -RtStrCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ); - -VOID -RUNTIMEFUNCTION -RtStrnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ); - -CHAR16 * -RUNTIMEFUNCTION -RtStpCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ); - -CHAR16 * -RUNTIMEFUNCTION -RtStpnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ); - -VOID -RUNTIMEFUNCTION -RtStrCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ); - -VOID -RUNTIMEFUNCTION -RtStrnCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ); - -UINTN -RUNTIMEFUNCTION -RtStrLen ( - IN CONST CHAR16 *s1 - ); - -UINTN -RUNTIMEFUNCTION -RtStrnLen ( - IN CONST CHAR16 *s1, - IN UINTN Len - ); - -UINTN -RUNTIMEFUNCTION -RtStrSize ( - IN CONST 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 diff --git a/efi/inc/efiser.h b/efi/inc/efiser.h deleted file mode 100644 index 45a463e..0000000 --- a/efi/inc/efiser.h +++ /dev/null @@ -1,136 +0,0 @@ -#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 EFI_SERIAL_IO_PROTOCOL_GUID \ - { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} } -#define SERIAL_IO_PROTOCOL EFI_SERIAL_IO_PROTOCOL_GUID - -INTERFACE_DECL(_EFI_SERIAL_IO_PROTOCOL); - -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 _EFI_SERIAL_IO_PROTOCOL *This - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) ( - IN struct _EFI_SERIAL_IO_PROTOCOL *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 _EFI_SERIAL_IO_PROTOCOL *This, - IN UINT32 Control - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) ( - IN struct _EFI_SERIAL_IO_PROTOCOL *This, - OUT UINT32 *Control - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERIAL_WRITE) ( - IN struct _EFI_SERIAL_IO_PROTOCOL *This, - IN OUT UINTN *BufferSize, - IN VOID *Buffer - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_SERIAL_READ) ( - IN struct _EFI_SERIAL_IO_PROTOCOL *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 _EFI_SERIAL_IO_PROTOCOL { - 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; -} EFI_SERIAL_IO_PROTOCOL; - -typedef struct _EFI_SERIAL_IO_PROTOCOL _SERIAL_IO_INTERFACE; -typedef EFI_SERIAL_IO_PROTOCOL SERIAL_IO_INTERFACE; - -#endif - diff --git a/efi/inc/efisetjmp.h b/efi/inc/efisetjmp.h deleted file mode 100644 index 58a93a7..0000000 --- a/efi/inc/efisetjmp.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef GNU_EFI_SETJMP_H -#define GNU_EFI_SETJMP_H - -#include "eficompiler.h" -#include "efisetjmp_arch.h" - -extern UINTN setjmp(jmp_buf *env) __attribute__((returns_twice)); -extern VOID longjmp(jmp_buf *env, UINTN value) __attribute__((noreturn)); - -#endif /* GNU_EFI_SETJMP_H */ diff --git a/efi/inc/efishellintf.h b/efi/inc/efishellintf.h deleted file mode 100644 index a2dfdf2..0000000 --- a/efi/inc/efishellintf.h +++ /dev/null @@ -1,94 +0,0 @@ -/** @file - SHELL_INTERFACE_PROTOCOL from EDK shell (no spec). - - Shell Interface - additional information (over image_info) provided - to an application started by the shell. - - ConIo provides a file-style interface to the console. - - The shell interface's and data (including ConIo) are only valid during - the applications Entry Point. Once the application returns from it's - entry point the data is freed by the invoking shell. - - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ -/* - * This is based on ShellPkg/Include/Protocol/EfiShellInterface.h from EDK II. - */ - -#ifndef _SHELLINTERFACE_H_ -#define _SHELLINTERFACE_H_ - - -#define SHELL_INTERFACE_PROTOCOL_GUID \ - { \ - 0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} \ - } - -/// -/// Bit definitions for EFI_SHELL_ARG_INFO -/// -typedef enum { - ARG_NO_ATTRIB = 0x0, - ARG_IS_QUOTED = 1<<0, - ARG_PARTIALLY_QUOTED = 1<<1, - ARG_FIRST_HALF_QUOTED = 1<<2, - ARG_FIRST_CHAR_IS_ESC = 1<<3 -} EFI_SHELL_ARG_INFO_TYPES; - -/// -/// Attributes for an argument. -/// -typedef struct _EFI_SHELL_ARG_INFO { - UINT32 Attributes; -} EFI_SHELL_ARG_INFO; - -/// -/// This protocol provides access to additional information about a shell application. -/// -typedef struct { - /// - /// Handle back to original image handle & image information. - /// - EFI_HANDLE ImageHandle; - EFI_LOADED_IMAGE *Info; - - /// - /// Parsed arg list converted more C-like format. - /// - CHAR16 **Argv; - UINTN Argc; - - /// - /// Storage for file redirection args after parsing. - /// - CHAR16 **RedirArgv; - UINTN RedirArgc; - - /// - /// A file style handle for console io. - /// - EFI_FILE *StdIn; - EFI_FILE *StdOut; - EFI_FILE *StdErr; - - /// - /// List of attributes for each argument. - /// - EFI_SHELL_ARG_INFO *ArgInfo; - - /// - /// Whether we are echoing. - /// - BOOLEAN EchoOn; -} EFI_SHELL_INTERFACE; - -#endif diff --git a/efi/inc/efishellparm.h b/efi/inc/efishellparm.h deleted file mode 100644 index 78a3254..0000000 --- a/efi/inc/efishellparm.h +++ /dev/null @@ -1,63 +0,0 @@ -/** @file - EFI_SHELL_PARAMETERS_PROTOCOL as defined in the UEFI Shell 2.0 specification. - - Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ -/* - * This is based on ShellPkg/Include/Protocol/EfiShellParameters.h from EDK II. - */ - -#ifndef __EFI_SHELL_PARAMETERS_PROTOCOL__ -#define __EFI_SHELL_PARAMETERS_PROTOCOL__ - - -// EDK2's ShellBase.h -typedef VOID *SHELL_FILE_HANDLE; - -#define EFI_SHELL_PARAMETERS_PROTOCOL_GUID \ - { \ - 0x752f3136, 0x4e16, 0x4fdc, { 0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca } \ - } - -typedef struct _EFI_SHELL_PARAMETERS_PROTOCOL { - /// - /// Points to an Argc-element array of points to NULL-terminated strings containing - /// the command-line parameters. The first entry in the array is always the full file - /// path of the executable. Any quotation marks that were used to preserve - /// whitespace have been removed. - /// - CHAR16 **Argv; - - /// - /// The number of elements in the Argv array. - /// - UINTN Argc; - - /// - /// The file handle for the standard input for this executable. This may be different - /// from the ConInHandle in EFI_SYSTEM_TABLE. - /// - SHELL_FILE_HANDLE StdIn; - - /// - /// The file handle for the standard output for this executable. This may be different - /// from the ConOutHandle in EFI_SYSTEM_TABLE. - /// - SHELL_FILE_HANDLE StdOut; - - /// - /// The file handle for the standard error output for this executable. This may be - /// different from the StdErrHandle in EFI_SYSTEM_TABLE. - /// - SHELL_FILE_HANDLE StdErr; -} EFI_SHELL_PARAMETERS_PROTOCOL; - -#endif diff --git a/efi/inc/efistdarg.h b/efi/inc/efistdarg.h deleted file mode 100644 index bb04b31..0000000 --- a/efi/inc/efistdarg.h +++ /dev/null @@ -1,33 +0,0 @@ -#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 - ---*/ - -#ifndef GNU_EFI_USE_EXTERNAL_STDARG -typedef __builtin_va_list va_list; - -# define va_start(v,l) __builtin_va_start(v,l) -# define va_end(v) __builtin_va_end(v) -# define va_arg(v,l) __builtin_va_arg(v,l) -# define va_copy(d,s) __builtin_va_copy(d,s) -#else -# include -#endif - -#endif diff --git a/efi/inc/efitcp.h b/efi/inc/efitcp.h deleted file mode 100644 index 6c5df7f..0000000 --- a/efi/inc/efitcp.h +++ /dev/null @@ -1,391 +0,0 @@ -#ifndef _EFI_TCP_H -#define _EFI_TCP_H - -/*++ -Copyright (c) 2013 Intel Corporation - ---*/ - -#define EFI_TCP4_SERVICE_BINDING_PROTOCOL \ - { 0x00720665, 0x67eb, 0x4a99, {0xba, 0xf7, 0xd3, 0xc3, 0x3a, 0x1c,0x7c, 0xc9}} - -#define EFI_TCP4_PROTOCOL \ - { 0x65530bc7, 0xa359, 0x410f, {0xb0, 0x10, 0x5a, 0xad, 0xc7, 0xec, 0x2b, 0x62}} - -#define EFI_TCP6_SERVICE_BINDING_PROTOCOL \ - { 0xec20eb79, 0x6c1a, 0x4664, {0x9a, 0xd, 0xd2, 0xe4, 0xcc, 0x16, 0xd6, 0x64}} - -#define EFI_TCP6_PROTOCOL \ - { 0x46e44855, 0xbd60, 0x4ab7, {0xab, 0xd, 0xa6, 0x79, 0xb9, 0x44, 0x7d, 0x77}} - -INTERFACE_DECL(_EFI_TCP4); -INTERFACE_DECL(_EFI_TCP6); - -typedef struct { - BOOLEAN UseDefaultAddress; - EFI_IPv4_ADDRESS StationAddress; - EFI_IPv4_ADDRESS SubnetMask; - UINT16 StationPort; - EFI_IPv4_ADDRESS RemoteAddress; - UINT16 RemotePort; - BOOLEAN ActiveFlag; -} EFI_TCP4_ACCESS_POINT; - -typedef struct { - UINT32 ReceiveBufferSize; - UINT32 SendBufferSize; - UINT32 MaxSynBackLog; - UINT32 ConnectionTimeout; - UINT32 DataRetries; - UINT32 FinTimeout; - UINT32 TimeWaitTimeout; - UINT32 KeepAliveProbes; - UINT32 KeepAliveTime; - UINT32 KeepAliveInterval; - BOOLEAN EnableNagle; - BOOLEAN EnableTimeStamp; - BOOLEAN EnableWindowScaling; - BOOLEAN EnableSelectiveAck; - BOOLEAN EnablePAthMtuDiscovery; -} EFI_TCP4_OPTION; - -typedef struct { - // Receiving Filters - // I/O parameters - UINT8 TypeOfService; - UINT8 TimeToLive; - - // Access Point - EFI_TCP4_ACCESS_POINT AccessPoint; - - // TCP Control Options - EFI_TCP4_OPTION *ControlOption; -} EFI_TCP4_CONFIG_DATA; - -typedef enum { - Tcp4StateClosed = 0, - Tcp4StateListen = 1, - Tcp4StateSynSent = 2, - Tcp4StateSynReceived = 3, - Tcp4StateEstablished = 4, - Tcp4StateFinWait1 = 5, - Tcp4StateFinWait2 = 6, - Tcp4StateClosing = 7, - Tcp4StateTimeWait = 8, - Tcp4StateCloseWait = 9, - Tcp4StateLastAck = 10 -} EFI_TCP4_CONNECTION_STATE; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_GET_MODE_DATA) ( - IN struct _EFI_TCP4 *This, - OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, - OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, - OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_CONFIGURE) ( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_ROUTES) ( - IN struct _EFI_TCP4 *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress -); - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; -} EFI_TCP4_COMPLETION_TOKEN; - -typedef struct { - EFI_TCP4_COMPLETION_TOKEN CompletionToken; -} EFI_TCP4_CONNECTION_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_CONNECT) ( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken - ); - -typedef struct { - EFI_TCP4_COMPLETION_TOKEN CompletionToken; - EFI_HANDLE NewChildHandle; -} EFI_TCP4_LISTEN_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_ACCEPT) ( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_LISTEN_TOKEN *ListenToken - ); - -#define EFI_CONNECTION_FIN EFIERR(104) -#define EFI_CONNECTION_RESET EFIERR(105) -#define EFI_CONNECTION_REFUSED EFIERR(106) - -typedef struct { - UINT32 FragmentLength; - VOID *FragmentBuffer; -} EFI_TCP4_FRAGMENT_DATA; - -typedef struct { - BOOLEAN UrgentFlag; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; -} EFI_TCP4_RECEIVE_DATA; - -typedef struct { - BOOLEAN Push; - BOOLEAN Urgent; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; -} EFI_TCP4_TRANSMIT_DATA; - -typedef struct { - EFI_TCP4_COMPLETION_TOKEN CompletionToken; - union { - EFI_TCP4_RECEIVE_DATA *RxData; - EFI_TCP4_TRANSMIT_DATA *TxData; - } Packet; -} EFI_TCP4_IO_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_TRANSMIT) ( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_IO_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_RECEIVE) ( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_IO_TOKEN *Token - ); - -typedef struct { - EFI_TCP4_COMPLETION_TOKEN CompletionToken; - BOOLEAN AbortOnClose; -} EFI_TCP4_CLOSE_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_CLOSE)( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_CLOSE_TOKEN *CloseToken - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_CANCEL)( - IN struct _EFI_TCP4 *This, - IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL -); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP4_POLL) ( - IN struct _EFI_TCP4 *This - ); - -typedef struct _EFI_TCP4 { - EFI_TCP4_GET_MODE_DATA GetModeData; - EFI_TCP4_CONFIGURE Configure; - EFI_TCP4_ROUTES Routes; - EFI_TCP4_CONNECT Connect; - EFI_TCP4_ACCEPT Accept; - EFI_TCP4_TRANSMIT Transmit; - EFI_TCP4_RECEIVE Receive; - EFI_TCP4_CLOSE Close; - EFI_TCP4_CANCEL Cancel; - EFI_TCP4_POLL Poll; -} EFI_TCP4; - -typedef enum { - Tcp6StateClosed = 0, - Tcp6StateListen = 1, - Tcp6StateSynSent = 2, - Tcp6StateSynReceived = 3, - Tcp6StateEstablished = 4, - Tcp6StateFinWait1 = 5, - Tcp6StateFinWait2 = 6, - Tcp6StateClosing = 7, - Tcp6StateTimeWait = 8, - Tcp6StateCloseWait = 9, - Tcp6StateLastAck = 10 -} EFI_TCP6_CONNECTION_STATE; - -typedef struct { - EFI_IPv6_ADDRESS StationAddress; - UINT16 StationPort; - EFI_IPv6_ADDRESS RemoteAddress; - UINT16 RemotePort; - BOOLEAN ActiveFlag; -} EFI_TCP6_ACCESS_POINT; - -typedef struct { - UINT32 ReceiveBufferSize; - UINT32 SendBufferSize; - UINT32 MaxSynBackLog; - UINT32 ConnectionTimeout; - UINT32 DataRetries; - UINT32 FinTimeout; - UINT32 TimeWaitTimeout; - UINT32 KeepAliveProbes; - UINT32 KeepAliveTime; - UINT32 KeepAliveInterval; - BOOLEAN EnableNagle; - BOOLEAN EnableTimeStamp; - BOOLEAN EnableWindbowScaling; - BOOLEAN EnableSelectiveAck; - BOOLEAN EnablePathMtuDiscovery; -} EFI_TCP6_OPTION; - -typedef struct { - UINT8 TrafficClass; - UINT8 HopLimit; - EFI_TCP6_ACCESS_POINT AccessPoint; - EFI_TCP6_OPTION *ControlOption; -} EFI_TCP6_CONFIG_DATA; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_GET_MODE_DATA) ( - IN struct _EFI_TCP6 *This, - OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, - OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_CONFIGURE) ( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL - ); - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; -} EFI_TCP6_COMPLETION_TOKEN; - -typedef struct { - EFI_TCP6_COMPLETION_TOKEN CompletionToken; -} EFI_TCP6_CONNECTION_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_CONNECT) ( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken - ); - -typedef struct { - EFI_TCP6_COMPLETION_TOKEN CompletionToken; - EFI_HANDLE NewChildHandle; -} EFI_TCP6_LISTEN_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_ACCEPT) ( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_LISTEN_TOKEN *ListenToken - ); - -typedef struct { - UINT32 FragmentLength; - VOID *FragmentBuffer; -} EFI_TCP6_FRAGMENT_DATA; - -typedef struct { - BOOLEAN UrgentFlag; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; -} EFI_TCP6_RECEIVE_DATA; - -typedef struct { - BOOLEAN Push; - BOOLEAN Urgent; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; -} EFI_TCP6_TRANSMIT_DATA; - -typedef struct { - EFI_TCP6_COMPLETION_TOKEN CompletionToken; - union { - EFI_TCP6_RECEIVE_DATA *RxData; - EFI_TCP6_TRANSMIT_DATA *TxData; - } Packet; -} EFI_TCP6_IO_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_TRANSMIT) ( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_IO_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_RECEIVE) ( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_IO_TOKEN *Token - ); - -typedef struct { - EFI_TCP6_COMPLETION_TOKEN CompletionToken; - BOOLEAN AbortOnClose; -} EFI_TCP6_CLOSE_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_CLOSE)( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_CLOSE_TOKEN *CloseToken - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_CANCEL)( - IN struct _EFI_TCP6 *This, - IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_TCP6_POLL) ( - IN struct _EFI_TCP6 *This - ); - -typedef struct _EFI_TCP6 { - EFI_TCP6_GET_MODE_DATA GetModeData; - EFI_TCP6_CONFIGURE Configure; - EFI_TCP6_CONNECT Connect; - EFI_TCP6_ACCEPT Accept; - EFI_TCP6_TRANSMIT Transmit; - EFI_TCP6_RECEIVE Receive; - EFI_TCP6_CLOSE Close; - EFI_TCP6_CANCEL Cancel; - EFI_TCP6_POLL Poll; -} EFI_TCP6; - -#endif /* _EFI_TCP_H */ diff --git a/efi/inc/efiudp.h b/efi/inc/efiudp.h deleted file mode 100644 index 7c8b467..0000000 --- a/efi/inc/efiudp.h +++ /dev/null @@ -1,272 +0,0 @@ -#ifndef _EFI_UDP_H -#define _EFI_UDP_H - - -/*++ -Copyright (c) 2013 Intel Corporation - ---*/ - -#define EFI_UDP4_SERVICE_BINDING_PROTOCOL \ - { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} } - -#define EFI_UDP4_PROTOCOL \ - { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} } - -#define EFI_UDP6_SERVICE_BINDING_PROTOCOL \ - { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} } - -#define EFI_UDP6_PROTOCOL \ - { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} } - -INTERFACE_DECL(_EFI_UDP4); -INTERFACE_DECL(_EFI_UDP6); - -typedef struct { - BOOLEAN AcceptBroadcast; - BOOLEAN AcceptPromiscuous; - BOOLEAN AcceptAnyPort; - BOOLEAN AllowDuplicatePort; - UINT8 TypeOfService; - UINT8 TimeToLive; - BOOLEAN DoNotFragment; - UINT32 ReceiveTimeout; - UINT32 TransmitTimeout; - BOOLEAN UseDefaultAddress; - EFI_IPv4_ADDRESS StationAddress; - EFI_IPv4_ADDRESS SubnetMask; - UINT16 StationPort; - EFI_IPv4_ADDRESS RemoteAddress; - UINT16 RemotePort; -} EFI_UDP4_CONFIG_DATA; - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_GET_MODE_DATA) ( - IN struct _EFI_UDP4 *This, - OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL, - OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_CONFIGURE) ( - IN struct _EFI_UDP4 *This, - IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_GROUPS) ( - IN struct _EFI_UDP4 *This, - IN BOOLEAN JoinFlag, - IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_ROUTES) ( - IN struct _EFI_UDP4 *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress - ); - -#define EFI_NETWORK_UNREACHABLE EFIERR(100) -#define EFI_HOST_UNREACHABLE EFIERR(101) -#define EFI_PROTOCOL_UNREACHABLE EFIERR(102) -#define EFI_PORT_UNREACHABLE EFIERR(103) - -typedef struct { - EFI_IPv4_ADDRESS SourceAddress; - UINT16 SourcePort; - EFI_IPv4_ADDRESS DestinationAddress; - UINT16 DestinationPort; -} EFI_UDP4_SESSION_DATA; - -typedef struct { - UINT32 FragmentLength; - VOID *FragmentBuffer; -} EFI_UDP4_FRAGMENT_DATA; - -typedef struct { - EFI_TIME TimeStamp; - EFI_EVENT RecycleSignal; - EFI_UDP4_SESSION_DATA UdpSession; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; -} EFI_UDP4_RECEIVE_DATA; - -typedef struct { - EFI_UDP4_SESSION_DATA *UdpSessionData; - EFI_IPv4_ADDRESS *GatewayAddress; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; -} EFI_UDP4_TRANSMIT_DATA; - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; - union { - EFI_UDP4_RECEIVE_DATA *RxData; - EFI_UDP4_TRANSMIT_DATA *TxData; - } Packet; -} EFI_UDP4_COMPLETION_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_TRANSMIT) ( - IN struct _EFI_UDP4 *This, - IN EFI_UDP4_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_RECEIVE) ( - IN struct _EFI_UDP4 *This, - IN EFI_UDP4_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_CANCEL)( - IN struct _EFI_UDP4 *This, - IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP4_POLL) ( - IN struct _EFI_UDP4 *This - ); - -typedef struct _EFI_UDP4 { - EFI_UDP4_GET_MODE_DATA GetModeData; - EFI_UDP4_CONFIGURE Configure; - EFI_UDP4_GROUPS Groups; - EFI_UDP4_ROUTES Routes; - EFI_UDP4_TRANSMIT Transmit; - EFI_UDP4_RECEIVE Receive; - EFI_UDP4_CANCEL Cancel; - EFI_UDP4_POLL Poll; -} EFI_UDP4; - -typedef struct { - BOOLEAN AcceptPromiscuous; - BOOLEAN AcceptAnyPort; - BOOLEAN AllowDuplicatePort; - UINT8 TrafficClass; - UINT8 HopLimit; - UINT32 ReceiveTimeout; - UINT32 TransmitTimeout; - EFI_IPv6_ADDRESS StationAddress; - UINT16 StationPort; - EFI_IPv6_ADDRESS RemoteAddress; - UINT16 RemotePort; -} EFI_UDP6_CONFIG_DATA; - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_GET_MODE_DATA) ( - IN struct _EFI_UDP6 *This, - OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_CONFIGURE) ( - IN struct _EFI_UDP6 *This, - IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_GROUPS) ( - IN struct _EFI_UDP6 *This, - IN BOOLEAN JoinFlag, - IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL - ); - -typedef struct { - EFI_IPv6_ADDRESS SourceAddress; - UINT16 SourcePort; - EFI_IPv6_ADDRESS DestinationAddress; - UINT16 DestinationPort; -} EFI_UDP6_SESSION_DATA; - -typedef struct { - UINT32 FragmentLength; - VOID *FragmentBuffer; -} EFI_UDP6_FRAGMENT_DATA; - -typedef struct { - EFI_TIME TimeStamp; - EFI_EVENT RecycleSignal; - EFI_UDP6_SESSION_DATA UdpSession; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; -} EFI_UDP6_RECEIVE_DATA; - -typedef struct { - EFI_UDP6_SESSION_DATA *UdpSessionData; - UINT32 DataLength; - UINT32 FragmentCount; - EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; -} EFI_UDP6_TRANSMIT_DATA; - -typedef struct { - EFI_EVENT Event; - EFI_STATUS Status; - union { - EFI_UDP6_RECEIVE_DATA *RxData; - EFI_UDP6_TRANSMIT_DATA *TxData; - } Packet; -} EFI_UDP6_COMPLETION_TOKEN; - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_TRANSMIT) ( - IN struct _EFI_UDP6 *This, - IN EFI_UDP6_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_RECEIVE) ( - IN struct _EFI_UDP6 *This, - IN EFI_UDP6_COMPLETION_TOKEN *Token - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_CANCEL)( - IN struct _EFI_UDP6 *This, - IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *EFI_UDP6_POLL) ( - IN struct _EFI_UDP6 *This - ); - -typedef struct _EFI_UDP6 { - EFI_UDP6_GET_MODE_DATA GetModeData; - EFI_UDP6_CONFIGURE Configure; - EFI_UDP6_GROUPS Groups; - EFI_UDP6_TRANSMIT Transmit; - EFI_UDP6_RECEIVE Receive; - EFI_UDP6_CANCEL Cancel; - EFI_UDP6_POLL Poll; -} EFI_UDP6; - -#endif /* _EFI_UDP_H */ diff --git a/efi/inc/efiui.h b/efi/inc/efiui.h deleted file mode 100644 index 3756936..0000000 --- a/efi/inc/efiui.h +++ /dev/null @@ -1,58 +0,0 @@ -#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_INTERFACE_PROTOCOL_GUID \ - { 0x32dd7981, 0x2d27, 0x11d4, {0xbc, 0x8b, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } -#define EFI_UI_PROTOCOL EFI_UI_INTERFACE_PROTOCOL_GUID - - -typedef enum { - UiDeviceString, - UiVendorString, - UiMaxString -} UI_STRING_TYPE; - -typedef struct { - ISO_639_2 *LangCode; - CHAR16 *UiString; -} UI_STRING_ENTRY; - -#define EFI_UI_INTERFACE_PROTOCOL_VERSION 0x00010000 -#define EFI_UI_VERSION EFI_UI_INTERFACE_PROTOCOL_VERSION - -typedef struct _EFI_UI_INTERFACE_PROTOCOL { - UINT32 Version; - UI_STRING_ENTRY *Entry; -} EFI_UI_INTERFACE_PROTOCOL; - -typedef struct _EFI_UI_INTERFACE_PROTOCOL _UI_INTERFACE; -typedef EFI_UI_INTERFACE_PROTOCOL UI_INTERFACE; - -#endif diff --git a/efi/inc/ia32/efibind.h b/efi/inc/ia32/efibind.h deleted file mode 100644 index 1b11f10..0000000 --- a/efi/inc/ia32/efibind.h +++ /dev/null @@ -1,289 +0,0 @@ -/*++ - -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 !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) - - // No ANSI C 1999/2000 stdint.h integer width declarations - - #if defined(_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 int __attribute__((__mode__(__DI__))) int64_t; - typedef unsigned int __attribute__((__mode__(__DI__))) uint64_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 signed 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 -#elif defined(__GNUC__) - #include -#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 -// - -#ifdef 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 - #ifdef _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. For the MSVC toolchain, we simply tell the -// linker what our driver init function is using /ENTRY. -// -#if defined(_MSC_EXTENSIONS) - #define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - __pragma(comment(linker, "/ENTRY:" # InitFunction)) -#else - #define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - UINTN \ - InitializeDriver ( \ - VOID *ImageHandle, \ - VOID *SystemTable \ - ) \ - { \ - return InitFunction(ImageHandle, \ - SystemTable); \ - } \ - \ - EFI_STATUS efi_main( \ - EFI_HANDLE image, \ - EFI_SYSTEM_TABLE *systab \ - ) __attribute__((weak, \ - alias ("InitializeDriver"))); -#endif - - #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 -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) -#define INTERFACE_DECL(x) struct x -#else -#define INTERFACE_DECL(x) typedef struct x -#endif -#endif - -/* No efi call wrapper for IA32 architecture */ -#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__) -#define EFI_FUNCTION - -#ifdef _MSC_EXTENSIONS -#pragma warning ( disable : 4731 ) // Suppress warnings about modification of EBP -#endif - diff --git a/efi/inc/ia32/efilibplat.h b/efi/inc/ia32/efilibplat.h deleted file mode 100644 index 3844578..0000000 --- a/efi/inc/ia32/efilibplat.h +++ /dev/null @@ -1,26 +0,0 @@ -/*++ - -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 - ); - - diff --git a/efi/inc/ia32/efisetjmp_arch.h b/efi/inc/ia32/efisetjmp_arch.h deleted file mode 100644 index 17184e7..0000000 --- a/efi/inc/ia32/efisetjmp_arch.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef GNU_EFI_IA32_SETJMP_H -#define GNU_EFI_IA32_SETJMP_H - -#define JMPBUF_ALIGN 4 - -typedef struct { - UINT32 Ebx; - UINT32 Esi; - UINT32 Edi; - UINT32 Ebp; - UINT32 Esp; - UINT32 Eip; -} ALIGN(JMPBUF_ALIGN) jmp_buf; - -#endif /* GNU_EFI_IA32_SETJMP_H */ diff --git a/efi/inc/ia32/pe.h b/efi/inc/ia32/pe.h deleted file mode 100644 index 979b936..0000000 --- a/efi/inc/ia32/pe.h +++ /dev/null @@ -1,595 +0,0 @@ -/* - 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_ARMTHUMB_MIXED 0x1c2 // Arm/Thumb -#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian -#define IMAGE_FILE_MACHINE_IA64 0x200 // IA-64 -#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine -#define IMAGE_FILE_MACHINE_EBC 0xebc // EFI Byte Code -#define IMAGE_FILE_MACHINE_X64 0x8664 // x86_64 -// -// 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 "!\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 diff --git a/efi/inc/ia64/efibind.h b/efi/inc/ia64/efibind.h deleted file mode 100644 index b415461..0000000 --- a/efi/inc/ia64/efibind.h +++ /dev/null @@ -1,231 +0,0 @@ -/*++ - -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 !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) - - // No ANSI C 1999/2000 stdint.h integer width declarations - - #ifdef _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; - #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; - 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 -#elif defined(__GNUC__) - #include -#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 - #ifdef _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. For the MSVC toolchain, we simply tell the -// linker what our driver init function is using /ENTRY. -// -#if defined(_MSC_EXTENSIONS) - #define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - __pragma(comment(linker, "/ENTRY:" # InitFunction)) -#else - #define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - UINTN \ - InitializeDriver ( \ - VOID *ImageHandle, \ - VOID *SystemTable \ - ) \ - { \ - return InitFunction(ImageHandle, \ - SystemTable); \ - } \ - \ - EFI_STATUS efi_main( \ - EFI_HANDLE image, \ - EFI_SYSTEM_TABLE *systab \ - ) __attribute__((weak, \ - alias ("InitializeDriver"))); -#endif - -#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 -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) -#define INTERFACE_DECL(x) struct x -#else -#define INTERFACE_DECL(x) typedef struct x -#endif -#endif - -/* No efi call wrapper for IA32 architecture */ -#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__) -#define EFI_FUNCTION diff --git a/efi/inc/ia64/efilibplat.h b/efi/inc/ia64/efilibplat.h deleted file mode 100644 index f07be3f..0000000 --- a/efi/inc/ia64/efilibplat.h +++ /dev/null @@ -1,80 +0,0 @@ -#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 - diff --git a/efi/inc/ia64/efisetjmp_arch.h b/efi/inc/ia64/efisetjmp_arch.h deleted file mode 100644 index 3afa044..0000000 --- a/efi/inc/ia64/efisetjmp_arch.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef GNU_EFI_IA64_SETJMP_H -#define GNU_EFI_IA64_SETJMP_H - -#define JMPBUF_ALIGN 0x10 - -typedef struct { - UINT64 F2[2]; - UINT64 F3[2]; - UINT64 F4[2]; - UINT64 F5[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 R4; - UINT64 R5; - UINT64 R6; - UINT64 R7; - UINT64 SP; - UINT64 BR0; - UINT64 BR1; - UINT64 BR2; - UINT64 BR3; - UINT64 BR4; - UINT64 BR5; - UINT64 InitialUNAT; - UINT64 AfterSpillUNAT; - UINT64 PFS; - UINT64 BSP; - UINT64 Predicates; - UINT64 LoopCount; - UINT64 FPSR; -} ALIGN(JMPBUF_ALIGN) jmp_buf; - -#endif /* GNU_EFI_IA64_SETJMP_H */ diff --git a/efi/inc/ia64/pe.h b/efi/inc/ia64/pe.h deleted file mode 100644 index b1cade2..0000000 --- a/efi/inc/ia64/pe.h +++ /dev/null @@ -1,601 +0,0 @@ -/* - 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_ARMTHUMB_MIXED 0x1c2 // Arm/Thumb -#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian -#define IMAGE_FILE_MACHINE_IA64 0x200 // IA-64 -#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine -#define IMAGE_FILE_MACHINE_EBC 0xebc // EFI Byte Code -#define IMAGE_FILE_MACHINE_X64 0x8664 // x86_64 -// -// 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 "!\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 diff --git a/efi/inc/ia64/salproc.h b/efi/inc/ia64/salproc.h deleted file mode 100644 index 62a5dca..0000000 --- a/efi/inc/ia64/salproc.h +++ /dev/null @@ -1,264 +0,0 @@ -#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 - diff --git a/efi/inc/lib.h b/efi/inc/lib.h deleted file mode 100644 index 37fbb95..0000000 --- a/efi/inc/lib.h +++ /dev/null @@ -1,92 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - lib.h - -Abstract: - - EFI library header files - - - -Revision History - ---*/ - -#ifdef __GNUC__ -#pragma GCC visibility push(hidden) -#endif - -#include "efi.h" -#include "efilib.h" -#include "efirtlib.h" - -// -// Include non architectural protocols -// -#include "efivar.h" -#include "legacyboot.h" -#include "intload.h" -#include "vgaclass.h" -#include "eficonsplit.h" -#include "adapterdebug.h" -#include "intload.h" - -#include "efigpt.h" -#include "libsmbios.h" - -// -// Prototypes -// - -VOID -InitializeGuid ( - VOID - ); - -INTN EFIAPI -LibStubStriCmp ( - IN EFI_UNICODE_COLLATION_INTERFACE *This, - IN CHAR16 *S1, - IN CHAR16 *S2 - ); - -BOOLEAN EFIAPI -LibStubMetaiMatch ( - IN EFI_UNICODE_COLLATION_INTERFACE *This, - IN CHAR16 *String, - IN CHAR16 *Pattern - ); - -VOID EFIAPI -LibStubStrLwrUpr ( - IN EFI_UNICODE_COLLATION_INTERFACE *This, - IN CHAR16 *Str - ); - -BOOLEAN -LibMatchDevicePaths ( - IN EFI_DEVICE_PATH *Multi, - IN EFI_DEVICE_PATH *Single - ); - -EFI_DEVICE_PATH * -LibDuplicateDevicePathInstance ( - IN EFI_DEVICE_PATH *DevPath - ); - - -// -// Globals -// -extern BOOLEAN LibInitialized; -extern BOOLEAN LibFwInstance; -extern EFI_HANDLE LibImageHandle; -extern SIMPLE_TEXT_OUTPUT_INTERFACE *LibRuntimeDebugOut; -extern EFI_UNICODE_COLLATION_INTERFACE *UnicodeInterface; -extern EFI_UNICODE_COLLATION_INTERFACE LibStubUnicodeInterface; -extern EFI_RAISE_TPL LibRuntimeRaiseTPL; -extern EFI_RESTORE_TPL LibRuntimeRestoreTPL; diff --git a/efi/inc/libsmbios.h b/efi/inc/libsmbios.h deleted file mode 100644 index 8f1a28e..0000000 --- a/efi/inc/libsmbios.h +++ /dev/null @@ -1,132 +0,0 @@ -#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 - diff --git a/efi/inc/mips64el/efibind.h b/efi/inc/mips64el/efibind.h deleted file mode 100644 index 4adbca3..0000000 --- a/efi/inc/mips64el/efibind.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copright (C) 2014 - 2015 Linaro Ltd. - * Author: Ard Biesheuvel - * Copright (C) 2017 Lemote Co. - * Author: Heiher - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) - -// ANSI C 1999/2000 stdint.h 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 signed char int8_t; // unqualified 'char' is unsigned on ARM - -#else -#include -#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; - -#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); // Make it hang on Bios[Dbg]32 - -// -// Pointers must be aligned to these address to function -// - -#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 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)) - -// -// 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 -#define EFIAPI // Substitute expresion to force C calling convention -#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 - -#define MEMORY_FENCE __sync_synchronize - -// -// When build similiar to FW, then link everything together as -// one big module. -// - -#define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - UINTN \ - InitializeDriver ( \ - VOID *ImageHandle, \ - VOID *SystemTable \ - ) \ - { \ - return InitFunction(ImageHandle, \ - SystemTable); \ - } \ - \ - EFI_STATUS efi_main( \ - EFI_HANDLE image, \ - EFI_SYSTEM_TABLE *systab \ - ) __attribute__((weak, \ - alias ("InitializeDriver"))); - -#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. - -#define INTERFACE_DECL(x) struct x - -#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__) -#define EFI_FUNCTION - -static inline UINT64 swap_uint64 (UINT64 v) -{ - asm volatile ( - "dsbh %[v], %[v] \n\t" - "dshd %[v], %[v] \n\t" - :[v]"+r"(v) - ); - - return v; -} diff --git a/efi/inc/mips64el/efilibplat.h b/efi/inc/mips64el/efilibplat.h deleted file mode 100644 index 70a0786..0000000 --- a/efi/inc/mips64el/efilibplat.h +++ /dev/null @@ -1,25 +0,0 @@ -/*++ - -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 - ); - diff --git a/efi/inc/mips64el/efisetjmp_arch.h b/efi/inc/mips64el/efisetjmp_arch.h deleted file mode 100644 index fd17f1f..0000000 --- a/efi/inc/mips64el/efisetjmp_arch.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef GNU_EFI_MIPS64EL_SETJMP_H -#define GNU_EFI_MIPS64EL_SETJMP_H - -#define JMPBUF_ALIGN 8 - -typedef struct { - /* GP regs */ - UINT64 RA; - UINT64 SP; - UINT64 FP; - UINT64 GP; - UINT64 S0; - UINT64 S1; - UINT64 S2; - UINT64 S3; - UINT64 S4; - UINT64 S5; - UINT64 S6; - UINT64 S7; - -#ifdef __mips_hard_float - /* FP regs */ - UINT64 F24; - UINT64 F25; - UINT64 F26; - UINT64 F27; - UINT64 F28; - UINT64 F29; - UINT64 F30; - UINT64 F31; -#endif -} ALIGN(JMPBUF_ALIGN) jmp_buf; - -#endif /* GNU_EFI_MIPS64EL_SETJMP_H */ diff --git a/efi/inc/pci22.h b/efi/inc/pci22.h deleted file mode 100644 index b94f519..0000000 --- a/efi/inc/pci22.h +++ /dev/null @@ -1,193 +0,0 @@ -#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 - - - - - - diff --git a/efi/inc/protocol/adapterdebug.h b/efi/inc/protocol/adapterdebug.h deleted file mode 100644 index d70af5d..0000000 --- a/efi/inc/protocol/adapterdebug.h +++ /dev/null @@ -1,32 +0,0 @@ -#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 - diff --git a/efi/inc/protocol/eficonsplit.h b/efi/inc/protocol/eficonsplit.h deleted file mode 100644 index 15adb92..0000000 --- a/efi/inc/protocol/eficonsplit.h +++ /dev/null @@ -1,32 +0,0 @@ -#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 diff --git a/efi/inc/protocol/efidbg.h b/efi/inc/protocol/efidbg.h deleted file mode 100644 index 1f95a70..0000000 --- a/efi/inc/protocol/efidbg.h +++ /dev/null @@ -1,210 +0,0 @@ -/* - * 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_ */ diff --git a/efi/inc/protocol/efivar.h b/efi/inc/protocol/efivar.h deleted file mode 100644 index 92dc506..0000000 --- a/efi/inc/protocol/efivar.h +++ /dev/null @@ -1,133 +0,0 @@ -/*++ - -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. -// - diff --git a/efi/inc/protocol/ia64/eficontext.h b/efi/inc/protocol/ia64/eficontext.h deleted file mode 100644 index e286a25..0000000 --- a/efi/inc/protocol/ia64/eficontext.h +++ /dev/null @@ -1,208 +0,0 @@ -/* - * 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_ */ diff --git a/efi/inc/protocol/intload.h b/efi/inc/protocol/intload.h deleted file mode 100644 index fb24e3f..0000000 --- a/efi/inc/protocol/intload.h +++ /dev/null @@ -1,27 +0,0 @@ -/*++ - -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 diff --git a/efi/inc/protocol/legacyboot.h b/efi/inc/protocol/legacyboot.h deleted file mode 100644 index 16e94e7..0000000 --- a/efi/inc/protocol/legacyboot.h +++ /dev/null @@ -1,119 +0,0 @@ -/*++ - -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 diff --git a/efi/inc/protocol/make.inf b/efi/inc/protocol/make.inf deleted file mode 100644 index 7487286..0000000 --- a/efi/inc/protocol/make.inf +++ /dev/null @@ -1,13 +0,0 @@ -# -# -# - -[sources] - efivar.h - legacyboot.h - VgaClass.h - intload.h - -[ia32sources] - -[ia64sources] diff --git a/efi/inc/protocol/makefile.hdr b/efi/inc/protocol/makefile.hdr deleted file mode 100644 index 1ff3eeb..0000000 --- a/efi/inc/protocol/makefile.hdr +++ /dev/null @@ -1,29 +0,0 @@ - -# -# 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 - diff --git a/efi/inc/protocol/piflash64.h b/efi/inc/protocol/piflash64.h deleted file mode 100644 index d521dfc..0000000 --- a/efi/inc/protocol/piflash64.h +++ /dev/null @@ -1,121 +0,0 @@ -#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 diff --git a/efi/inc/protocol/readme.txt b/efi/inc/protocol/readme.txt deleted file mode 100644 index b7b7c7d..0000000 --- a/efi/inc/protocol/readme.txt +++ /dev/null @@ -1,3 +0,0 @@ -The protocol directory contains non Architectural -Protocols that span the FW, Platform, or application -space. \ No newline at end of file diff --git a/efi/inc/protocol/vgaclass.h b/efi/inc/protocol/vgaclass.h deleted file mode 100644 index d0deb5c..0000000 --- a/efi/inc/protocol/vgaclass.h +++ /dev/null @@ -1,95 +0,0 @@ -#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 - diff --git a/efi/inc/romload.h b/efi/inc/romload.h deleted file mode 100644 index 0506011..0000000 --- a/efi/inc/romload.h +++ /dev/null @@ -1,41 +0,0 @@ -#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 diff --git a/efi/inc/x86_64/efibind.h b/efi/inc/x86_64/efibind.h deleted file mode 100644 index 4309f9f..0000000 --- a/efi/inc/x86_64/efibind.h +++ /dev/null @@ -1,390 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - efefind.h - -Abstract: - - EFI to compile bindings - - - - -Revision History - ---*/ -#ifndef X86_64_EFI_BIND -#define X86_64_EFI_BIND -#ifndef __GNUC__ -#pragma pack() -#endif - -#if defined(GNU_EFI_USE_MS_ABI) - #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))||(defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 2))) - #define HAVE_USE_MS_ABI 1 - #else - #error Compiler is too old for GNU_EFI_USE_MS_ABI - #endif -#endif - -// -// Basic int types of various widths -// - -#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L ) - - // No ANSI C 1999/2000 stdint.h integer width declarations - - #if defined(_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 int __attribute__((__mode__(__DI__))) int64_t; - typedef unsigned int __attribute__((__mode__(__DI__))) uint64_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 signed 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 -#elif defined(__GNUC__) - #include -#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 int64_t INTN; -typedef uint64_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) (0x8000000000000000 | a) -#define EFI_ERROR_MASK 0x8000000000000000 -#define EFIERR_OEM(a) (0xc000000000000000 | a) - - -#define BAD_POINTER 0xFBFBFBFBFBFBFBFB -#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFF - -#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 -// - -#ifdef 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 - #ifdef _MSC_EXTENSIONS - #define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler - #elif defined(HAVE_USE_MS_ABI) - // Force amd64/ms calling conventions. - #define EFIAPI __attribute__((ms_abi)) - #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. For the MSVC toolchain, we simply tell the -// linker what our driver init function is using /ENTRY. -// -#if defined(_MSC_EXTENSIONS) - #define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - __pragma(comment(linker, "/ENTRY:" # InitFunction)) -#else - #define EFI_DRIVER_ENTRY_POINT(InitFunction) \ - UINTN \ - InitializeDriver ( \ - VOID *ImageHandle, \ - VOID *SystemTable \ - ) \ - { \ - return InitFunction(ImageHandle, \ - SystemTable); \ - } \ - \ - EFI_STATUS efi_main( \ - EFI_HANDLE image, \ - EFI_SYSTEM_TABLE *systab \ - ) __attribute__((weak, \ - alias ("InitializeDriver"))); -#endif - - #define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \ - (_if)->LoadInternal(type, name, entry) - -#endif // EFI_NT_EMULATOR - -// -// 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 -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) -#define INTERFACE_DECL(x) struct x -#else -#define INTERFACE_DECL(x) typedef struct x -#endif -#endif - -/* for x86_64, EFI_FUNCTION_WRAPPER must be defined */ -#if defined(HAVE_USE_MS_ABI) -#define uefi_call_wrapper(func, va_num, ...) func(__VA_ARGS__) -#else -/* - Credits for macro-magic: - https://groups.google.com/forum/?fromgroups#!topic/comp.std.c/d-6Mj5Lko_s - http://efesx.com/2010/08/31/overloading-macros/ -*/ -#define __VA_NARG__(...) \ - __VA_NARG_(_0, ## __VA_ARGS__, __RSEQ_N()) -#define __VA_NARG_(...) \ - __VA_ARG_N(__VA_ARGS__) -#define __VA_ARG_N( \ - _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,N,...) N -#define __RSEQ_N() \ - 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 - -#define __VA_ARG_NSUFFIX__(prefix,...) \ - __VA_ARG_NSUFFIX_N(prefix, __VA_NARG__(__VA_ARGS__)) -#define __VA_ARG_NSUFFIX_N(prefix,nargs) \ - __VA_ARG_NSUFFIX_N_(prefix, nargs) -#define __VA_ARG_NSUFFIX_N_(prefix,nargs) \ - prefix ## nargs - -/* Prototypes of EFI cdecl -> stdcall trampolines */ -UINT64 efi_call0(void *func); -UINT64 efi_call1(void *func, UINT64 arg1); -UINT64 efi_call2(void *func, UINT64 arg1, UINT64 arg2); -UINT64 efi_call3(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3); -UINT64 efi_call4(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4); -UINT64 efi_call5(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4, UINT64 arg5); -UINT64 efi_call6(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4, UINT64 arg5, UINT64 arg6); -UINT64 efi_call7(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4, UINT64 arg5, UINT64 arg6, UINT64 arg7); -UINT64 efi_call8(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4, UINT64 arg5, UINT64 arg6, UINT64 arg7, - UINT64 arg8); -UINT64 efi_call9(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4, UINT64 arg5, UINT64 arg6, UINT64 arg7, - UINT64 arg8, UINT64 arg9); -UINT64 efi_call10(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, - UINT64 arg4, UINT64 arg5, UINT64 arg6, UINT64 arg7, - UINT64 arg8, UINT64 arg9, UINT64 arg10); - -/* Front-ends to efi_callX to avoid compiler warnings */ -#define _cast64_efi_call0(f) \ - efi_call0(f) -#define _cast64_efi_call1(f,a1) \ - efi_call1(f, (UINT64)(a1)) -#define _cast64_efi_call2(f,a1,a2) \ - efi_call2(f, (UINT64)(a1), (UINT64)(a2)) -#define _cast64_efi_call3(f,a1,a2,a3) \ - efi_call3(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3)) -#define _cast64_efi_call4(f,a1,a2,a3,a4) \ - efi_call4(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4)) -#define _cast64_efi_call5(f,a1,a2,a3,a4,a5) \ - efi_call5(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4), \ - (UINT64)(a5)) -#define _cast64_efi_call6(f,a1,a2,a3,a4,a5,a6) \ - efi_call6(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4), \ - (UINT64)(a5), (UINT64)(a6)) -#define _cast64_efi_call7(f,a1,a2,a3,a4,a5,a6,a7) \ - efi_call7(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4), \ - (UINT64)(a5), (UINT64)(a6), (UINT64)(a7)) -#define _cast64_efi_call8(f,a1,a2,a3,a4,a5,a6,a7,a8) \ - efi_call8(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4), \ - (UINT64)(a5), (UINT64)(a6), (UINT64)(a7), (UINT64)(a8)) -#define _cast64_efi_call9(f,a1,a2,a3,a4,a5,a6,a7,a8,a9) \ - efi_call9(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4), \ - (UINT64)(a5), (UINT64)(a6), (UINT64)(a7), (UINT64)(a8), \ - (UINT64)(a9)) -#define _cast64_efi_call10(f,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) \ - efi_call10(f, (UINT64)(a1), (UINT64)(a2), (UINT64)(a3), (UINT64)(a4), \ - (UINT64)(a5), (UINT64)(a6), (UINT64)(a7), (UINT64)(a8), \ - (UINT64)(a9), (UINT64)(a10)) - -/* main wrapper (va_num ignored) */ -#define uefi_call_wrapper(func,va_num,...) \ - __VA_ARG_NSUFFIX__(_cast64_efi_call, __VA_ARGS__) (func , ##__VA_ARGS__) - -#endif - -#if defined(HAVE_USE_MS_ABI) && !defined(_MSC_EXTENSIONS) - #define EFI_FUNCTION __attribute__((ms_abi)) -#else - #define EFI_FUNCTION -#endif - -#ifdef _MSC_EXTENSIONS -#pragma warning ( disable : 4731 ) // Suppress warnings about modification of EBP -#endif - -#endif diff --git a/efi/inc/x86_64/efilibplat.h b/efi/inc/x86_64/efilibplat.h deleted file mode 100644 index 3844578..0000000 --- a/efi/inc/x86_64/efilibplat.h +++ /dev/null @@ -1,26 +0,0 @@ -/*++ - -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 - ); - - diff --git a/efi/inc/x86_64/efisetjmp_arch.h b/efi/inc/x86_64/efisetjmp_arch.h deleted file mode 100644 index a489993..0000000 --- a/efi/inc/x86_64/efisetjmp_arch.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef GNU_EFI_X86_64_SETJMP_H -#define GNU_EFI_X86_64_SETJMP_H - -#define JMPBUF_ALIGN 8 - -typedef struct { - UINT64 Rbx; - UINT64 Rsp; - UINT64 Rbp; - - UINT64 Rdi; - UINT64 Rsi; - UINT64 R12; - UINT64 R13; - UINT64 R14; - UINT64 R15; - UINT64 Rip; - UINT64 MxCsr; - UINT8 XmmBuffer[160]; // XMM6 - XMM15 -} ALIGN(JMPBUF_ALIGN) jmp_buf; - -#endif /* GNU_EFI_X86_64_SETJMP_H */ diff --git a/efi/inc/x86_64/pe.h b/efi/inc/x86_64/pe.h deleted file mode 100644 index 979b936..0000000 --- a/efi/inc/x86_64/pe.h +++ /dev/null @@ -1,595 +0,0 @@ -/* - 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_ARMTHUMB_MIXED 0x1c2 // Arm/Thumb -#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian -#define IMAGE_FILE_MACHINE_IA64 0x200 // IA-64 -#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine -#define IMAGE_FILE_MACHINE_EBC 0xebc // EFI Byte Code -#define IMAGE_FILE_MACHINE_X64 0x8664 // x86_64 -// -// 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 "!\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 diff --git a/efi/lib/Makefile b/efi/lib/Makefile deleted file mode 100644 index 0e6410d..0000000 --- a/efi/lib/Makefile +++ /dev/null @@ -1,93 +0,0 @@ -# -# Copyright (C) 1999-2001 Hewlett-Packard Co. -# Contributed by David Mosberger -# Contributed by Stephane Eranian -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Hewlett-Packard Co. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT OWNER OR CONTRIBUTORS -# BE LIABLE FOR ANYDIRECT, 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. -# - -SRCDIR = . - -VPATH = $(SRCDIR) - -include $(SRCDIR)/../Make.defaults - -TOPDIR = $(SRCDIR)/.. - -CDIR = $(TOPDIR)/.. -FILES = boxdraw smbios console crc data debug dpath \ - error event exit guid hand hw init lock \ - misc print sread str cmdline \ - runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata \ - $(ARCH)/initplat $(ARCH)/math $(ARCH)/setjmp - -ifeq ($(ARCH),ia64) -FILES += $(ARCH)/salpal $(ARCH)/palproc -endif - -ifeq ($(ARCH),x86_64) -FILES += $(ARCH)/callwrap $(ARCH)/efi_stub -endif - -ifeq ($(ARCH),arm) -FILES += $(ARCH)/uldiv $(ARCH)/ldivmod $(ARCH)/div $(ARCH)/llsl $(ARCH)/llsr \ - $(ARCH)/mullu -endif - -OBJS = $(FILES:%=%.o) - -SUBDIRS = ia32 x86_64 ia64 aarch64 arm mips64el runtime - -LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR) - -all: libsubdirs libefi.a - -.PHONY: libsubdirs -libsubdirs: - for sdir in $(SUBDIRS); do mkdir -p $$sdir; done - -libefi.a: $(OBJS) - $(AR) $(ARFLAGS) $@ $^ - -clean: - rm -f libefi.a *~ $(OBJS) */*.o - -$(LIBDIRINSTALL): - mkdir -p $@ - -$(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL) - $(INSTALL) -m 644 $< $(dir $@) - -install: $(LIBDIRINSTALL)/libefi.a - -include $(SRCDIR)/../Make.rules - -.PHONY: libsubdirs diff --git a/efi/lib/Makefile.orig b/efi/lib/Makefile.orig deleted file mode 100644 index 65aa8ca..0000000 --- a/efi/lib/Makefile.orig +++ /dev/null @@ -1,91 +0,0 @@ -# -# Copyright (C) 1999-2001 Hewlett-Packard Co. -# Contributed by David Mosberger -# Contributed by Stephane Eranian -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Hewlett-Packard Co. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT OWNER OR CONTRIBUTORS -# BE LIABLE FOR ANYDIRECT, 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. -# - -SRCDIR = . - -VPATH = $(SRCDIR) - -include $(SRCDIR)/../Make.defaults - -TOPDIR = $(SRCDIR)/.. - -CDIR = $(TOPDIR)/.. -FILES = boxdraw smbios console crc data debug dpath \ - error event guid hand hw init lock \ - misc print sread str cmdline \ - runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata \ - $(ARCH)/initplat $(ARCH)/math - -ifeq ($(ARCH),ia64) -FILES += $(ARCH)/salpal $(ARCH)/palproc -endif - -ifeq ($(ARCH),x86_64) -FILES += $(ARCH)/callwrap $(ARCH)/efi_stub -endif - -ifeq ($(ARCH),arm) -FILES += $(ARCH)/lib1funcs $(ARCH)/div64 -endif - -OBJS = $(FILES:%=%.o) - -SUBDIRS = ia32 x86_64 ia64 aarch64 arm runtime - -LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR) - -all: libsubdirs libefi.a - -.PHONY: libsubdirs -libsubdirs: - for sdir in $(SUBDIRS); do mkdir -p $$sdir; done - -libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) - -clean: - rm -f libefi.a *~ $(OBJS) */*.o - -$(LIBDIRINSTALL): - mkdir -p $@ - -$(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL) - $(INSTALL) -m 644 $< $(dir $@) - -install: $(LIBDIRINSTALL)/libefi.a - -include $(SRCDIR)/../Make.rules - -.PHONY: libsubdirs diff --git a/efi/lib/aarch64/efi_stub.S b/efi/lib/aarch64/efi_stub.S deleted file mode 100644 index 464eae5..0000000 --- a/efi/lib/aarch64/efi_stub.S +++ /dev/null @@ -1 +0,0 @@ -/* This stub is a stub to make the build happy */ diff --git a/efi/lib/aarch64/initplat.c b/efi/lib/aarch64/initplat.c deleted file mode 100644 index 6c5e1fa..0000000 --- a/efi/lib/aarch64/initplat.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copright (C) 2014 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#include "lib.h" - -VOID -InitializeLibPlatform ( - IN EFI_HANDLE ImageHandle EFI_UNUSED, - IN EFI_SYSTEM_TABLE *SystemTable EFI_UNUSED - ) -{ -} diff --git a/efi/lib/aarch64/math.c b/efi/lib/aarch64/math.c deleted file mode 100644 index 8c16444..0000000 --- a/efi/lib/aarch64/math.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copright (C) 2014 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#include "lib.h" - -UINT64 -LShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Left shift 64bit by 32bit and get a 64bit result -{ - return Operand << Count; -} - -UINT64 -RShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Right shift 64bit by 32bit and get a 64bit result -{ - return Operand >> Count; -} - - -UINT64 -MultU64x32 ( - IN UINT64 Multiplicand, - IN UINTN Multiplier - ) -// Multiple 64bit by 32bit and get a 64bit result -{ - return Multiplicand * Multiplier; -} - -UINT64 -DivU64x32 ( - IN UINT64 Dividend, - IN UINTN Divisor, - OUT UINTN *Remainder OPTIONAL - ) -// divide 64bit by 32bit and get a 64bit result -// N.B. only works for 31bit divisors!! -{ - if (Remainder) - *Remainder = Dividend % Divisor; - return Dividend / Divisor; -} diff --git a/efi/lib/aarch64/setjmp.S b/efi/lib/aarch64/setjmp.S deleted file mode 100644 index 46c29b1..0000000 --- a/efi/lib/aarch64/setjmp.S +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. - * This program and the accompanying materials are licensed and made -available - * under the terms and conditions of the BSD License which accompanies -this - * distribution. The full text of the license may be found at - * http://opensource.org/licenses/bsd-license.php. - * - * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" -BASIS, - * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR - * IMPLIED. - */ - .text - .p2align 3 - -#define GPR_LAYOUT \ - REG_PAIR (x19, x20, 0); \ - REG_PAIR (x21, x22, 16); \ - REG_PAIR (x23, x24, 32); \ - REG_PAIR (x25, x26, 48); \ - REG_PAIR (x27, x28, 64); \ - REG_PAIR (x29, x30, 80); \ - REG_ONE (x16, 96) - -#define FPR_LAYOUT \ - REG_PAIR(d8, d9, 112); \ - REG_PAIR(d10, d11, 128); \ - REG_PAIR(d12, d13, 144); \ - REG_PAIR(d14, d15, 160); - -#define REG_PAIR(REG1, REG2, OFFS) stp REG1, REG2, [x0, OFFS] -#define REG_ONE(REG1, OFFS) str REG1, [x0, OFFS] - - .globl setjmp - .type setjmp, @function -setjmp: - mov x16, sp - GPR_LAYOUT - FPR_LAYOUT - mov w0, #0 - ret - -#undef REG_PAIR -#undef REG_ONE - -#define REG_PAIR(REG1, REG2, OFFS) ldp REG1, REG2, [x0, OFFS] -#define REG_ONE(REG1, OFFS) ldr REG1, [x0, OFFS] - - .globl longjmp - .type longjmp, @function -longjmp: - GPR_LAYOUT - FPR_LAYOUT - mov sp, x16 - cmp w1, #0 - mov w0, #1 - csel w0, w1, w0, ne - br x30 diff --git a/efi/lib/arm/div.S b/efi/lib/arm/div.S deleted file mode 100644 index 71158b6..0000000 --- a/efi/lib/arm/div.S +++ /dev/null @@ -1,155 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2011, ARM. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#------------------------------------------------------------------------------ - -#include "edk2asm.h" - -.text -.align 2 -GCC_ASM_EXPORT(__aeabi_uidiv) -GCC_ASM_EXPORT(__aeabi_uidivmod) -GCC_ASM_EXPORT(__aeabi_idiv) -GCC_ASM_EXPORT(__aeabi_idivmod) - -# AREA Math, CODE, READONLY - -# -#UINT32 -#EFIAPI -#__aeabi_uidivmode ( -# IN UINT32 Dividen -# IN UINT32 Divisor -# ); -# - -ASM_PFX(__aeabi_uidiv): -ASM_PFX(__aeabi_uidivmod): - rsbs r12, r1, r0, LSR #4 - mov r2, #0 - bcc ASM_PFX(__arm_div4) - rsbs r12, r1, r0, LSR #8 - bcc ASM_PFX(__arm_div8) - mov r3, #0 - b ASM_PFX(__arm_div_large) - -# -#INT32 -#EFIAPI -#__aeabi_idivmode ( -# IN INT32 Dividen -# IN INT32 Divisor -# ); -# -ASM_PFX(__aeabi_idiv): -ASM_PFX(__aeabi_idivmod): - orrs r12, r0, r1 - bmi ASM_PFX(__arm_div_negative) - rsbs r12, r1, r0, LSR #1 - mov r2, #0 - bcc ASM_PFX(__arm_div1) - rsbs r12, r1, r0, LSR #4 - bcc ASM_PFX(__arm_div4) - rsbs r12, r1, r0, LSR #8 - bcc ASM_PFX(__arm_div8) - mov r3, #0 - b ASM_PFX(__arm_div_large) -ASM_PFX(__arm_div8): - rsbs r12, r1, r0, LSR #7 - subcs r0, r0, r1, LSL #7 - adc r2, r2, r2 - rsbs r12, r1, r0,LSR #6 - subcs r0, r0, r1, LSL #6 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #5 - subcs r0, r0, r1, LSL #5 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #4 - subcs r0, r0, r1, LSL #4 - adc r2, r2, r2 -ASM_PFX(__arm_div4): - rsbs r12, r1, r0, LSR #3 - subcs r0, r0, r1, LSL #3 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #2 - subcs r0, r0, r1, LSL #2 - adcs r2, r2, r2 - rsbs r12, r1, r0, LSR #1 - subcs r0, r0, r1, LSL #1 - adc r2, r2, r2 -ASM_PFX(__arm_div1): - subs r1, r0, r1 - movcc r1, r0 - adc r0, r2, r2 - bx r14 -ASM_PFX(__arm_div_negative): - ands r2, r1, #0x80000000 - rsbmi r1, r1, #0 - eors r3, r2, r0, ASR #32 - rsbcs r0, r0, #0 - rsbs r12, r1, r0, LSR #4 - bcc label1 - rsbs r12, r1, r0, LSR #8 - bcc label2 -ASM_PFX(__arm_div_large): - lsl r1, r1, #6 - rsbs r12, r1, r0, LSR #8 - orr r2, r2, #0xfc000000 - bcc label2 - lsl r1, r1, #6 - rsbs r12, r1, r0, LSR #8 - orr r2, r2, #0x3f00000 - bcc label2 - lsl r1, r1, #6 - rsbs r12, r1, r0, LSR #8 - orr r2, r2, #0xfc000 - orrcs r2, r2, #0x3f00 - lslcs r1, r1, #6 - rsbs r12, r1, #0 - bcs ASM_PFX(__aeabi_idiv0) -label3: - lsrcs r1, r1, #6 -label2: - rsbs r12, r1, r0, LSR #7 - subcs r0, r0, r1, LSL #7 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #6 - subcs r0, r0, r1, LSL #6 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #5 - subcs r0, r0, r1, LSL #5 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #4 - subcs r0, r0, r1, LSL #4 - adc r2, r2, r2 -label1: - rsbs r12, r1, r0, LSR #3 - subcs r0, r0, r1, LSL #3 - adc r2, r2, r2 - rsbs r12, r1, r0, LSR #2 - subcs r0, r0, r1, LSL #2 - adcs r2, r2, r2 - bcs label3 - rsbs r12, r1, r0, LSR #1 - subcs r0, r0, r1, LSL #1 - adc r2, r2, r2 - subs r1, r0, r1 - movcc r1, r0 - adc r0, r2, r2 - asrs r3, r3, #31 - rsbmi r0, r0, #0 - rsbcs r1, r1, #0 - bx r14 - - @ What to do about division by zero? For now, just return. -ASM_PFX(__aeabi_idiv0): - bx r14 diff --git a/efi/lib/arm/edk2asm.h b/efi/lib/arm/edk2asm.h deleted file mode 100644 index 9515eaf..0000000 --- a/efi/lib/arm/edk2asm.h +++ /dev/null @@ -1,6 +0,0 @@ - -#define ASM_PFX(x) x -#define GCC_ASM_EXPORT(x) \ - .globl x ; \ - .type x, %function - diff --git a/efi/lib/arm/efi_stub.S b/efi/lib/arm/efi_stub.S deleted file mode 100644 index 464eae5..0000000 --- a/efi/lib/arm/efi_stub.S +++ /dev/null @@ -1 +0,0 @@ -/* This stub is a stub to make the build happy */ diff --git a/efi/lib/arm/initplat.c b/efi/lib/arm/initplat.c deleted file mode 100644 index 135a649..0000000 --- a/efi/lib/arm/initplat.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copright (C) 2014 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#include "lib.h" - -VOID -InitializeLibPlatform ( - IN EFI_HANDLE ImageHandle EFI_UNUSED, - IN EFI_SYSTEM_TABLE *SystemTable EFI_UNUSED - ) -{ -} - -#ifdef __GNUC__ -void __div0(void) -{ - // TODO handle divide by zero fault - while (1); -} -#endif diff --git a/efi/lib/arm/ldivmod.S b/efi/lib/arm/ldivmod.S deleted file mode 100644 index edbf89e..0000000 --- a/efi/lib/arm/ldivmod.S +++ /dev/null @@ -1,61 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -//------------------------------------------------------------------------------ - - -#include "edk2asm.h" - - .text - .align 2 - GCC_ASM_EXPORT(__aeabi_ldivmod) - -// -// A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}}, -// the quotient in {r0, r1}, and the remainder in {r2, r3}. -// -//__value_in_regs lldiv_t -//EFIAPI -//__aeabi_ldivmod ( -// IN UINT64 Dividen -// IN UINT64 Divisor -// )// -// - -ASM_PFX(__aeabi_ldivmod): - push {r4,lr} - asrs r4,r1,#1 - eor r4,r4,r3,LSR #1 - bpl L_Test1 - rsbs r0,r0,#0 - rsc r1,r1,#0 -L_Test1: - tst r3,r3 - bpl L_Test2 - rsbs r2,r2,#0 - rsc r3,r3,#0 -L_Test2: - bl ASM_PFX(__aeabi_uldivmod) - tst r4,#0x40000000 - beq L_Test3 - rsbs r0,r0,#0 - rsc r1,r1,#0 -L_Test3: - tst r4,#0x80000000 - beq L_Exit - rsbs r2,r2,#0 - rsc r3,r3,#0 -L_Exit: - pop {r4,pc} - - - diff --git a/efi/lib/arm/llsl.S b/efi/lib/arm/llsl.S deleted file mode 100644 index 0f5c407..0000000 --- a/efi/lib/arm/llsl.S +++ /dev/null @@ -1,41 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2013, ARM. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#------------------------------------------------------------------------------ - -#include "edk2asm.h" - -.text -.align 2 -GCC_ASM_EXPORT(__aeabi_llsl) - -# -#VOID -#EFIAPI -#__aeabi_llsl ( -# IN VOID *Destination, -# IN VOID *Source, -# IN UINT32 Size -# ); -# -ASM_PFX(__aeabi_llsl): - subs r3,r2,#0x20 - bpl 1f - rsb r3,r2,#0x20 - lsl r1,r1,r2 - orr r1,r1,r0,lsr r3 - lsl r0,r0,r2 - bx lr -1: - lsl r1,r0,r3 - mov r0,#0 - bx lr diff --git a/efi/lib/arm/llsr.S b/efi/lib/arm/llsr.S deleted file mode 100644 index 432b27d..0000000 --- a/efi/lib/arm/llsr.S +++ /dev/null @@ -1,41 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2013, ARM. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#------------------------------------------------------------------------------ - -#include "edk2asm.h" - -.text -.align 2 -GCC_ASM_EXPORT(__aeabi_llsr) - -# -#VOID -#EFIAPI -#__aeabi_llsr ( -# IN VOID *Destination, -# IN VOID *Source, -# IN UINT32 Size -# ); -# -ASM_PFX(__aeabi_llsr): - subs r3,r2,#0x20 - bpl 1f - rsb r3,r2,#0x20 - lsr r0,r0,r2 - orr r0,r0,r1,lsl r3 - lsr r1,r1,r2 - bx lr -1: - lsr r0,r1,r3 - mov r1,#0 - bx lr diff --git a/efi/lib/arm/math.c b/efi/lib/arm/math.c deleted file mode 100644 index 4793ae2..0000000 --- a/efi/lib/arm/math.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copright (C) 2014 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#include "lib.h" - -UINT64 -LShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Left shift 64bit by 32bit and get a 64bit result -{ - return Operand << Count; -} - -UINT64 -RShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Right shift 64bit by 32bit and get a 64bit result -{ - return Operand >> Count; -} - - -UINT64 -MultU64x32 ( - IN UINT64 Multiplicand, - IN UINTN Multiplier - ) -// Multiply 64bit by 32bit and get a 64bit result -{ - return Multiplicand * Multiplier; -} - -UINT64 -DivU64x32 ( - IN UINT64 Dividend, - IN UINTN Divisor, - OUT UINTN *Remainder OPTIONAL - ) -{ - /* - * GCC turns a division into a multiplication and shift with precalculated - * constants if the divisor is constant and the dividend fits into a 32 bit - * variable. Otherwise, it will turn this into calls into the 32-bit div - * library functions. - */ - if (Remainder) - *Remainder = Dividend % Divisor; - return Dividend / Divisor; -} diff --git a/efi/lib/arm/mullu.S b/efi/lib/arm/mullu.S deleted file mode 100644 index 39b9a80..0000000 --- a/efi/lib/arm/mullu.S +++ /dev/null @@ -1,33 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#------------------------------------------------------------------------------ - -#include "edk2asm.h" - -.text -GCC_ASM_EXPORT(__aeabi_lmul) -# -#INT64 -#EFIAPI -#__aeabi_lmul ( -# IN INT64 Multiplicand -# IN INT64 Multiplier -# ); -# -ASM_PFX(__aeabi_lmul): - stmdb sp!, {lr} - mov lr, r0 - umull r0, ip, r2, lr - mla r1, r2, r1, ip - mla r1, r3, lr, r1 - ldmia sp!, {pc} diff --git a/efi/lib/arm/setjmp.S b/efi/lib/arm/setjmp.S deleted file mode 100644 index bd61a8d..0000000 --- a/efi/lib/arm/setjmp.S +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. - * This program and the accompanying materials are licensed and made - * available under the terms and conditions of the BSD License which - * accompanies this distribution. The full text of the license may - * be found at http://opensource.org/licenses/bsd-license.php. - * - * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" - * BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER - * EXPRESS OR IMPLIED. - */ - .text - .arm - .globl setjmp - .type setjmp, %function -setjmp: - mov r3, r13 - stmia r0, {r3-r12,r14} - eor r0, r0, r0 - bx lr - - .globl longjmp - .type longjmp, %function -longjmp: - ldmia r0, {r3-r12,r14} diff --git a/efi/lib/arm/uldiv.S b/efi/lib/arm/uldiv.S deleted file mode 100644 index f478898..0000000 --- a/efi/lib/arm/uldiv.S +++ /dev/null @@ -1,267 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -//------------------------------------------------------------------------------ - -#include "edk2asm.h" - - .text - .align 2 - GCC_ASM_EXPORT(__aeabi_uldivmod) - -// -//UINT64 -//EFIAPI -//__aeabi_uldivmod ( -// IN UINT64 Dividend -// IN UINT64 Divisor -// ) -// -ASM_PFX(__aeabi_uldivmod): - stmdb sp!, {r4, r5, r6, lr} - mov r4, r1 - mov r5, r0 - mov r6, #0 // 0x0 - orrs ip, r3, r2, lsr #31 - bne ASM_PFX(__aeabi_uldivmod_label1) - tst r2, r2 - beq ASM_PFX(_ll_div0) - movs ip, r2, lsr #15 - addeq r6, r6, #16 // 0x10 - mov ip, r2, lsl r6 - movs lr, ip, lsr #23 - moveq ip, ip, lsl #8 - addeq r6, r6, #8 // 0x8 - movs lr, ip, lsr #27 - moveq ip, ip, lsl #4 - addeq r6, r6, #4 // 0x4 - movs lr, ip, lsr #29 - moveq ip, ip, lsl #2 - addeq r6, r6, #2 // 0x2 - movs lr, ip, lsr #30 - moveq ip, ip, lsl #1 - addeq r6, r6, #1 // 0x1 - b ASM_PFX(_ll_udiv_small) -ASM_PFX(__aeabi_uldivmod_label1): - tst r3, #-2147483648 // 0x80000000 - bne ASM_PFX(__aeabi_uldivmod_label2) - movs ip, r3, lsr #15 - addeq r6, r6, #16 // 0x10 - mov ip, r3, lsl r6 - movs lr, ip, lsr #23 - moveq ip, ip, lsl #8 - addeq r6, r6, #8 // 0x8 - movs lr, ip, lsr #27 - moveq ip, ip, lsl #4 - addeq r6, r6, #4 // 0x4 - movs lr, ip, lsr #29 - moveq ip, ip, lsl #2 - addeq r6, r6, #2 // 0x2 - movs lr, ip, lsr #30 - addeq r6, r6, #1 // 0x1 - rsb r3, r6, #32 // 0x20 - moveq ip, ip, lsl #1 - orr ip, ip, r2, lsr r3 - mov lr, r2, lsl r6 - b ASM_PFX(_ll_udiv_big) -ASM_PFX(__aeabi_uldivmod_label2): - mov ip, r3 - mov lr, r2 - b ASM_PFX(_ll_udiv_ginormous) - -ASM_PFX(_ll_udiv_small): - cmp r4, ip, lsl #1 - mov r3, #0 // 0x0 - subcs r4, r4, ip, lsl #1 - addcs r3, r3, #2 // 0x2 - cmp r4, ip - subcs r4, r4, ip - adcs r3, r3, #0 // 0x0 - add r2, r6, #32 // 0x20 - cmp r2, #32 // 0x20 - rsb ip, ip, #0 // 0x0 - bcc ASM_PFX(_ll_udiv_small_label1) - orrs r0, r4, r5, lsr #30 - moveq r4, r5 - moveq r5, #0 // 0x0 - subeq r2, r2, #32 // 0x20 -ASM_PFX(_ll_udiv_small_label1): - mov r1, #0 // 0x0 - cmp r2, #16 // 0x10 - bcc ASM_PFX(_ll_udiv_small_label2) - movs r0, r4, lsr #14 - moveq r4, r4, lsl #16 - addeq r1, r1, #16 // 0x10 -ASM_PFX(_ll_udiv_small_label2): - sub lr, r2, r1 - cmp lr, #8 // 0x8 - bcc ASM_PFX(_ll_udiv_small_label3) - movs r0, r4, lsr #22 - moveq r4, r4, lsl #8 - addeq r1, r1, #8 // 0x8 -ASM_PFX(_ll_udiv_small_label3): - rsb r0, r1, #32 // 0x20 - sub r2, r2, r1 - orr r4, r4, r5, lsr r0 - mov r5, r5, lsl r1 - cmp r2, #1 // 0x1 - bcc ASM_PFX(_ll_udiv_small_label5) - sub r2, r2, #1 // 0x1 - and r0, r2, #7 // 0x7 - eor r0, r0, #7 // 0x7 - adds r0, r0, r0, lsl #1 - add pc, pc, r0, lsl #2 - nop // (mov r0,r0) -ASM_PFX(_ll_udiv_small_label4): - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - rsbcc r4, ip, r4 - adcs r5, r5, r5 - adcs r4, ip, r4, lsl #1 - sub r2, r2, #8 // 0x8 - tst r2, r2 - rsbcc r4, ip, r4 - bpl ASM_PFX(_ll_udiv_small_label4) -ASM_PFX(_ll_udiv_small_label5): - mov r2, r4, lsr r6 - bic r4, r4, r2, lsl r6 - adcs r0, r5, r5 - adc r1, r4, r4 - add r1, r1, r3, lsl r6 - mov r3, #0 // 0x0 - ldmia sp!, {r4, r5, r6, pc} - -ASM_PFX(_ll_udiv_big): - subs r0, r5, lr - mov r3, #0 // 0x0 - sbcs r1, r4, ip - movcs r5, r0 - movcs r4, r1 - adcs r3, r3, #0 // 0x0 - subs r0, r5, lr - sbcs r1, r4, ip - movcs r5, r0 - movcs r4, r1 - adcs r3, r3, #0 // 0x0 - subs r0, r5, lr - sbcs r1, r4, ip - movcs r5, r0 - movcs r4, r1 - adcs r3, r3, #0 // 0x0 - mov r1, #0 // 0x0 - rsbs lr, lr, #0 // 0x0 - rsc ip, ip, #0 // 0x0 - cmp r6, #16 // 0x10 - bcc ASM_PFX(_ll_udiv_big_label1) - movs r0, r4, lsr #14 - moveq r4, r4, lsl #16 - addeq r1, r1, #16 // 0x10 -ASM_PFX(_ll_udiv_big_label1): - sub r2, r6, r1 - cmp r2, #8 // 0x8 - bcc ASM_PFX(_ll_udiv_big_label2) - movs r0, r4, lsr #22 - moveq r4, r4, lsl #8 - addeq r1, r1, #8 // 0x8 -ASM_PFX(_ll_udiv_big_label2): - rsb r0, r1, #32 // 0x20 - sub r2, r6, r1 - orr r4, r4, r5, lsr r0 - mov r5, r5, lsl r1 - cmp r2, #1 // 0x1 - bcc ASM_PFX(_ll_udiv_big_label4) - sub r2, r2, #1 // 0x1 - and r0, r2, #3 // 0x3 - rsb r0, r0, #3 // 0x3 - adds r0, r0, r0, lsl #1 - add pc, pc, r0, lsl #3 - nop // (mov r0,r0) -ASM_PFX(_ll_udiv_big_label3): - adcs r5, r5, r5 - adcs r4, r4, r4 - adcs r0, lr, r5 - adcs r1, ip, r4 - movcs r5, r0 - movcs r4, r1 - adcs r5, r5, r5 - adcs r4, r4, r4 - adcs r0, lr, r5 - adcs r1, ip, r4 - movcs r5, r0 - movcs r4, r1 - adcs r5, r5, r5 - adcs r4, r4, r4 - adcs r0, lr, r5 - adcs r1, ip, r4 - movcs r5, r0 - movcs r4, r1 - sub r2, r2, #4 // 0x4 - adcs r5, r5, r5 - adcs r4, r4, r4 - adcs r0, lr, r5 - adcs r1, ip, r4 - tst r2, r2 - movcs r5, r0 - movcs r4, r1 - bpl ASM_PFX(_ll_udiv_big_label3) -ASM_PFX(_ll_udiv_big_label4): - mov r1, #0 // 0x0 - mov r2, r5, lsr r6 - bic r5, r5, r2, lsl r6 - adcs r0, r5, r5 - adc r1, r1, #0 // 0x0 - movs lr, r3, lsl r6 - mov r3, r4, lsr r6 - bic r4, r4, r3, lsl r6 - adc r1, r1, #0 // 0x0 - adds r0, r0, lr - orr r2, r2, r4, ror r6 - adc r1, r1, #0 // 0x0 - ldmia sp!, {r4, r5, r6, pc} - -ASM_PFX(_ll_udiv_ginormous): - subs r2, r5, lr - mov r1, #0 // 0x0 - sbcs r3, r4, ip - adc r0, r1, r1 - movcc r2, r5 - movcc r3, r4 - ldmia sp!, {r4, r5, r6, pc} - -ASM_PFX(_ll_div0): - ldmia sp!, {r4, r5, r6, lr} - mov r0, #0 // 0x0 - mov r1, #0 // 0x0 - b ASM_PFX(__aeabi_ldiv0) - -ASM_PFX(__aeabi_ldiv0): - bx r14 - - diff --git a/efi/lib/boxdraw.c b/efi/lib/boxdraw.c deleted file mode 100644 index 5865fb9..0000000 --- a/efi/lib/boxdraw.c +++ /dev/null @@ -1,173 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - BoxDraw.c - -Abstract: - Lib functions to support Box Draw Unicode code pages. - - - -Revision History - ---*/ - -#include "lib.h" - -typedef struct { - CHAR16 Unicode; - CHAR8 PcAnsi; - CHAR8 Ascii; -} UNICODE_TO_CHAR; - - -// -// This list is used to define the valid extend chars. -// It also provides a mapping from Unicode to PCANSI or -// ASCII. The ASCII mapping we just made up. -// -// - -STATIC UNICODE_TO_CHAR UnicodeToPcAnsiOrAscii[] = { - { BOXDRAW_HORIZONTAL, 0xc4, L'-'}, - { BOXDRAW_VERTICAL, 0xb3, L'|'}, - { BOXDRAW_DOWN_RIGHT, 0xda, L'/'}, - { BOXDRAW_DOWN_LEFT, 0xbf, L'\\'}, - { BOXDRAW_UP_RIGHT, 0xc0, L'\\'}, - { BOXDRAW_UP_LEFT, 0xd9, L'/'}, - { BOXDRAW_VERTICAL_RIGHT, 0xc3, L'|'}, - { BOXDRAW_VERTICAL_LEFT, 0xb4, L'|'}, - { BOXDRAW_DOWN_HORIZONTAL, 0xc2, L'+'}, - { BOXDRAW_UP_HORIZONTAL, 0xc1, L'+'}, - { BOXDRAW_VERTICAL_HORIZONTAL, 0xc5, L'+'}, - { BOXDRAW_DOUBLE_HORIZONTAL, 0xcd, L'-'}, - { BOXDRAW_DOUBLE_VERTICAL, 0xba, L'|'}, - { BOXDRAW_DOWN_RIGHT_DOUBLE, 0xd5, L'/'}, - { BOXDRAW_DOWN_DOUBLE_RIGHT, 0xd6, L'/'}, - { BOXDRAW_DOUBLE_DOWN_RIGHT, 0xc9, L'/'}, - { BOXDRAW_DOWN_LEFT_DOUBLE, 0xb8, L'\\'}, - { BOXDRAW_DOWN_DOUBLE_LEFT, 0xb7, L'\\'}, - { BOXDRAW_DOUBLE_DOWN_LEFT, 0xbb, L'\\'}, - { BOXDRAW_UP_RIGHT_DOUBLE, 0xd4, L'\\'}, - { BOXDRAW_UP_DOUBLE_RIGHT, 0xd3, L'\\'}, - { BOXDRAW_DOUBLE_UP_RIGHT, 0xc8, L'\\'}, - { BOXDRAW_UP_LEFT_DOUBLE, 0xbe, L'/'}, - { BOXDRAW_UP_DOUBLE_LEFT, 0xbd, L'/'}, - { BOXDRAW_DOUBLE_UP_LEFT, 0xbc, L'/'}, - { BOXDRAW_VERTICAL_RIGHT_DOUBLE, 0xc6, L'|'}, - { BOXDRAW_VERTICAL_DOUBLE_RIGHT, 0xc7, L'|'}, - { BOXDRAW_DOUBLE_VERTICAL_RIGHT, 0xcc, L'|'}, - { BOXDRAW_VERTICAL_LEFT_DOUBLE, 0xb5, L'|'}, - { BOXDRAW_VERTICAL_DOUBLE_LEFT, 0xb6, L'|'}, - { BOXDRAW_DOUBLE_VERTICAL_LEFT, 0xb9, L'|'}, - { BOXDRAW_DOWN_HORIZONTAL_DOUBLE, 0xd1, L'+'}, - { BOXDRAW_DOWN_DOUBLE_HORIZONTAL, 0xd2, L'+'}, - { BOXDRAW_DOUBLE_DOWN_HORIZONTAL, 0xcb, L'+'}, - { BOXDRAW_UP_HORIZONTAL_DOUBLE, 0xcf, L'+'}, - { BOXDRAW_UP_DOUBLE_HORIZONTAL, 0xd0, L'+'}, - { BOXDRAW_DOUBLE_UP_HORIZONTAL, 0xca, L'+'}, - { BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE, 0xd8, L'+'}, - { BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL, 0xd7, L'+'}, - { BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL, 0xce, L'+'}, - - { BLOCKELEMENT_FULL_BLOCK, 0xdb, L'*'}, - { BLOCKELEMENT_LIGHT_SHADE, 0xb0, L'+'}, - - { GEOMETRICSHAPE_UP_TRIANGLE, 0x1e, L'^'}, - { GEOMETRICSHAPE_RIGHT_TRIANGLE, 0x10, L'>'}, - { GEOMETRICSHAPE_DOWN_TRIANGLE, 0x1f, L'v'}, - { GEOMETRICSHAPE_LEFT_TRIANGLE, 0x11, L'<'}, - - /* BugBug: Left Arrow is an ESC. We can not make it print - on a PCANSI terminal. If we can make left arrow - come out on PC ANSI we can add it back. - - { ARROW_LEFT, 0x1b, L'<'}, - */ - - { ARROW_UP, 0x18, L'^'}, - - /* BugBut: Took out left arrow so right has to go too. - { ARROW_RIGHT, 0x1a, L'>'}, - */ - { ARROW_DOWN, 0x19, L'v'}, - - { 0x0000, 0x00, L'\0' } -}; - - -BOOLEAN -LibIsValidTextGraphics ( - IN CHAR16 Graphic, - OUT CHAR8 *PcAnsi, OPTIONAL - OUT CHAR8 *Ascii OPTIONAL - ) -/*++ - -Routine Description: - - Detects if a Unicode char is for Box Drawing text graphics. - -Arguments: - - Grphic - Unicode char to test. - - PcAnsi - Optional pointer to return PCANSI equivalent of Graphic. - - Asci - Optional pointer to return Ascii equivalent of Graphic. - -Returns: - - TRUE if Gpaphic is a supported Unicode Box Drawing character. - ---*/{ - UNICODE_TO_CHAR *Table; - - if ((((Graphic & 0xff00) != 0x2500) && ((Graphic & 0xff00) != 0x2100))) { - - // - // Unicode drawing code charts are all in the 0x25xx range, - // arrows are 0x21xx - // - return FALSE; - } - - for (Table = UnicodeToPcAnsiOrAscii; Table->Unicode != 0x0000; Table++) { - if (Graphic == Table->Unicode) { - if (PcAnsi) { - *PcAnsi = Table->PcAnsi; - } - if (Ascii) { - *Ascii = Table->Ascii; - } - return TRUE; - } - } - return FALSE; -} - -BOOLEAN -IsValidAscii ( - IN CHAR16 Ascii - ) -{ - if ((Ascii >= 0x20) && (Ascii <= 0x7f)) { - return TRUE; - } - return FALSE; -} - -BOOLEAN -IsValidEfiCntlChar ( - IN CHAR16 c - ) -{ - if (c == CHAR_NULL || c == CHAR_BACKSPACE || c == CHAR_LINEFEED || c == CHAR_CARRIAGE_RETURN) { - return TRUE; - } - return FALSE; -} - diff --git a/efi/lib/cmdline.c b/efi/lib/cmdline.c deleted file mode 100644 index f21c44c..0000000 --- a/efi/lib/cmdline.c +++ /dev/null @@ -1,121 +0,0 @@ -#include "lib.h" - -#include "efiprot.h" -#include "efishellintf.h" -#include "efishellparm.h" - -#ifndef MAX_ARGV_CONTENTS_SIZE -# define MAX_CMDLINE_SIZE 1024 -#endif -#ifndef MAX_ARGC -# define MAX_CMDLINE_ARGC 32 -#endif - -/* - Parse LoadedImage options area, called only in case the regular - shell protos are not available. - - Format of LoadedImage->LoadOptions appears to be a - single-space-separated list of args (looks like the shell already - pre-parses the input, it apparently folds several consecutive spaces - into one): - argv[0] space argv[1] (etc.) argv[N] space \0 cwd \0 other data - For safety, we support the trailing \0 without a space before, as - well as several consecutive spaces (-> several args). -*/ -static -INTN -GetShellArgcArgvFromLoadedImage( - EFI_HANDLE ImageHandle, - CHAR16 **ResultArgv[] - ) -{ - EFI_STATUS Status; - void *LoadedImage = NULL; - static CHAR16 ArgvContents[MAX_CMDLINE_SIZE]; - static CHAR16 *Argv[MAX_CMDLINE_ARGC], *ArgStart, *c; - UINTN Argc = 0, BufLen; - - Status = uefi_call_wrapper(BS->OpenProtocol, 6, - ImageHandle, - &LoadedImageProtocol, - &LoadedImage, - ImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR(Status)) - return -1; - - BufLen = ((EFI_LOADED_IMAGE *)LoadedImage)->LoadOptionsSize; - if (BufLen < 2) /* We are expecting at least a \0 */ - return -1; - else if (BufLen > sizeof(ArgvContents)) - BufLen = sizeof(ArgvContents); - - CopyMem(ArgvContents, ((EFI_LOADED_IMAGE *)LoadedImage)->LoadOptions, BufLen); - ArgvContents[MAX_CMDLINE_SIZE - 1] = L'\0'; - - for (c = ArgStart = ArgvContents ; *c != L'\0' ; ++c) { - if (*c == L' ') { - *c = L'\0'; - if (Argc < MAX_CMDLINE_ARGC) Argv[Argc++] = ArgStart; - ArgStart = c + 1; - } - } - - if ((*ArgStart != L'\0') && (Argc < MAX_CMDLINE_ARGC)) - Argv[Argc++] = ArgStart; - - // Print(L"Got argc/argv from loaded image proto\n"); - *ResultArgv = Argv; - return Argc; -} - -INTN GetShellArgcArgv(EFI_HANDLE ImageHandle, CHAR16 **Argv[]) -{ - // Code inspired from EDK2's - // ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.c (BSD) - EFI_STATUS Status; - static const EFI_GUID EfiShellParametersProtocolGuid - = EFI_SHELL_PARAMETERS_PROTOCOL_GUID; - static const EFI_GUID ShellInterfaceProtocolGuid - = SHELL_INTERFACE_PROTOCOL_GUID; - EFI_SHELL_PARAMETERS_PROTOCOL *EfiShellParametersProtocol = NULL; - EFI_SHELL_INTERFACE *EfiShellInterfaceProtocol = NULL; - - Status = uefi_call_wrapper(BS->OpenProtocol, 6, - ImageHandle, - (EFI_GUID*)&EfiShellParametersProtocolGuid, - (VOID **)&EfiShellParametersProtocol, - ImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (!EFI_ERROR(Status)) - { - // use shell 2.0 interface - // Print(L"Got argc/argv from shell intf proto\n"); - *Argv = EfiShellParametersProtocol->Argv; - return EfiShellParametersProtocol->Argc; - } - - // try to get shell 1.0 interface instead. - Status = uefi_call_wrapper(BS->OpenProtocol, 6, - ImageHandle, - (EFI_GUID*)&ShellInterfaceProtocolGuid, - (VOID **)&EfiShellInterfaceProtocol, - ImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (!EFI_ERROR(Status)) - { - // Print(L"Got argc/argv from shell params proto\n"); - *Argv = EfiShellInterfaceProtocol->Argv; - return EfiShellInterfaceProtocol->Argc; - } - - // shell 1.0 and 2.0 interfaces failed - return GetShellArgcArgvFromLoadedImage(ImageHandle, Argv); -} diff --git a/efi/lib/console.c b/efi/lib/console.c deleted file mode 100644 index 5ca47ef..0000000 --- a/efi/lib/console.c +++ /dev/null @@ -1,104 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - console.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - - -VOID -Output ( - IN CHAR16 *Str - ) -// Write a string to the console at the current cursor location -{ - uefi_call_wrapper(ST->ConOut->OutputString, 2, ST->ConOut, Str); -} - - -VOID -Input ( - IN CHAR16 *Prompt OPTIONAL, - OUT CHAR16 *InStr, - IN UINTN StrLen - ) -// Input a string at the current cursor location, for StrLen -{ - IInput ( - ST->ConOut, - ST->ConIn, - Prompt, - InStr, - StrLen - ); -} - -VOID -IInput ( - IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut, - IN SIMPLE_INPUT_INTERFACE *ConIn, - IN CHAR16 *Prompt OPTIONAL, - OUT CHAR16 *InStr, - IN UINTN StrLen - ) -// Input a string at the current cursor location, for StrLen -{ - EFI_INPUT_KEY Key; - EFI_STATUS Status; - UINTN Len; - - if (Prompt) { - ConOut->OutputString (ConOut, Prompt); - } - - Len = 0; - for (; ;) { - WaitForSingleEvent (ConIn->WaitForKey, 0); - - Status = uefi_call_wrapper(ConIn->ReadKeyStroke, 2, ConIn, &Key); - if (EFI_ERROR(Status)) { - DEBUG((D_ERROR, "Input: error return from ReadKey %x\n", Status)); - break; - } - - if (Key.UnicodeChar == '\n' || - Key.UnicodeChar == '\r') { - break; - } - - if (Key.UnicodeChar == '\b') { - if (Len) { - uefi_call_wrapper(ConOut->OutputString, 2, ConOut, L"\b \b"); - Len -= 1; - } - continue; - } - - if (Key.UnicodeChar >= ' ') { - if (Len < StrLen-1) { - InStr[Len] = Key.UnicodeChar; - - InStr[Len+1] = 0; - uefi_call_wrapper(ConOut->OutputString, 2, ConOut, &InStr[Len]); - - Len += 1; - } - continue; - } - } - - InStr[Len] = 0; -} diff --git a/efi/lib/crc.c b/efi/lib/crc.c deleted file mode 100644 index 4367ed1..0000000 --- a/efi/lib/crc.c +++ /dev/null @@ -1,218 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - crc.c - -Abstract: - - CRC32 functions - - - -Revision History - ---*/ - -#include "lib.h" - - -UINT32 CRCTable[256] = { - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, - 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, - 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, - 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, - 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, - 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, - 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, - 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, - 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, - 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, - 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, - 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, - 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, - 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, - 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, - 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, - 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, - 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, - 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, - 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, - 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, - 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, - 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, - 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, - 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, - 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, - 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, - 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, - 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, - 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, - 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, - 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, - 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, - 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, - 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, - 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, - 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, - 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, - 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, - 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D - }; - - - -VOID -SetCrc ( - IN OUT EFI_TABLE_HEADER *Hdr - ) -/*++ - -Routine Description: - - Updates the CRC32 value in the table header - -Arguments: - - Hdr - The table to update - -Returns: - - None - ---*/ -{ - SetCrcAltSize (Hdr->HeaderSize, Hdr); -} - -VOID -SetCrcAltSize ( - IN UINTN Size, - IN OUT EFI_TABLE_HEADER *Hdr - ) -/*++ - -Routine Description: - - Updates the CRC32 value in the table header - -Arguments: - - Hdr - The table to update - -Returns: - - None - ---*/ -{ - Hdr->CRC32 = 0; - Hdr->CRC32 = CalculateCrc((UINT8 *)Hdr, Size); -} - - -BOOLEAN -CheckCrc ( - IN UINTN MaxSize, - IN OUT EFI_TABLE_HEADER *Hdr - ) -/*++ - -Routine Description: - - Checks the CRC32 value in the table header - -Arguments: - - Hdr - The table to check - -Returns: - - TRUE if the CRC is OK in the table - ---*/ -{ - return CheckCrcAltSize (MaxSize, Hdr->HeaderSize, Hdr); -} - - - - -BOOLEAN -CheckCrcAltSize ( - IN UINTN MaxSize, - IN UINTN Size, - IN OUT EFI_TABLE_HEADER *Hdr - ) -/*++ - -Routine Description: - - Checks the CRC32 value in the table header - -Arguments: - - Hdr - The table to check - -Returns: - - TRUE if the CRC is OK in the table - ---*/ -{ - UINT32 Crc; - UINT32 OrgCrc; - BOOLEAN f; - - if (Size == 0) { - // - // If header size is 0 CRC will pass so return FALSE here - // - return FALSE; - } - if (MaxSize && Size > MaxSize) { - DEBUG((D_ERROR, "CheckCrc32: Size > MaxSize\n")); - return FALSE; - } - - // clear old crc from header - OrgCrc = Hdr->CRC32; - Hdr->CRC32 = 0; - Crc = CalculateCrc((UINT8 *)Hdr, Size); - - // set restults - Hdr->CRC32 = OrgCrc; - - // return status - f = OrgCrc == (UINT32) Crc; - if (!f) { - DEBUG((D_ERROR, "CheckCrc32: Crc check failed\n")); - } - - return f; -} - - -UINT32 -CalculateCrc ( - UINT8 *pt, - UINTN Size - ) -{ - UINTN Crc; - - // compute crc - Crc = 0xffffffff; - while (Size) { - Crc = (Crc >> 8) ^ CRCTable[(UINT8) Crc ^ *pt]; - pt += 1; - Size -= 1; - } - Crc = Crc ^ 0xffffffff; - return (UINT32)Crc; -} diff --git a/efi/lib/data.c b/efi/lib/data.c deleted file mode 100644 index 5b4f3b5..0000000 --- a/efi/lib/data.c +++ /dev/null @@ -1,203 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - data.c - -Abstract: - - EFI library global data - - - -Revision History - ---*/ - -#include "lib.h" - -// -// LibInitialized - TRUE once InitializeLib() is called for the first time -// - -BOOLEAN LibInitialized = FALSE; - -// -// ImageHandle - Current ImageHandle, as passed to InitializeLib -// -EFI_HANDLE LibImageHandle; - -// -// ST - pointer to the EFI system table -// - -EFI_SYSTEM_TABLE *ST; - -// -// BS - pointer to the boot services table -// - -EFI_BOOT_SERVICES *BS; - - -// -// Default pool allocation type -// - -EFI_MEMORY_TYPE PoolAllocationType = EfiBootServicesData; - -// -// Unicode collation functions that are in use -// - -EFI_UNICODE_COLLATION_INTERFACE LibStubUnicodeInterface = { - LibStubStriCmp, - LibStubMetaiMatch, - LibStubStrLwrUpr, - LibStubStrLwrUpr, - NULL, // FatToStr - NULL, // StrToFat - NULL // SupportedLanguages -}; - -EFI_UNICODE_COLLATION_INTERFACE *UnicodeInterface = &LibStubUnicodeInterface; - -// -// Root device path -// - -EFI_DEVICE_PATH RootDevicePath[] = { - {END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, {END_DEVICE_PATH_LENGTH,0}} -}; - -EFI_DEVICE_PATH EndDevicePath[] = { - {END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, {END_DEVICE_PATH_LENGTH, 0}} -}; - -EFI_DEVICE_PATH EndInstanceDevicePath[] = { - {END_DEVICE_PATH_TYPE, END_INSTANCE_DEVICE_PATH_SUBTYPE, {END_DEVICE_PATH_LENGTH, 0}} -}; - - -// -// EFI IDs -// - -EFI_GUID gEfiGlobalVariableGuid = EFI_GLOBAL_VARIABLE; -EFI_GUID NullGuid = { 0,0,0,{0,0,0,0,0,0,0,0} }; - -// -// Protocol IDs -// - -EFI_GUID gEfiDevicePathProtocolGuid = EFI_DEVICE_PATH_PROTOCOL_GUID; -EFI_GUID gEfiDevicePathToTextProtocolGuid = EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID; -EFI_GUID gEfiDevicePathFromTextProtocolGuid = EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID; -EFI_GUID gEfiLoadedImageProtocolGuid = EFI_LOADED_IMAGE_PROTOCOL_GUID; -EFI_GUID gEfiSimpleTextInProtocolGuid = EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID; -EFI_GUID gEfiSimpleTextOutProtocolGuid = EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID; -EFI_GUID gEfiBlockIoProtocolGuid = EFI_BLOCK_IO_PROTOCOL_GUID; -EFI_GUID gEfiBlockIo2ProtocolGuid = EFI_BLOCK_IO2_PROTOCOL_GUID; -EFI_GUID gEfiDiskIoProtocolGuid = EFI_DISK_IO_PROTOCOL_GUID; -EFI_GUID gEfiDiskIo2ProtocolGuid = EFI_DISK_IO2_PROTOCOL_GUID; -EFI_GUID gEfiSimpleFileSystemProtocolGuid = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID; -EFI_GUID gEfiLoadFileProtocolGuid = EFI_LOAD_FILE_PROTOCOL_GUID; -EFI_GUID gEfiDeviceIoProtocolGuid = EFI_DEVICE_IO_PROTOCOL_GUID; -EFI_GUID gEfiUnicodeCollationProtocolGuid = EFI_UNICODE_COLLATION_PROTOCOL_GUID; -EFI_GUID gEfiSerialIoProtocolGuid = EFI_SERIAL_IO_PROTOCOL_GUID; -EFI_GUID gEfiSimpleNetworkProtocolGuid = EFI_SIMPLE_NETWORK_PROTOCOL_GUID; -EFI_GUID gEfiPxeBaseCodeProtocolGuid = EFI_PXE_BASE_CODE_PROTOCOL_GUID; -EFI_GUID gEfiPxeBaseCodeCallbackProtocolGuid = EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID; -EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid = EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID; -EFI_GUID gEFiUiInterfaceProtocolGuid = EFI_UI_INTERFACE_PROTOCOL_GUID; -EFI_GUID gEfiPciIoProtocolGuid = EFI_PCI_IO_PROTOCOL_GUID; -EFI_GUID gEfiPciRootBridgeIoProtocolGuid = EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID; -EFI_GUID gEfiDriverBindingProtocolGuid = EFI_DRIVER_BINDING_PROTOCOL_GUID; -EFI_GUID gEfiComponentNameProtocolGuid = EFI_COMPONENT_NAME_PROTOCOL_GUID; -EFI_GUID gEfiComponentName2ProtocolGuid = EFI_COMPONENT_NAME2_PROTOCOL_GUID; -EFI_GUID gEfiHashProtocolGuid = EFI_HASH_PROTOCOL_GUID; -EFI_GUID gEfiPlatformDriverOverrideProtocolGuid = EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID; -EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid = EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID; -EFI_GUID gEfiDriverFamilyOverrideProtocolGuid = EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID; -EFI_GUID gEfiEbcProtocolGuid = EFI_EBC_PROTOCOL_GUID; - -// -// File system information IDs -// - -EFI_GUID gEfiFileInfoGuid = EFI_FILE_INFO_ID; -EFI_GUID gEfiFileSystemInfoGuid = EFI_FILE_SYSTEM_INFO_ID; -EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid = EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID; - -// -// Reference implementation public protocol IDs -// - -EFI_GUID InternalShellProtocol = INTERNAL_SHELL_GUID; -EFI_GUID VariableStoreProtocol = VARIABLE_STORE_PROTOCOL; -EFI_GUID LegacyBootProtocol = LEGACY_BOOT_PROTOCOL; -EFI_GUID VgaClassProtocol = VGA_CLASS_DRIVER_PROTOCOL; - -EFI_GUID TextOutSpliterProtocol = TEXT_OUT_SPLITER_PROTOCOL; -EFI_GUID ErrorOutSpliterProtocol = ERROR_OUT_SPLITER_PROTOCOL; -EFI_GUID TextInSpliterProtocol = TEXT_IN_SPLITER_PROTOCOL; -/* Added for GOP support */ -EFI_GUID gEfiGraphicsOutputProtocolGuid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; -EFI_GUID gEfiEdidDiscoveredProtocolGuid = EFI_EDID_DISCOVERED_PROTOCOL_GUID; -EFI_GUID gEfiEdidActiveProtocolGuid = EFI_EDID_ACTIVE_PROTOCOL_GUID; -EFI_GUID gEfiEdidOverrideProtocolGuid = EFI_EDID_OVERRIDE_PROTOCOL_GUID; - -EFI_GUID AdapterDebugProtocol = ADAPTER_DEBUG_PROTOCOL; - -// -// Device path media protocol IDs -// -EFI_GUID gEfiPcAnsiGuid = EFI_PC_ANSI_GUID; -EFI_GUID gEfiVT100Guid = EFI_VT_100_GUID; -EFI_GUID gEfiVT100PlusGuid = EFI_VT_100_PLUS_GUID; -EFI_GUID gEfiVTUTF8Guid = EFI_VT_UTF8_GUID; - -// -// EFI GPT Partition Type GUIDs -// -EFI_GUID EfiPartTypeSystemPartitionGuid = EFI_PART_TYPE_EFI_SYSTEM_PART_GUID; -EFI_GUID EfiPartTypeLegacyMbrGuid = EFI_PART_TYPE_LEGACY_MBR_GUID; - - -// -// Reference implementation Vendor Device Path Guids -// -EFI_GUID UnknownDevice = UNKNOWN_DEVICE_GUID; - -// -// Configuration Table GUIDs -// - -EFI_GUID MpsTableGuid = MPS_TABLE_GUID; -EFI_GUID AcpiTableGuid = ACPI_TABLE_GUID; -EFI_GUID SMBIOSTableGuid = SMBIOS_TABLE_GUID; -EFI_GUID SalSystemTableGuid = SAL_SYSTEM_TABLE_GUID; - -// -// Network protocol GUIDs -// -EFI_GUID Ip4ServiceBindingProtocol = EFI_IP4_SERVICE_BINDING_PROTOCOL; -EFI_GUID Ip4Protocol = EFI_IP4_PROTOCOL; -EFI_GUID Udp4ServiceBindingProtocol = EFI_UDP4_SERVICE_BINDING_PROTOCOL; -EFI_GUID Udp4Protocol = EFI_UDP4_PROTOCOL; -EFI_GUID Tcp4ServiceBindingProtocol = EFI_TCP4_SERVICE_BINDING_PROTOCOL; -EFI_GUID Tcp4Protocol = EFI_TCP4_PROTOCOL; - -// -// Pointer protocol GUIDs -// -EFI_GUID SimplePointerProtocol = EFI_SIMPLE_POINTER_PROTOCOL_GUID; -EFI_GUID AbsolutePointerProtocol = EFI_ABSOLUTE_POINTER_PROTOCOL_GUID; - -// -// Debugger protocol GUIDs -// -EFI_GUID gEfiDebugImageInfoTableGuid = EFI_DEBUG_IMAGE_INFO_TABLE_GUID; -EFI_GUID gEfiDebugSupportProtocolGuid = EFI_DEBUG_SUPPORT_PROTOCOL_GUID; diff --git a/efi/lib/debug.c b/efi/lib/debug.c deleted file mode 100644 index b635123..0000000 --- a/efi/lib/debug.c +++ /dev/null @@ -1,43 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - debug.c - -Abstract: - - Debug library functions - - - -Revision History - ---*/ - -#include "lib.h" - - - -// -// Declare runtime functions -// - -// -// -// - -INTN -DbgAssert ( - IN CONST CHAR8 *FileName, - IN INTN LineNo, - IN CONST CHAR8 *Description - ) -{ - DbgPrint (D_ERROR, (CHAR8 *)"%EASSERT FAILED: %a(%d): %a%N\n", FileName, LineNo, Description); - - BREAKPOINT(); - return 0; -} - diff --git a/efi/lib/dpath.c b/efi/lib/dpath.c deleted file mode 100644 index 7486252..0000000 --- a/efi/lib/dpath.c +++ /dev/null @@ -1,1260 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - dpath.c - -Abstract: - MBR & Device Path functions - - - -Revision History - -2014/04 B.Burette - updated device path text representation, conforming to - UEFI specification 2.4 (dec. 2013). More specifically: - - § 9.3.5: added some media types ie. Sata() - - § 9.6.1.2: Acpi(PNP0A03,0) makes more sense when displayed as PciRoot(0) - - § 9.6.1.5: use commas (instead of '|') between option specific parameters - - § 9.6.1.6: hex values in device paths must be preceded by "0x" or "0X" - ---*/ - -#include "lib.h" - -#define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0) - - - -EFI_DEVICE_PATH * -DevicePathFromHandle ( - IN EFI_HANDLE Handle - ) -{ - EFI_STATUS Status; - EFI_DEVICE_PATH *DevicePath; - - Status = uefi_call_wrapper(BS->HandleProtocol, 3, Handle, &DevicePathProtocol, (VOID*)&DevicePath); - if (EFI_ERROR(Status)) { - DevicePath = NULL; - } - - return DevicePath; -} - - -EFI_DEVICE_PATH * -DevicePathInstance ( - IN OUT EFI_DEVICE_PATH **DevicePath, - OUT UINTN *Size - ) -{ - EFI_DEVICE_PATH *Start, *Next, *DevPath; - UINTN Count; - - DevPath = *DevicePath; - Start = DevPath; - - if (!DevPath) { - return NULL; - } - - // - // Check for end of device path type - // - - for (Count = 0; ; Count++) { - Next = NextDevicePathNode(DevPath); - - if (IsDevicePathEndType(DevPath)) { - break; - } - - if (Count > 01000) { - // - // BugBug: Debug code to catch bogus device paths - // - DEBUG((D_ERROR, "DevicePathInstance: DevicePath %x Size %d", *DevicePath, ((UINT8 *) DevPath) - ((UINT8 *) Start) )); - DumpHex (0, 0, ((UINT8 *) DevPath) - ((UINT8 *) Start), Start); - break; - } - - DevPath = Next; - } - - ASSERT (DevicePathSubType(DevPath) == END_ENTIRE_DEVICE_PATH_SUBTYPE || - DevicePathSubType(DevPath) == END_INSTANCE_DEVICE_PATH_SUBTYPE); - - // - // Set next position - // - - if (DevicePathSubType(DevPath) == END_ENTIRE_DEVICE_PATH_SUBTYPE) { - Next = NULL; - } - - *DevicePath = Next; - - // - // Return size and start of device path instance - // - - *Size = ((UINT8 *) DevPath) - ((UINT8 *) Start); - return Start; -} - -UINTN -DevicePathInstanceCount ( - IN EFI_DEVICE_PATH *DevicePath - ) -{ - UINTN Count, Size; - - Count = 0; - while (DevicePathInstance(&DevicePath, &Size)) { - Count += 1; - } - - return Count; -} - - -EFI_DEVICE_PATH * -AppendDevicePath ( - IN EFI_DEVICE_PATH *Src1, - IN EFI_DEVICE_PATH *Src2 - ) -// Src1 may have multiple "instances" and each instance is appended -// Src2 is appended to each instance is Src1. (E.g., it's possible -// to append a new instance to the complete device path by passing -// it in Src2) -{ - UINTN Src1Size, Src1Inst, Src2Size, Size; - EFI_DEVICE_PATH *Dst, *Inst; - UINT8 *DstPos; - - // - // If there's only 1 path, just duplicate it - // - - if (!Src1) { - ASSERT (!IsDevicePathUnpacked (Src2)); - return DuplicateDevicePath (Src2); - } - - if (!Src2) { - ASSERT (!IsDevicePathUnpacked (Src1)); - return DuplicateDevicePath (Src1); - } - - // - // Verify we're not working with unpacked paths - // - -// ASSERT (!IsDevicePathUnpacked (Src1)); -// ASSERT (!IsDevicePathUnpacked (Src2)); - - // - // Append Src2 to every instance in Src1 - // - - Src1Size = DevicePathSize(Src1); - Src1Inst = DevicePathInstanceCount(Src1); - Src2Size = DevicePathSize(Src2); - Size = Src1Size * Src1Inst + Src2Size; - - Dst = AllocatePool (Size); - if (Dst) { - DstPos = (UINT8 *) Dst; - - // - // Copy all device path instances - // - - while ((Inst = DevicePathInstance (&Src1, &Size))) { - - CopyMem(DstPos, Inst, Size); - DstPos += Size; - - CopyMem(DstPos, Src2, Src2Size); - DstPos += Src2Size; - - CopyMem(DstPos, EndInstanceDevicePath, sizeof(EFI_DEVICE_PATH)); - DstPos += sizeof(EFI_DEVICE_PATH); - } - - // Change last end marker - DstPos -= sizeof(EFI_DEVICE_PATH); - CopyMem(DstPos, EndDevicePath, sizeof(EFI_DEVICE_PATH)); - } - - return Dst; -} - - -EFI_DEVICE_PATH * -AppendDevicePathNode ( - IN EFI_DEVICE_PATH *Src1, - IN EFI_DEVICE_PATH *Src2 - ) -// Src1 may have multiple "instances" and each instance is appended -// Src2 is a signal device path node (without a terminator) that is -// appended to each instance is Src1. -{ - EFI_DEVICE_PATH *Temp, *Eop; - UINTN Length; - - // - // Build a Src2 that has a terminator on it - // - - Length = DevicePathNodeLength(Src2); - Temp = AllocatePool (Length + sizeof(EFI_DEVICE_PATH)); - if (!Temp) { - return NULL; - } - - CopyMem (Temp, Src2, Length); - Eop = NextDevicePathNode(Temp); - SetDevicePathEndNode(Eop); - - // - // Append device paths - // - - Src1 = AppendDevicePath (Src1, Temp); - FreePool (Temp); - return Src1; -} - - -EFI_DEVICE_PATH * -FileDevicePath ( - IN EFI_HANDLE Device OPTIONAL, - IN CHAR16 *FileName - ) -/*++ - - N.B. Results are allocated from pool. The caller must FreePool - the resulting device path structure - ---*/ -{ - UINTN Size; - FILEPATH_DEVICE_PATH *FilePath; - EFI_DEVICE_PATH *Eop, *DevicePath; - - Size = StrSize(FileName); - FilePath = AllocateZeroPool (Size + SIZE_OF_FILEPATH_DEVICE_PATH + sizeof(EFI_DEVICE_PATH)); - DevicePath = NULL; - - if (FilePath) { - - // - // Build a file path - // - - FilePath->Header.Type = MEDIA_DEVICE_PATH; - FilePath->Header.SubType = MEDIA_FILEPATH_DP; - SetDevicePathNodeLength (&FilePath->Header, Size + SIZE_OF_FILEPATH_DEVICE_PATH); - CopyMem (FilePath->PathName, FileName, Size); - Eop = NextDevicePathNode(&FilePath->Header); - SetDevicePathEndNode(Eop); - - // - // Append file path to device's device path - // - - DevicePath = (EFI_DEVICE_PATH *) FilePath; - if (Device) { - DevicePath = AppendDevicePath ( - DevicePathFromHandle(Device), - DevicePath - ); - - FreePool(FilePath); - } - } - - return DevicePath; -} - - - -UINTN -DevicePathSize ( - IN EFI_DEVICE_PATH *DevPath - ) -{ - EFI_DEVICE_PATH *Start; - - // - // Search for the end of the device path structure - // - - Start = DevPath; - while (!IsDevicePathEnd(DevPath)) { - DevPath = NextDevicePathNode(DevPath); - } - - // - // Compute the size - // - - return ((UINTN) DevPath - (UINTN) Start) + sizeof(EFI_DEVICE_PATH); -} - -EFI_DEVICE_PATH * -DuplicateDevicePath ( - IN EFI_DEVICE_PATH *DevPath - ) -{ - EFI_DEVICE_PATH *NewDevPath; - UINTN Size; - - - // - // Compute the size - // - - Size = DevicePathSize (DevPath); - - // - // Make a copy - // - - NewDevPath = AllocatePool (Size); - if (NewDevPath) { - CopyMem (NewDevPath, DevPath, Size); - } - - return NewDevPath; -} - -EFI_DEVICE_PATH * -UnpackDevicePath ( - IN EFI_DEVICE_PATH *DevPath - ) -{ - EFI_DEVICE_PATH *Src, *Dest, *NewPath; - UINTN Size; - - // - // Walk device path and round sizes to valid boundries - // - - Src = DevPath; - Size = 0; - for (; ;) { - Size += DevicePathNodeLength(Src); - Size += ALIGN_SIZE(Size); - - if (IsDevicePathEnd(Src)) { - break; - } - - Src = NextDevicePathNode(Src); - } - - - // - // Allocate space for the unpacked path - // - - NewPath = AllocateZeroPool (Size); - if (NewPath) { - - ASSERT (((UINTN)NewPath) % MIN_ALIGNMENT_SIZE == 0); - - // - // Copy each node - // - - Src = DevPath; - Dest = NewPath; - for (; ;) { - Size = DevicePathNodeLength(Src); - CopyMem (Dest, Src, Size); - Size += ALIGN_SIZE(Size); - SetDevicePathNodeLength (Dest, Size); - Dest->Type |= EFI_DP_TYPE_UNPACKED; - Dest = (EFI_DEVICE_PATH *) (((UINT8 *) Dest) + Size); - - if (IsDevicePathEnd(Src)) { - break; - } - - Src = NextDevicePathNode(Src); - } - } - - return NewPath; -} - - -EFI_DEVICE_PATH* -AppendDevicePathInstance ( - IN EFI_DEVICE_PATH *Src, - IN EFI_DEVICE_PATH *Instance - ) -{ - UINT8 *Ptr; - EFI_DEVICE_PATH *DevPath; - UINTN SrcSize; - UINTN InstanceSize; - - if (Src == NULL) { - return DuplicateDevicePath (Instance); - } - SrcSize = DevicePathSize(Src); - InstanceSize = DevicePathSize(Instance); - Ptr = AllocatePool (SrcSize + InstanceSize); - DevPath = (EFI_DEVICE_PATH *)Ptr; - ASSERT(DevPath); - - CopyMem (Ptr, Src, SrcSize); -// FreePool (Src); - - while (!IsDevicePathEnd(DevPath)) { - DevPath = NextDevicePathNode(DevPath); - } - // - // Convert the End to an End Instance, since we are - // appending another instacne after this one its a good - // idea. - // - DevPath->SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE; - - DevPath = NextDevicePathNode(DevPath); - CopyMem (DevPath, Instance, InstanceSize); - return (EFI_DEVICE_PATH *)Ptr; -} - -EFI_STATUS -LibDevicePathToInterface ( - IN EFI_GUID *Protocol, - IN EFI_DEVICE_PATH *FilePath, - OUT VOID **Interface - ) -{ - EFI_STATUS Status; - EFI_HANDLE Device; - - Status = uefi_call_wrapper(BS->LocateDevicePath, 3, Protocol, &FilePath, &Device); - - if (!EFI_ERROR(Status)) { - - // If we didn't get a direct match return not found - Status = EFI_NOT_FOUND; - - if (IsDevicePathEnd(FilePath)) { - - // - // It was a direct match, lookup the protocol interface - // - - Status =uefi_call_wrapper(BS->HandleProtocol, 3, Device, Protocol, Interface); - } - } - - // - // If there was an error, do not return an interface - // - - if (EFI_ERROR(Status)) { - *Interface = NULL; - } - - return Status; -} - -static VOID -_DevPathPci ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - PCI_DEVICE_PATH *Pci; - - Pci = DevPath; - CatPrint(Str, L"Pci(0x%x,0x%x)", Pci->Device, Pci->Function); -} - -static VOID -_DevPathPccard ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - PCCARD_DEVICE_PATH *Pccard; - - Pccard = DevPath; - CatPrint(Str, L"Pccard(0x%x)", Pccard-> FunctionNumber ); -} - -static VOID -_DevPathMemMap ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - MEMMAP_DEVICE_PATH *MemMap; - - MemMap = DevPath; - CatPrint(Str, L"MemMap(%d,0x%x,0x%x)", - MemMap->MemoryType, - MemMap->StartingAddress, - MemMap->EndingAddress - ); -} - -static VOID -_DevPathController ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - CONTROLLER_DEVICE_PATH *Controller; - - Controller = DevPath; - CatPrint(Str, L"Ctrl(%d)", - Controller->Controller - ); -} - -static VOID -_DevPathVendor ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - VENDOR_DEVICE_PATH *Vendor; - CHAR16 *Type; - UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownDevPath; - - Vendor = DevPath; - switch (DevicePathType(&Vendor->Header)) { - case HARDWARE_DEVICE_PATH: Type = L"Hw"; break; - case MESSAGING_DEVICE_PATH: Type = L"Msg"; break; - case MEDIA_DEVICE_PATH: Type = L"Media"; break; - default: Type = L"?"; break; - } - - CatPrint(Str, L"Ven%s(%g", Type, &Vendor->Guid); - if (CompareGuid (&Vendor->Guid, &UnknownDevice) == 0) { - // - // GUID used by EFI to enumerate an EDD 1.1 device - // - UnknownDevPath = (UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *)Vendor; - CatPrint(Str, L":%02x)", UnknownDevPath->LegacyDriveLetter); - } else { - CatPrint(Str, L")"); - } -} - - -/* - Type: 2 (ACPI Device Path) SubType: 1 (ACPI Device Path) - */ -static VOID -_DevPathAcpi ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - ACPI_HID_DEVICE_PATH *Acpi; - - Acpi = DevPath; - if ((Acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) { - switch ( EISA_ID_TO_NUM( Acpi-> HID ) ) { - case 0x301 : { - CatPrint( Str , L"Keyboard(%d)" , Acpi-> UID ) ; - break ; - } - case 0x401 : { - CatPrint( Str , L"ParallelPort(%d)" , Acpi-> UID ) ; - break ; - } - case 0x501 : { - CatPrint( Str , L"Serial(%d)" , Acpi-> UID ) ; - break ; - } - case 0x604 : { - CatPrint( Str , L"Floppy(%d)" , Acpi-> UID ) ; - break ; - } - case 0xa03 : { - CatPrint( Str , L"PciRoot(%d)" , Acpi-> UID ) ; - break ; - } - case 0xa08 : { - CatPrint( Str , L"PcieRoot(%d)" , Acpi-> UID ) ; - break ; - } - default : { - CatPrint( Str , L"Acpi(PNP%04x" , EISA_ID_TO_NUM( Acpi-> HID ) ) ; - if ( Acpi-> UID ) CatPrint( Str , L",%d" , Acpi-> UID ) ; - CatPrint( Str , L")" ) ; - break ; - } - } - } else { - CatPrint( Str , L"Acpi(0x%X" , Acpi-> HID ) ; - if ( Acpi-> UID ) CatPrint( Str , L",%d" , Acpi-> UID ) ; - CatPrint( Str , L")" , Acpi-> HID , Acpi-> UID ) ; - } -} - - -static VOID -_DevPathAtapi ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - ATAPI_DEVICE_PATH *Atapi; - - Atapi = DevPath; - CatPrint(Str, L"Ata(%s,%s)", - Atapi->PrimarySecondary ? L"Secondary" : L"Primary", - Atapi->SlaveMaster ? L"Slave" : L"Master" - ); -} - -static VOID -_DevPathScsi ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - SCSI_DEVICE_PATH *Scsi; - - Scsi = DevPath; - CatPrint(Str, L"Scsi(%d,%d)", Scsi->Pun, Scsi->Lun); -} - - -static VOID -_DevPathFibre ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - FIBRECHANNEL_DEVICE_PATH *Fibre; - - Fibre = DevPath; - CatPrint( Str , L"Fibre%s(0x%016lx,0x%016lx)" , - DevicePathType( & Fibre-> Header ) == MSG_FIBRECHANNEL_DP ? L"" : L"Ex" , - Fibre-> WWN , Fibre-> Lun ) ; -} - -static VOID -_DevPath1394 ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - F1394_DEVICE_PATH *F1394; - - F1394 = DevPath; - CatPrint(Str, L"1394(%g)", &F1394->Guid); -} - - - -static VOID -_DevPathUsb ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - USB_DEVICE_PATH *Usb; - - Usb = DevPath; - CatPrint( Str , L"Usb(0x%x,0x%x)" , Usb-> Port , Usb-> Endpoint ) ; -} - - -static VOID -_DevPathI2O ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - I2O_DEVICE_PATH *I2O; - - I2O = DevPath; - CatPrint(Str, L"I2O(0x%X)", I2O->Tid); -} - -static VOID -_DevPathMacAddr ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - MAC_ADDR_DEVICE_PATH *MAC; - UINTN HwAddressSize; - UINTN Index; - - MAC = DevPath; - - /* HwAddressSize = sizeof(EFI_MAC_ADDRESS); */ - HwAddressSize = DevicePathNodeLength( & MAC-> Header ) ; - HwAddressSize -= sizeof( MAC-> Header ) ; - HwAddressSize -= sizeof( MAC-> IfType ) ; - if (MAC->IfType == 0x01 || MAC->IfType == 0x00) { - HwAddressSize = 6; - } - - CatPrint(Str, L"Mac("); - - for(Index = 0; Index < HwAddressSize; Index++) { - CatPrint(Str, L"%02x",MAC->MacAddress.Addr[Index]); - } - if ( MAC-> IfType != 0 ) { - CatPrint(Str, L",%d" , MAC-> IfType ) ; - } - CatPrint(Str, L")"); -} - -static VOID -CatPrintIPv4( - IN OUT POOL_PRINT * Str , - IN EFI_IPv4_ADDRESS * Address - ) -{ - CatPrint( Str , L"%d.%d.%d.%d" , Address-> Addr[ 0 ] , Address-> Addr[ 1 ] , - Address-> Addr[ 2 ] , Address-> Addr[ 3 ] ) ; -} - -static BOOLEAN -IsNotNullIPv4( - IN EFI_IPv4_ADDRESS * Address - ) -{ - UINT8 val ; - val = Address-> Addr[ 0 ] | Address-> Addr[ 1 ] ; - val |= Address-> Addr[ 2 ] | Address-> Addr[ 3 ] ; - return val != 0 ; -} - -static VOID -CatPrintNetworkProtocol( - IN OUT POOL_PRINT * Str , - IN UINT16 Proto - ) -{ - if ( Proto == 6 ) { - CatPrint( Str , L"TCP" ) ; - } else if ( Proto == 17 ) { - CatPrint( Str , L"UDP" ) ; - } else { - CatPrint( Str , L"%d" , Proto ) ; - } -} - -static VOID -_DevPathIPv4 ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - IPv4_DEVICE_PATH *IP; - BOOLEAN show ; - - IP = DevPath; - CatPrint( Str , L"IPv4(") ; - CatPrintIPv4( Str , & IP-> RemoteIpAddress ) ; - CatPrint( Str , L",") ; - CatPrintNetworkProtocol( Str , IP-> Protocol ) ; - CatPrint( Str , L",%s" , IP-> StaticIpAddress ? L"Static" : L"DHCP" ) ; - show = IsNotNullIPv4( & IP-> LocalIpAddress ) ; - if ( ! show && DevicePathNodeLength( & IP-> Header ) == sizeof( IPv4_DEVICE_PATH ) ) { - /* only version 2 includes gateway and netmask */ - show |= IsNotNullIPv4( & IP-> GatewayIpAddress ) ; - show |= IsNotNullIPv4( & IP-> SubnetMask ) ; - } - if ( show ) { - CatPrint( Str , L"," ) ; - CatPrintIPv4( Str , & IP-> LocalIpAddress ) ; - if ( DevicePathNodeLength( & IP-> Header ) == sizeof( IPv4_DEVICE_PATH ) ) { - /* only version 2 includes gateway and netmask */ - show = IsNotNullIPv4( & IP-> GatewayIpAddress ) ; - show |= IsNotNullIPv4( & IP-> SubnetMask ) ; - if ( show ) { - CatPrint( Str , L",") ; - CatPrintIPv4( Str , & IP-> GatewayIpAddress ) ; - if ( IsNotNullIPv4( & IP-> SubnetMask ) ) { - CatPrint( Str , L",") ; - CatPrintIPv4( Str , & IP-> SubnetMask ) ; - } - } - } - } - CatPrint( Str , L")") ; -} - -#define CatPrintIPv6_ADD( x , y ) ( ( (UINT16) ( x ) ) << 8 | ( y ) ) -static VOID -CatPrintIPv6( - IN OUT POOL_PRINT * Str , - IN EFI_IPv6_ADDRESS * Address - ) -{ - CatPrint( Str , L"%x:%x:%x:%x:%x:%x:%x:%x" , - CatPrintIPv6_ADD( Address-> Addr[ 0 ] , Address-> Addr[ 1 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 2 ] , Address-> Addr[ 3 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 4 ] , Address-> Addr[ 5 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 6 ] , Address-> Addr[ 7 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 8 ] , Address-> Addr[ 9 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 10 ] , Address-> Addr[ 11 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 12 ] , Address-> Addr[ 13 ] ) , - CatPrintIPv6_ADD( Address-> Addr[ 14 ] , Address-> Addr[ 15 ] ) ) ; -} - -static VOID -_DevPathIPv6 ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - IPv6_DEVICE_PATH *IP; - - IP = DevPath; - CatPrint( Str , L"IPv6(") ; - CatPrintIPv6( Str , & IP-> RemoteIpAddress ) ; - CatPrint( Str , L",") ; - CatPrintNetworkProtocol( Str, IP-> Protocol ) ; - CatPrint( Str , L",%s," , IP-> IPAddressOrigin ? - ( IP-> IPAddressOrigin == 1 ? L"StatelessAutoConfigure" : - L"StatefulAutoConfigure" ) : L"Static" ) ; - CatPrintIPv6( Str , & IP-> LocalIpAddress ) ; - if ( DevicePathNodeLength( & IP-> Header ) == sizeof( IPv6_DEVICE_PATH ) ) { - CatPrint( Str , L",") ; - CatPrintIPv6( Str , & IP-> GatewayIpAddress ) ; - CatPrint( Str , L",") ; - CatPrint( Str , L"%d" , & IP-> PrefixLength ) ; - } - CatPrint( Str , L")") ; -} - -static VOID -_DevPathUri ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - URI_DEVICE_PATH *Uri; - - Uri = DevPath; - - CatPrint( Str, L"Uri(%a)", Uri->Uri ); -} - -static VOID -_DevPathInfiniBand ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - INFINIBAND_DEVICE_PATH *InfiniBand; - - InfiniBand = DevPath; - CatPrint( Str , L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)" , - InfiniBand-> ResourceFlags , InfiniBand-> PortGid , InfiniBand-> ServiceId , - InfiniBand-> TargetPortId , InfiniBand-> DeviceId ) ; -} - -static VOID -_DevPathUart ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - UART_DEVICE_PATH *Uart; - CHAR8 Parity; - - Uart = DevPath; - switch (Uart->Parity) { - case 0 : Parity = 'D'; break; - case 1 : Parity = 'N'; break; - case 2 : Parity = 'E'; break; - case 3 : Parity = 'O'; break; - case 4 : Parity = 'M'; break; - case 5 : Parity = 'S'; break; - default : Parity = 'x'; break; - } - - if (Uart->BaudRate == 0) { - CatPrint(Str, L"Uart(DEFAULT %c",Uart->BaudRate,Parity); - } else { - CatPrint(Str, L"Uart(%d %c",Uart->BaudRate,Parity); - } - - if (Uart->DataBits == 0) { - CatPrint(Str, L"D"); - } else { - CatPrint(Str, L"%d",Uart->DataBits); - } - - switch (Uart->StopBits) { - case 0 : CatPrint(Str, L"D)"); break; - case 1 : CatPrint(Str, L"1)"); break; - case 2 : CatPrint(Str, L"1.5)"); break; - case 3 : CatPrint(Str, L"2)"); break; - default : CatPrint(Str, L"x)"); break; - } -} - -static VOID -_DevPathSata ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - SATA_DEVICE_PATH * Sata ; - - Sata = DevPath; - CatPrint( Str , L"Sata(0x%x,0x%x,0x%x)" , Sata-> HBAPortNumber , - Sata-> PortMultiplierPortNumber , Sata-> Lun ) ; -} - -static VOID -_DevPathHardDrive ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - HARDDRIVE_DEVICE_PATH *Hd; - - Hd = DevPath; - switch (Hd->SignatureType) { - case SIGNATURE_TYPE_MBR: - CatPrint(Str, L"HD(Part%d,Sig%08X)", - Hd->PartitionNumber, - *((UINT32 *)(&(Hd->Signature[0]))) - ); - break; - case SIGNATURE_TYPE_GUID: - CatPrint(Str, L"HD(Part%d,Sig%g)", - Hd->PartitionNumber, - (EFI_GUID *) &(Hd->Signature[0]) - ); - break; - default: - CatPrint(Str, L"HD(Part%d,MBRType=%02x,SigType=%02x)", - Hd->PartitionNumber, - Hd->MBRType, - Hd->SignatureType - ); - break; - } -} - -static VOID -_DevPathCDROM ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - CDROM_DEVICE_PATH *Cd; - - Cd = DevPath; - CatPrint( Str , L"CDROM(0x%x)" , Cd-> BootEntry ) ; -} - -static VOID -_DevPathFilePath ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - FILEPATH_DEVICE_PATH *Fp; - - Fp = DevPath; - CatPrint(Str, L"%s", Fp->PathName); -} - -static VOID -_DevPathMediaProtocol ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - MEDIA_PROTOCOL_DEVICE_PATH *MediaProt; - - MediaProt = DevPath; - CatPrint(Str, L"%g", &MediaProt->Protocol); -} - -static VOID -_DevPathBssBss ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - BBS_BBS_DEVICE_PATH *Bss; - CHAR16 *Type; - - Bss = DevPath; - switch (Bss->DeviceType) { - case BBS_TYPE_FLOPPY: Type = L"Floppy"; break; - case BBS_TYPE_HARDDRIVE: Type = L"Harddrive"; break; - case BBS_TYPE_CDROM: Type = L"CDROM"; break; - case BBS_TYPE_PCMCIA: Type = L"PCMCIA"; break; - case BBS_TYPE_USB: Type = L"Usb"; break; - case BBS_TYPE_EMBEDDED_NETWORK: Type = L"Net"; break; - default: Type = L"?"; break; - } - - CatPrint(Str, L"Bss-%s(%a)", Type, Bss->String); -} - - -static VOID -_DevPathEndInstance ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath EFI_UNUSED - ) -{ - CatPrint(Str, L","); -} - -/** - * Print unknown device node. - * UEFI 2.4 § 9.6.1.6 table 89. - */ - -static VOID -_DevPathNodeUnknown ( - IN OUT POOL_PRINT *Str, - IN VOID *DevPath - ) -{ - EFI_DEVICE_PATH * Path ; - UINT8 * value ; - int length , index ; - Path = DevPath ; - value = DevPath ; - value += 4 ; - switch ( Path-> Type ) { - case HARDWARE_DEVICE_PATH : { /* Unknown Hardware Device Path */ - CatPrint( Str , L"HardwarePath(%d" , Path-> SubType ) ; - break ; - } - case ACPI_DEVICE_PATH : { /* Unknown ACPI Device Path */ - CatPrint( Str , L"AcpiPath(%d" , Path-> SubType ) ; - break ; - } - case MESSAGING_DEVICE_PATH : { /* Unknown Messaging Device Path */ - CatPrint( Str , L"Msg(%d" , Path-> SubType ) ; - break ; - } - case MEDIA_DEVICE_PATH : { /* Unknown Media Device Path */ - CatPrint( Str , L"MediaPath(%d" , Path-> SubType ) ; - break ; - } - case BBS_DEVICE_PATH : { /* Unknown BIOS Boot Specification Device Path */ - CatPrint( Str , L"BbsPath(%d" , Path-> SubType ) ; - break ; - } - default : { /* Unknown Device Path */ - CatPrint( Str , L"Path(%d,%d" , Path-> Type , Path-> SubType ) ; - break ; - } - } - length = DevicePathNodeLength( Path ) ; - for ( index = 0 ; index < length ; index ++ ) { - if ( index == 0 ) CatPrint( Str , L",0x" ) ; - CatPrint( Str , L"%02x" , * value ) ; - value ++ ; - } - CatPrint( Str , L")" ) ; -} - - -/* - * Table to convert "Type" and "SubType" to a "convert to text" function/ - * Entries hold "Type" and "SubType" for know values. - * Special "SubType" 0 is used as default for known type with unknown subtype. - */ -struct { - UINT8 Type; - UINT8 SubType; - VOID (*Function)(POOL_PRINT *, VOID *); -} DevPathTable[] = { - { HARDWARE_DEVICE_PATH, HW_PCI_DP, _DevPathPci}, - { HARDWARE_DEVICE_PATH, HW_PCCARD_DP, _DevPathPccard}, - { HARDWARE_DEVICE_PATH, HW_MEMMAP_DP, _DevPathMemMap}, - { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, _DevPathVendor}, - { HARDWARE_DEVICE_PATH, HW_CONTROLLER_DP, _DevPathController}, - { ACPI_DEVICE_PATH, ACPI_DP, _DevPathAcpi}, - { MESSAGING_DEVICE_PATH, MSG_ATAPI_DP, _DevPathAtapi}, - { MESSAGING_DEVICE_PATH, MSG_SCSI_DP, _DevPathScsi}, - { MESSAGING_DEVICE_PATH, MSG_FIBRECHANNEL_DP, _DevPathFibre}, - { MESSAGING_DEVICE_PATH, MSG_1394_DP, _DevPath1394}, - { MESSAGING_DEVICE_PATH, MSG_USB_DP, _DevPathUsb}, - { MESSAGING_DEVICE_PATH, MSG_I2O_DP, _DevPathI2O}, - { MESSAGING_DEVICE_PATH, MSG_MAC_ADDR_DP, _DevPathMacAddr}, - { MESSAGING_DEVICE_PATH, MSG_IPv4_DP, _DevPathIPv4}, - { MESSAGING_DEVICE_PATH, MSG_IPv6_DP, _DevPathIPv6}, - { MESSAGING_DEVICE_PATH, MSG_URI_DP, _DevPathUri}, - { MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, _DevPathInfiniBand}, - { MESSAGING_DEVICE_PATH, MSG_UART_DP, _DevPathUart}, - { MESSAGING_DEVICE_PATH , MSG_SATA_DP , _DevPathSata } , - { MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, _DevPathVendor}, - { MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, _DevPathHardDrive}, - { MEDIA_DEVICE_PATH, MEDIA_CDROM_DP, _DevPathCDROM}, - { MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP, _DevPathVendor}, - { MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP, _DevPathFilePath}, - { MEDIA_DEVICE_PATH, MEDIA_PROTOCOL_DP, _DevPathMediaProtocol}, - { BBS_DEVICE_PATH, BBS_BBS_DP, _DevPathBssBss}, - { END_DEVICE_PATH_TYPE, END_INSTANCE_DEVICE_PATH_SUBTYPE, _DevPathEndInstance}, - { 0, 0, NULL} -}; - - -CHAR16 * -DevicePathToStr ( - EFI_DEVICE_PATH *DevPath - ) -/*++ - - Turns the Device Path into a printable string. Allcoates - the string from pool. The caller must FreePool the returned - string. - ---*/ -{ - POOL_PRINT Str; - EFI_DEVICE_PATH *DevPathNode; - VOID (*DumpNode)(POOL_PRINT *, VOID *); - UINTN Index, NewSize; - - ZeroMem(&Str, sizeof(Str)); - - // - // Unpacked the device path - // - - DevPath = UnpackDevicePath(DevPath); - ASSERT (DevPath); - - - // - // Process each device path node - // - - DevPathNode = DevPath; - while (!IsDevicePathEnd(DevPathNode)) { - // - // Find the handler to dump this device path node - // - - DumpNode = NULL; - for (Index = 0; DevPathTable[Index].Function; Index += 1) { - - if (DevicePathType(DevPathNode) == DevPathTable[Index].Type && - DevicePathSubType(DevPathNode) == DevPathTable[Index].SubType) { - DumpNode = DevPathTable[Index].Function; - break; - } - } - - // - // If not found, use a generic function - // - - if (!DumpNode) { - DumpNode = _DevPathNodeUnknown; - } - - // - // Put a path seperator in if needed - // - - if (Str.len && DumpNode != _DevPathEndInstance) { - CatPrint (&Str, L"/"); - } - - // - // Print this node of the device path - // - - DumpNode (&Str, DevPathNode); - - // - // Next device path node - // - - DevPathNode = NextDevicePathNode(DevPathNode); - } - - // - // Shrink pool used for string allocation - // - - FreePool (DevPath); - NewSize = (Str.len + 1) * sizeof(CHAR16); - Str.str = ReallocatePool (Str.str, NewSize, NewSize); - Str.str[Str.len] = 0; - return Str.str; -} - -BOOLEAN -LibMatchDevicePaths ( - IN EFI_DEVICE_PATH *Multi, - IN EFI_DEVICE_PATH *Single - ) -{ - EFI_DEVICE_PATH *DevicePath, *DevicePathInst; - UINTN Size; - - if (!Multi || !Single) { - return FALSE; - } - - DevicePath = Multi; - while ((DevicePathInst = DevicePathInstance (&DevicePath, &Size))) { - if (CompareMem (Single, DevicePathInst, Size) == 0) { - return TRUE; - } - } - return FALSE; -} - -EFI_DEVICE_PATH * -LibDuplicateDevicePathInstance ( - IN EFI_DEVICE_PATH *DevPath - ) -{ - EFI_DEVICE_PATH *NewDevPath,*DevicePathInst,*Temp; - UINTN Size = 0; - - // - // get the size of an instance from the input - // - - Temp = DevPath; - DevicePathInst = DevicePathInstance (&Temp, &Size); - - // - // Make a copy and set proper end type - // - NewDevPath = NULL; - if (Size) { - NewDevPath = AllocatePool (Size + sizeof(EFI_DEVICE_PATH)); - } - - if (NewDevPath) { - CopyMem (NewDevPath, DevicePathInst, Size); - Temp = NextDevicePathNode(NewDevPath); - SetDevicePathEndNode(Temp); - } - - return NewDevPath; -} - diff --git a/efi/lib/error.c b/efi/lib/error.c deleted file mode 100644 index 3a856a6..0000000 --- a/efi/lib/error.c +++ /dev/null @@ -1,83 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - error.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -struct { - EFI_STATUS Code; - WCHAR *Desc; -} ErrorCodeTable[] = { - { EFI_SUCCESS, L"Success"}, - { EFI_LOAD_ERROR, L"Load Error"}, - { EFI_INVALID_PARAMETER, L"Invalid Parameter"}, - { EFI_UNSUPPORTED, L"Unsupported"}, - { EFI_BAD_BUFFER_SIZE, L"Bad Buffer Size"}, - { EFI_BUFFER_TOO_SMALL, L"Buffer Too Small"}, - { EFI_NOT_READY, L"Not Ready"}, - { EFI_DEVICE_ERROR, L"Device Error"}, - { EFI_WRITE_PROTECTED, L"Write Protected"}, - { EFI_OUT_OF_RESOURCES, L"Out of Resources"}, - { EFI_VOLUME_CORRUPTED, L"Volume Corrupt"}, - { EFI_VOLUME_FULL, L"Volume Full"}, - { EFI_NO_MEDIA, L"No Media"}, - { EFI_MEDIA_CHANGED, L"Media changed"}, - { EFI_NOT_FOUND, L"Not Found"}, - { EFI_ACCESS_DENIED, L"Access Denied"}, - { EFI_NO_RESPONSE, L"No Response"}, - { EFI_NO_MAPPING, L"No mapping"}, - { EFI_TIMEOUT, L"Time out"}, - { EFI_NOT_STARTED, L"Not started"}, - { EFI_ALREADY_STARTED, L"Already started"}, - { EFI_ABORTED, L"Aborted"}, - { EFI_ICMP_ERROR, L"ICMP Error"}, - { EFI_TFTP_ERROR, L"TFTP Error"}, - { EFI_PROTOCOL_ERROR, L"Protocol Error"}, - { EFI_INCOMPATIBLE_VERSION, L"Incompatible Version"}, - { EFI_SECURITY_VIOLATION, L"Security Policy Violation"}, - { EFI_CRC_ERROR, L"CRC Error"}, - { EFI_END_OF_MEDIA, L"End of Media"}, - { EFI_END_OF_FILE, L"End of File"}, - { EFI_INVALID_LANGUAGE, L"Invalid Languages"}, - { EFI_COMPROMISED_DATA, L"Compromised Data"}, - - // warnings - { EFI_WARN_UNKOWN_GLYPH, L"Warning Unknown Glyph"}, - { EFI_WARN_DELETE_FAILURE, L"Warning Delete Failure"}, - { EFI_WARN_WRITE_FAILURE, L"Warning Write Failure"}, - { EFI_WARN_BUFFER_TOO_SMALL, L"Warning Buffer Too Small"}, - { 0, NULL} -} ; - - -VOID -StatusToString ( - OUT CHAR16 *Buffer, - IN EFI_STATUS Status - ) -{ - UINTN Index; - - for (Index = 0; ErrorCodeTable[Index].Desc; Index +=1) { - if (ErrorCodeTable[Index].Code == Status) { - StrCpy (Buffer, ErrorCodeTable[Index].Desc); - return; - } - } - - SPrint (Buffer, 0, L"%X", Status); -} diff --git a/efi/lib/event.c b/efi/lib/event.c deleted file mode 100644 index 0babc92..0000000 --- a/efi/lib/event.c +++ /dev/null @@ -1,154 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - event.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -EFI_EVENT -LibCreateProtocolNotifyEvent ( - IN EFI_GUID *ProtocolGuid, - IN EFI_TPL NotifyTpl, - IN EFI_EVENT_NOTIFY NotifyFunction, - IN VOID *NotifyContext, - OUT VOID *Registration - ) -{ - EFI_STATUS Status; - EFI_EVENT Event; - - // - // Create the event - // - - Status = uefi_call_wrapper( - BS->CreateEvent, - 5, - EVT_NOTIFY_SIGNAL, - NotifyTpl, - NotifyFunction, - NotifyContext, - &Event - ); - if ( EFI_ERROR( Status ) ) return NULL ; - ASSERT (!EFI_ERROR(Status)); - - // - // Register for protocol notifactions on this event - // - - Status = uefi_call_wrapper( - BS->RegisterProtocolNotify, - 3, - ProtocolGuid, - Event, - Registration - ); - if ( EFI_ERROR( Status ) ) return NULL ; - ASSERT (!EFI_ERROR(Status)); - - // - // Kick the event so we will perform an initial pass of - // current installed drivers - // - - uefi_call_wrapper(BS->SignalEvent, 1, Event); - return Event; -} - - -EFI_STATUS -WaitForSingleEvent ( - IN EFI_EVENT Event, - IN UINT64 Timeout OPTIONAL - ) -{ - EFI_STATUS Status; - UINTN Index; - EFI_EVENT TimerEvent; - EFI_EVENT WaitList[2]; - - if (Timeout) { - // - // Create a timer event - // - - Status = uefi_call_wrapper(BS->CreateEvent, 5, EVT_TIMER, 0, NULL, NULL, &TimerEvent); - if (!EFI_ERROR(Status)) { - - // - // Set the timer event - // - - uefi_call_wrapper(BS->SetTimer, 3, TimerEvent, TimerRelative, Timeout); - - // - // Wait for the original event or the timer - // - - WaitList[0] = Event; - WaitList[1] = TimerEvent; - Status = uefi_call_wrapper(BS->WaitForEvent, 3, 2, WaitList, &Index); - uefi_call_wrapper(BS->CloseEvent, 1, TimerEvent); - - // - // If the timer expired, change the return to timed out - // - - if (!EFI_ERROR(Status) && Index == 1) { - Status = EFI_TIMEOUT; - } - } - - } else { - - // - // No timeout... just wait on the event - // - - Status = uefi_call_wrapper(BS->WaitForEvent, 3, 1, &Event, &Index); - ASSERT (!EFI_ERROR(Status)); - ASSERT (Index == 0); - } - - return Status; -} - -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_STATUS Status; - - do { - PrintAt (Column, Row, String, Timeout); - Status = WaitForSingleEvent (Event, 10000000); - if (Status == EFI_SUCCESS) { - if (!EFI_ERROR(uefi_call_wrapper(ST->ConIn->ReadKeyStroke, 2, ST->ConIn, Key))) { - return; - } - } - } while (Timeout > 0); - CopyMem(Key, &TimeoutKey, sizeof(EFI_INPUT_KEY)); -} - diff --git a/efi/lib/exit.c b/efi/lib/exit.c deleted file mode 100644 index ada27c9..0000000 --- a/efi/lib/exit.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "lib.h" - -VOID -Exit( - IN EFI_STATUS ExitStatus, - IN UINTN ExitDataSize, - IN CHAR16 *ExitData OPTIONAL - ) -{ - uefi_call_wrapper(BS->Exit, - 4, - LibImageHandle, - ExitStatus, - ExitDataSize, - ExitData); - - // Uh oh, Exit() returned?! - for (;;) { } -} diff --git a/efi/lib/guid.c b/efi/lib/guid.c deleted file mode 100644 index 6498e90..0000000 --- a/efi/lib/guid.c +++ /dev/null @@ -1,179 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - misc.c - -Abstract: - - Misc EFI support functions - - - -Revision History - ---*/ - -#include "lib.h" - - -// -// Additional Known guids -// - -#define SHELL_INTERFACE_PROTOCOL \ - { 0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } - -#define ENVIRONMENT_VARIABLE_ID \ - { 0x47c7b224, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } - -#define DEVICE_PATH_MAPPING_ID \ - { 0x47c7b225, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } - -#define PROTOCOL_ID_ID \ - { 0x47c7b226, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } - -#define ALIAS_ID \ - { 0x47c7b227, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } - -static EFI_GUID ShellInterfaceProtocol = SHELL_INTERFACE_PROTOCOL; -static EFI_GUID SEnvId = ENVIRONMENT_VARIABLE_ID; -static EFI_GUID SMapId = DEVICE_PATH_MAPPING_ID; -static EFI_GUID SProtId = PROTOCOL_ID_ID; -static EFI_GUID SAliasId = ALIAS_ID; - -static struct { - EFI_GUID *Guid; - WCHAR *GuidName; -} KnownGuids[] = { - { &NullGuid, L"G0" }, - { &gEfiGlobalVariableGuid, L"EfiVar" }, - - { &VariableStoreProtocol, L"VarStore" }, - { &gEfiDevicePathProtocolGuid, L"DevPath" }, - { &gEfiLoadedImageProtocolGuid, L"LdImg" }, - { &gEfiSimpleTextInProtocolGuid, L"TxtIn" }, - { &gEfiSimpleTextOutProtocolGuid, L"TxtOut" }, - { &gEfiBlockIoProtocolGuid, L"BlkIo" }, - { &gEfiBlockIo2ProtocolGuid, L"BlkIo2" }, - { &gEfiDiskIoProtocolGuid, L"DskIo" }, - { &gEfiDiskIo2ProtocolGuid, L"DskIo2" }, - { &gEfiSimpleFileSystemProtocolGuid, L"Fs" }, - { &gEfiLoadFileProtocolGuid, L"LdFile" }, - { &gEfiDeviceIoProtocolGuid, L"DevIo" }, - { &gEfiComponentNameProtocolGuid, L"CName" }, - { &gEfiComponentName2ProtocolGuid, L"CName2" }, - - { &gEfiFileInfoGuid, L"FileInfo" }, - { &gEfiFileSystemInfoGuid, L"FsInfo" }, - { &gEfiFileSystemVolumeLabelInfoIdGuid, L"FsVolInfo" }, - - { &gEfiUnicodeCollationProtocolGuid, L"Unicode" }, - { &LegacyBootProtocol, L"LegacyBoot" }, - { &gEfiSerialIoProtocolGuid, L"SerIo" }, - { &VgaClassProtocol, L"VgaClass"}, - { &gEfiSimpleNetworkProtocolGuid, L"Net" }, - { &gEfiNetworkInterfaceIdentifierProtocolGuid, L"Nii" }, - { &gEfiPxeBaseCodeProtocolGuid, L"Pxe" }, - { &gEfiPxeBaseCodeCallbackProtocolGuid, L"PxeCb" }, - - { &TextOutSpliterProtocol, L"TxtOutSplit" }, - { &ErrorOutSpliterProtocol, L"ErrOutSplit" }, - { &TextInSpliterProtocol, L"TxtInSplit" }, - { &gEfiPcAnsiGuid, L"PcAnsi" }, - { &gEfiVT100Guid, L"Vt100" }, - { &gEfiVT100PlusGuid, L"Vt100Plus" }, - { &gEfiVTUTF8Guid, L"VtUtf8" }, - { &UnknownDevice, L"UnknownDev" }, - - { &EfiPartTypeSystemPartitionGuid, L"ESP" }, - { &EfiPartTypeLegacyMbrGuid, L"GPT MBR" }, - - { &ShellInterfaceProtocol, L"ShellInt" }, - { &SEnvId, L"SEnv" }, - { &SProtId, L"ShellProtId" }, - { &SMapId, L"ShellDevPathMap" }, - { &SAliasId, L"ShellAlias" }, - - { NULL, L"" } -}; - -// -// -// - -LIST_ENTRY GuidList; - - -VOID -InitializeGuid ( - VOID - ) -{ -} - -INTN -CompareGuid( - IN EFI_GUID *Guid1, - IN EFI_GUID *Guid2 - ) -/*++ - -Routine Description: - - Compares to GUIDs - -Arguments: - - Guid1 - guid to compare - Guid2 - guid to compare - -Returns: - = 0 if Guid1 == Guid2 - ---*/ -{ - return RtCompareGuid (Guid1, Guid2); -} - - -VOID -GuidToString ( - OUT CHAR16 *Buffer, - IN EFI_GUID *Guid - ) -{ - - UINTN Index; - - // - // Else, (for now) use additional internal function for mapping guids - // - - for (Index=0; KnownGuids[Index].Guid; Index++) { - if (CompareGuid(Guid, KnownGuids[Index].Guid) == 0) { - SPrint (Buffer, 0, KnownGuids[Index].GuidName); - return ; - } - } - - // - // Else dump it - // - - SPrint (Buffer, 0, L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", - Guid->Data1, - Guid->Data2, - Guid->Data3, - Guid->Data4[0], - Guid->Data4[1], - Guid->Data4[2], - Guid->Data4[3], - Guid->Data4[4], - Guid->Data4[5], - Guid->Data4[6], - Guid->Data4[7] - ); -} diff --git a/efi/lib/hand.c b/efi/lib/hand.c deleted file mode 100644 index 6864765..0000000 --- a/efi/lib/hand.c +++ /dev/null @@ -1,636 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - hand.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" -#include "efistdarg.h" // !!! - - -EFI_STATUS -LibLocateProtocol ( - IN EFI_GUID *ProtocolGuid, - OUT VOID **Interface - ) -// -// Find the first instance of this Protocol in the system and return it's interface -// -{ - EFI_STATUS Status; - UINTN NumberHandles, Index; - EFI_HANDLE *Handles; - - - *Interface = NULL; - Status = LibLocateHandle (ByProtocol, ProtocolGuid, NULL, &NumberHandles, &Handles); - if (EFI_ERROR(Status)) { - DEBUG((D_INFO, "LibLocateProtocol: Handle not found\n")); - return Status; - } - - for (Index=0; Index < NumberHandles; Index++) { - Status = uefi_call_wrapper(BS->HandleProtocol, 3, Handles[Index], ProtocolGuid, Interface); - if (!EFI_ERROR(Status)) { - break; - } - } - - if (Handles) { - FreePool (Handles); - } - - return Status; -} - -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 Status; - UINTN BufferSize; - - // - // Initialize for GrowBuffer loop - // - - Status = EFI_SUCCESS; - *Buffer = NULL; - BufferSize = 50 * sizeof(EFI_HANDLE); - - // - // Call the real function - // - - while (GrowBuffer (&Status, (VOID **) Buffer, BufferSize)) { - - Status = uefi_call_wrapper( - BS->LocateHandle, - 5, - SearchType, - Protocol, - SearchKey, - &BufferSize, - *Buffer - ); - - } - - *NoHandles = BufferSize / sizeof (EFI_HANDLE); - if (EFI_ERROR(Status)) { - *NoHandles = 0; - } - - return Status; -} - -EFI_STATUS -LibLocateHandleByDiskSignature ( - IN UINT8 MBRType, - IN UINT8 SignatureType, - IN VOID *Signature, - IN OUT UINTN *NoHandles, - OUT EFI_HANDLE **Buffer - ) - -{ - EFI_STATUS Status; - UINTN BufferSize; - UINTN NoBlockIoHandles; - EFI_HANDLE *BlockIoBuffer; - EFI_DEVICE_PATH *DevicePath; - UINTN Index; - EFI_DEVICE_PATH *Next, *DevPath; - HARDDRIVE_DEVICE_PATH *HardDriveDevicePath; - BOOLEAN Match; - BOOLEAN PreviousNodeIsHardDriveDevicePath; - - // - // Initialize for GrowBuffer loop - // - - Status = EFI_SUCCESS; - BlockIoBuffer = NULL; - BufferSize = 50 * sizeof(EFI_HANDLE); - - // - // Call the real function - // - - while (GrowBuffer (&Status, (VOID **)&BlockIoBuffer, BufferSize)) { - - // - // Get list of device handles that support the BLOCK_IO Protocol. - // - - Status = uefi_call_wrapper( - BS->LocateHandle, - 5, - ByProtocol, - &BlockIoProtocol, - NULL, - &BufferSize, - BlockIoBuffer - ); - - } - - NoBlockIoHandles = BufferSize / sizeof (EFI_HANDLE); - if (EFI_ERROR(Status)) { - NoBlockIoHandles = 0; - } - - // - // If there was an error or there are no device handles that support - // the BLOCK_IO Protocol, then return. - // - - if (NoBlockIoHandles == 0) { - FreePool(BlockIoBuffer); - *NoHandles = 0; - *Buffer = NULL; - return Status; - } - - // - // Loop through all the device handles that support the BLOCK_IO Protocol - // - - *NoHandles = 0; - - for(Index=0;IndexHandleProtocol, - 3, - BlockIoBuffer[Index], - &DevicePathProtocol, - (VOID*)&DevicePath - ); - - // - // Search DevicePath for a Hard Drive Media Device Path node. - // If one is found, then see if it matches the signature that was - // passed in. If it does match, and the next node is the End of the - // device path, and the previous node is not a Hard Drive Media Device - // Path, then we have found a match. - // - - Match = FALSE; - - if (DevicePath != NULL) { - - PreviousNodeIsHardDriveDevicePath = FALSE; - - DevPath = DevicePath; - - // - // Check for end of device path type - // - - for (; ;) { - - if ((DevicePathType(DevPath) == MEDIA_DEVICE_PATH) && - (DevicePathSubType(DevPath) == MEDIA_HARDDRIVE_DP)) { - - HardDriveDevicePath = (HARDDRIVE_DEVICE_PATH *)(DevPath); - - if (PreviousNodeIsHardDriveDevicePath == FALSE) { - - Next = NextDevicePathNode(DevPath); - if (IsDevicePathEndType(Next)) { - if ((HardDriveDevicePath->MBRType == MBRType) && - (HardDriveDevicePath->SignatureType == SignatureType)) { - switch(SignatureType) { - case SIGNATURE_TYPE_MBR: - if (*((UINT32 *)(Signature)) == *(UINT32 *)(&(HardDriveDevicePath->Signature[0]))) { - Match = TRUE; - } - break; - case SIGNATURE_TYPE_GUID: - if (CompareGuid((EFI_GUID *)Signature,(EFI_GUID *)(&(HardDriveDevicePath->Signature[0]))) == 0) { - Match = TRUE; - } - break; - } - } - } - } - PreviousNodeIsHardDriveDevicePath = TRUE; - } else { - PreviousNodeIsHardDriveDevicePath = FALSE; - } - - if (IsDevicePathEnd(DevPath)) { - break; - } - - DevPath = NextDevicePathNode(DevPath); - } - - } - - if (Match == FALSE) { - BlockIoBuffer[Index] = NULL; - } else { - *NoHandles = *NoHandles + 1; - } - } - - // - // If there are no matches, then return - // - - if (*NoHandles == 0) { - FreePool(BlockIoBuffer); - *NoHandles = 0; - *Buffer = NULL; - return EFI_SUCCESS; - } - - // - // Allocate space for the return buffer of device handles. - // - - *Buffer = AllocatePool(*NoHandles * sizeof(EFI_HANDLE)); - - if (*Buffer == NULL) { - FreePool(BlockIoBuffer); - *NoHandles = 0; - *Buffer = NULL; - return EFI_OUT_OF_RESOURCES; - } - - // - // Build list of matching device handles. - // - - *NoHandles = 0; - for(Index=0;IndexHandleProtocol, 3, DeviceHandle, &FileSystemProtocol, (VOID*)&Volume); - - // - // Open the root directory of the volume - // - - if (!EFI_ERROR(Status)) { - Status = uefi_call_wrapper(Volume->OpenVolume, 2, Volume, &File); - } - - // - // Done - // - - return EFI_ERROR(Status) ? NULL : File; -} - -EFI_FILE_INFO * -LibFileInfo ( - IN EFI_FILE_HANDLE FHand - ) -{ - EFI_STATUS Status; - EFI_FILE_INFO *Buffer; - UINTN BufferSize; - - // - // Initialize for GrowBuffer loop - // - - Status = EFI_SUCCESS; - Buffer = NULL; - BufferSize = SIZE_OF_EFI_FILE_INFO + 200; - - // - // Call the real function - // - - while (GrowBuffer (&Status, (VOID **) &Buffer, BufferSize)) { - Status = uefi_call_wrapper( - FHand->GetInfo, - 4, - FHand, - &GenericFileInfo, - &BufferSize, - Buffer - ); - } - - return Buffer; -} - - -EFI_FILE_SYSTEM_INFO * -LibFileSystemInfo ( - IN EFI_FILE_HANDLE FHand - ) -{ - EFI_STATUS Status; - EFI_FILE_SYSTEM_INFO *Buffer; - UINTN BufferSize; - - // - // Initialize for GrowBuffer loop - // - - Status = EFI_SUCCESS; - Buffer = NULL; - BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + 200; - - // - // Call the real function - // - - while (GrowBuffer (&Status, (VOID **) &Buffer, BufferSize)) { - Status = uefi_call_wrapper( - FHand->GetInfo, - 4, - FHand, - &FileSystemInfo, - &BufferSize, - Buffer - ); - } - - return Buffer; -} - -EFI_FILE_SYSTEM_VOLUME_LABEL_INFO * -LibFileSystemVolumeLabelInfo ( - IN EFI_FILE_HANDLE FHand - ) -{ - EFI_STATUS Status; - EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *Buffer; - UINTN BufferSize; - - // - // Initialize for GrowBuffer loop - // - - Status = EFI_SUCCESS; - Buffer = NULL; - BufferSize = SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO + 200; - - // - // Call the real function - // - - while (GrowBuffer (&Status, (VOID **) &Buffer, BufferSize)) { - Status = uefi_call_wrapper( - FHand->GetInfo, - 4, - FHand, - &FileSystemVolumeLabelInfo, - &BufferSize, - Buffer - ); - } - - return Buffer; -} - - - -EFI_STATUS -LibInstallProtocolInterfaces ( - IN OUT EFI_HANDLE *Handle, - ... - ) -{ - va_list args; - EFI_STATUS Status; - EFI_GUID *Protocol; - VOID *Interface; - EFI_TPL OldTpl; - UINTN Index; - EFI_HANDLE OldHandle; - - // - // Syncronize with notifcations - // - - OldTpl = uefi_call_wrapper(BS->RaiseTPL, 1, TPL_NOTIFY); - OldHandle = *Handle; - - // - // Install the protocol interfaces - // - - Index = 0; - Status = EFI_SUCCESS; - va_start (args, Handle); - - while (!EFI_ERROR(Status)) { - - // - // If protocol is NULL, then it's the end of the list - // - - Protocol = va_arg(args, EFI_GUID *); - if (!Protocol) { - break; - } - - Interface = va_arg(args, VOID *); - - // - // Install it - // - - DEBUG((D_INFO, "LibInstallProtocolInterface: %d %x\n", Protocol, Interface)); - Status = uefi_call_wrapper(BS->InstallProtocolInterface, 4, Handle, Protocol, EFI_NATIVE_INTERFACE, Interface); - if (EFI_ERROR(Status)) { - break; - } - - Index += 1; - } - - // - // If there was an error, remove all the interfaces that were - // installed without any errors - // - - if (EFI_ERROR(Status)) { - va_start (args, Handle); - while (Index) { - - Protocol = va_arg(args, EFI_GUID *); - Interface = va_arg(args, VOID *); - uefi_call_wrapper(BS->UninstallProtocolInterface, 3, *Handle, Protocol, Interface); - - Index -= 1; - } - - *Handle = OldHandle; - } - - // - // Done - // - - uefi_call_wrapper(BS->RestoreTPL, 1, OldTpl); - return Status; -} - - -VOID -LibUninstallProtocolInterfaces ( - IN EFI_HANDLE Handle, - ... - ) -{ - va_list args; - EFI_STATUS Status; - EFI_GUID *Protocol; - VOID *Interface; - - - va_start (args, Handle); - for (; ;) { - - // - // If protocol is NULL, then it's the end of the list - // - - Protocol = va_arg(args, EFI_GUID *); - if (!Protocol) { - break; - } - - Interface = va_arg(args, VOID *); - - // - // Uninstall it - // - - Status = uefi_call_wrapper(BS->UninstallProtocolInterface, 3, Handle, Protocol, Interface); - if (EFI_ERROR(Status)) { - DEBUG((D_ERROR, "LibUninstallProtocolInterfaces: failed %g, %r\n", Protocol, Handle)); - } - } -} - - -EFI_STATUS -LibReinstallProtocolInterfaces ( - IN OUT EFI_HANDLE *Handle, - ... - ) -{ - va_list args; - EFI_STATUS Status; - EFI_GUID *Protocol; - VOID *OldInterface, *NewInterface; - EFI_TPL OldTpl; - UINTN Index; - - // - // Syncronize with notifcations - // - - OldTpl = uefi_call_wrapper(BS->RaiseTPL, 1, TPL_NOTIFY); - - // - // Install the protocol interfaces - // - - Index = 0; - Status = EFI_SUCCESS; - va_start (args, Handle); - - while (!EFI_ERROR(Status)) { - - // - // If protocol is NULL, then it's the end of the list - // - - Protocol = va_arg(args, EFI_GUID *); - if (!Protocol) { - break; - } - - OldInterface = va_arg(args, VOID *); - NewInterface = va_arg(args, VOID *); - - // - // Reinstall it - // - - Status = uefi_call_wrapper(BS->ReinstallProtocolInterface, 4, Handle, Protocol, OldInterface, NewInterface); - if (EFI_ERROR(Status)) { - break; - } - - Index += 1; - } - - // - // If there was an error, undo all the interfaces that were - // reinstalled without any errors - // - - if (EFI_ERROR(Status)) { - va_start (args, Handle); - while (Index) { - - Protocol = va_arg(args, EFI_GUID *); - OldInterface = va_arg(args, VOID *); - NewInterface = va_arg(args, VOID *); - - uefi_call_wrapper(BS->ReinstallProtocolInterface, 4, Handle, Protocol, NewInterface, OldInterface); - - Index -= 1; - } - } - - // - // Done - // - - uefi_call_wrapper(BS->RestoreTPL, 1, OldTpl); - return Status; -} diff --git a/efi/lib/hw.c b/efi/lib/hw.c deleted file mode 100644 index 09a77f9..0000000 --- a/efi/lib/hw.c +++ /dev/null @@ -1,132 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - hw.c - -Abstract: - - Debug library functions for Hardware IO access - - - -Revision History - ---*/ - -#include "lib.h" - - -EFI_STATUS -InitializeGlobalIoDevice ( - IN EFI_DEVICE_PATH *DevicePath, - IN EFI_GUID *Protocol, - IN CHAR8 *ErrorStr EFI_UNUSED, - OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs - ) -/*++ - -Routine Description: - - Check to see if DevicePath exists for a given Protocol. Return Error if it - exists. Return GlobalIoFuncs set match the DevicePath - - Arguments: - - DevicePath - to operate on - Protocol - to check the DevicePath against - ErrorStr - ASCII string to display on error - GlobalIoFncs - Returned with DeviceIoProtocol for the DevicePath - -Returns: - - Pass or Fail based on wether GlobalIoFncs where found - ---*/ -{ - EFI_STATUS Status; - EFI_HANDLE Handle; - - // - // Check to see if this device path already has Protocol on it. - // if so we are loading recursivly and should exit with an error - // - Status = uefi_call_wrapper(BS->LocateDevicePath, 3, Protocol, &DevicePath, &Handle); - if (!EFI_ERROR(Status)) { - DEBUG ((D_INIT, "Device Already Loaded for %a device\n", ErrorStr)); - return EFI_LOAD_ERROR; - } - - Status = uefi_call_wrapper(BS->LocateDevicePath, 3, &DeviceIoProtocol, &DevicePath, &Handle); - if (!EFI_ERROR(Status)) { - Status = uefi_call_wrapper(BS->HandleProtocol, 3, Handle, &DeviceIoProtocol, (VOID*)GlobalIoFncs); - } - - ASSERT (!EFI_ERROR(Status)); - return Status; -} - -UINT32 -ReadPort ( - IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, - IN EFI_IO_WIDTH Width, - IN UINTN Port - ) -{ - UINT32 Data; - EFI_STATUS Status EFI_UNUSED; - - Status = uefi_call_wrapper(GlobalIoFncs->Io.Read, 5, GlobalIoFncs, Width, (UINT64)Port, 1, &Data); - ASSERT(!EFI_ERROR(Status)); - return Data; -} - -UINT32 -WritePort ( - IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, - IN EFI_IO_WIDTH Width, - IN UINTN Port, - IN UINTN Data - ) -{ - EFI_STATUS Status EFI_UNUSED; - - Status = uefi_call_wrapper(GlobalIoFncs->Io.Write, 5, GlobalIoFncs, Width, (UINT64)Port, 1, &Data); - ASSERT(!EFI_ERROR(Status)); - return (UINT32)Data; -} - -UINT32 -ReadPciConfig ( - IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, - IN EFI_IO_WIDTH Width, - IN UINTN Address - ) -{ - UINT32 Data; - EFI_STATUS Status EFI_UNUSED; - - Status = uefi_call_wrapper(GlobalIoFncs->Pci.Read, 5, GlobalIoFncs, Width, (UINT64)Address, 1, &Data); - ASSERT(!EFI_ERROR(Status)); - return Data; -} - -UINT32 -WritePciConfig ( - IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, - IN EFI_IO_WIDTH Width, - IN UINTN Address, - IN UINTN Data - ) -{ - EFI_STATUS Status EFI_UNUSED; - - Status = uefi_call_wrapper(GlobalIoFncs->Pci.Write, 5, GlobalIoFncs, Width, (UINT64)Address, 1, &Data); - ASSERT(!EFI_ERROR(Status)); - return (UINT32)Data; -} - - - diff --git a/efi/lib/ia32/efi_stub.S b/efi/lib/ia32/efi_stub.S deleted file mode 100644 index 464eae5..0000000 --- a/efi/lib/ia32/efi_stub.S +++ /dev/null @@ -1 +0,0 @@ -/* This stub is a stub to make the build happy */ diff --git a/efi/lib/ia32/initplat.c b/efi/lib/ia32/initplat.c deleted file mode 100644 index 7c887a6..0000000 --- a/efi/lib/ia32/initplat.c +++ /dev/null @@ -1,27 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - initplat.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - -VOID -InitializeLibPlatform ( - IN EFI_HANDLE ImageHandle EFI_UNUSED, - IN EFI_SYSTEM_TABLE *SystemTable EFI_UNUSED - ) -{ -} - diff --git a/efi/lib/ia32/math.c b/efi/lib/ia32/math.c deleted file mode 100644 index fce7a8d..0000000 --- a/efi/lib/ia32/math.c +++ /dev/null @@ -1,199 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - math.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -// -// Declare runtime functions -// - -#ifdef RUNTIME_CODE -#ifndef __GNUC__ -#pragma RUNTIME_CODE(LShiftU64) -#pragma RUNTIME_CODE(RShiftU64) -#pragma RUNTIME_CODE(MultU64x32) -#pragma RUNTIME_CODE(DivU64x32) -#endif -#endif - -// -// -// - -UINT64 -LShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Left shift 64bit by 32bit and get a 64bit result -{ -#ifdef __GNUC__ - return Operand << Count; -#else - UINT64 Result; - _asm { - mov eax, dword ptr Operand[0] - mov edx, dword ptr Operand[4] - mov ecx, Count - and ecx, 63 - - shld edx, eax, cl - shl eax, cl - - cmp ecx, 32 - jc short ls10 - - mov edx, eax - xor eax, eax - -ls10: - mov dword ptr Result[0], eax - mov dword ptr Result[4], edx - } - - return Result; -#endif -} - -UINT64 -RShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Right shift 64bit by 32bit and get a 64bit result -{ -#ifdef __GNUC__ - return Operand >> Count; -#else - UINT64 Result; - _asm { - mov eax, dword ptr Operand[0] - mov edx, dword ptr Operand[4] - mov ecx, Count - and ecx, 63 - - shrd eax, edx, cl - shr edx, cl - - cmp ecx, 32 - jc short rs10 - - mov eax, edx - xor edx, edx - -rs10: - mov dword ptr Result[0], eax - mov dword ptr Result[4], edx - } - - return Result; -#endif -} - - -UINT64 -MultU64x32 ( - IN UINT64 Multiplicand, - IN UINTN Multiplier - ) -// Multiple 64bit by 32bit and get a 64bit result -{ -#ifdef __GNUC__ - return Multiplicand * Multiplier; -#else - UINT64 Result; - _asm { - mov eax, dword ptr Multiplicand[0] - mul Multiplier - mov dword ptr Result[0], eax - mov dword ptr Result[4], edx - mov eax, dword ptr Multiplicand[4] - mul Multiplier - add dword ptr Result[4], eax - } - - return Result; -#endif -} - -UINT64 -DivU64x32 ( - IN UINT64 Dividend, - IN UINTN Divisor, - OUT UINTN *Remainder OPTIONAL - ) -// divide 64bit by 32bit and get a 64bit result -// N.B. only works for 31bit divisors!! -{ -#if 0 && defined(__GNUC__) && !defined(__MINGW32__) - if (Remainder) - *Remainder = Dividend % Divisor; - return Dividend / Divisor; -#else - UINT32 Rem; - UINT32 bit; - - ASSERT (Divisor != 0); - ASSERT ((Divisor >> 31) == 0); - - // - // For each bit in the dividend - // - - Rem = 0; - for (bit=0; bit < 64; bit++) { -#if defined(__GNUC__) || defined(__MINGW32__) - asm ( - "shll $1, %0\n\t" - "rcll $1, 4%0\n\t" - "rcll $1, %2\n\t" - "mov %2, %%eax\n\t" - "cmp %1, %%eax\n\t" - "cmc\n\t" - "sbb %%eax, %%eax\n\t" - "sub %%eax, %0\n\t" - "and %1, %%eax\n\t" - "sub %%eax, %2" - : /* no outputs */ - : "m"(Dividend), "m"(Divisor), "m"(Rem) - : "cc","memory","%eax" - ); -#else - _asm { - shl dword ptr Dividend[0], 1 ; shift rem:dividend left one - rcl dword ptr Dividend[4], 1 - rcl dword ptr Rem, 1 - - mov eax, Rem - cmp eax, Divisor ; Is Rem >= Divisor? - cmc ; No - do nothing - sbb eax, eax ; Else, - sub dword ptr Dividend[0], eax ; set low bit in dividen - and eax, Divisor ; and - sub Rem, eax ; subtract divisor - } -#endif - } - - if (Remainder) { - *Remainder = Rem; - } - - return Dividend; -#endif -} diff --git a/efi/lib/ia32/setjmp.S b/efi/lib/ia32/setjmp.S deleted file mode 100644 index aa9c084..0000000 --- a/efi/lib/ia32/setjmp.S +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. - * This program and the accompanying materials are licensed and made -available - * under the terms and conditions of the BSD License which accompanies -this - * distribution. The full text of the license may be found at - * http://opensource.org/licenses/bsd-license.php. - * - * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" -BASIS, - * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR - * IMPLIED. - */ - .text - .globl setjmp -#ifndef __MINGW32__ - .type setjmp, @function -#else - .def setjmp; .scl 2; .type 32; .endef -#endif -setjmp: - pop %ecx - movl (%esp), %edx - movl %ebx, (%edx) - movl %esi, 4(%edx) - movl %edi, 8(%edx) - movl %ebp, 12(%edx) - movl %esp, 16(%edx) - xorl %eax, %eax - jmp *%ecx - - .globl longjmp -#ifndef __MINGW32__ - .type longjmp, @function -#else - .def longjmp; .scl 2; .type 32; .endef -#endif -longjmp: - pop %eax - pop %edx - pop %eax - movl (%edx), %ebx - movl 4(%edx), %esi - movl 8(%edx), %edi diff --git a/efi/lib/ia64/initplat.c b/efi/lib/ia64/initplat.c deleted file mode 100644 index 810d4fe..0000000 --- a/efi/lib/ia64/initplat.c +++ /dev/null @@ -1,30 +0,0 @@ -/*++ - -Copyright (c) 1999 Intel Corporation - -Module Name: - - initplat.c - -Abstract: - - Functions to make SAL and PAL proc calls - -Revision History - ---*/ -#include "lib.h" - -//#include "palproc.h" - -VOID -InitializeLibPlatform ( - IN EFI_HANDLE ImageHandle EFI_UNUSED, - IN EFI_SYSTEM_TABLE *SystemTable EFI_UNUSED - ) -{ - PLABEL SalPlabel; - UINT64 PalEntry; - - LibInitSalAndPalProc (&SalPlabel, &PalEntry); -} diff --git a/efi/lib/ia64/math.c b/efi/lib/ia64/math.c deleted file mode 100644 index a8c4e12..0000000 --- a/efi/lib/ia64/math.c +++ /dev/null @@ -1,88 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - math.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -// -// Declare runtime functions -// - -#ifdef RUNTIME_CODE -#ifndef __GNUC__ -#pragma RUNTIME_CODE(LShiftU64) -#pragma RUNTIME_CODE(RShiftU64) -#pragma RUNTIME_CODE(MultU64x32) -#pragma RUNTIME_CODE(DivU64x32) -#endif -#endif - -// -// -// - - - - -UINT64 -LShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Left shift 64bit by 32bit and get a 64bit result -{ - return Operand << Count; -} - -UINT64 -RShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Right shift 64bit by 32bit and get a 64bit result -{ - return Operand >> Count; -} - - -UINT64 -MultU64x32 ( - IN UINT64 Multiplicand, - IN UINTN Multiplier - ) -// Multiple 64bit by 32bit and get a 64bit result -{ - return Multiplicand * Multiplier; -} - -UINT64 -DivU64x32 ( - IN UINT64 Dividend, - IN UINTN Divisor, - OUT UINTN *Remainder OPTIONAL - ) -// divide 64bit by 32bit and get a 64bit result -// N.B. only works for 31bit divisors!! -{ - ASSERT (Divisor != 0); - - if (Remainder) { - *Remainder = Dividend % Divisor; - } - - return Dividend / Divisor; -} diff --git a/efi/lib/ia64/palproc.S b/efi/lib/ia64/palproc.S deleted file mode 100644 index c304a78..0000000 --- a/efi/lib/ia64/palproc.S +++ /dev/null @@ -1,161 +0,0 @@ -//++ -// Copyright (c) 1996-99 Intel Corp. -// -// -// Module Name: -// -// palproc.s -// -// Abstract: -// -// Contains an implementation for making PAL PROC calls on -// IA-64 architecture. -// -// -// -// Revision History: -// -//-- - - .file "palproc.s" - -#include "palproc.h" - - -//----------------------------------------------------------------------------- -//++ -// MakeStaticPALCall -// -// This routine is called whenever an architected static calling convention -// based PAL call is to be made. This call does use RSE actually, but our policy -// in making static PAL calls before memory is available is to make sure that -// we do not nest too deep and allocate beyond 96 banked registers. In other -// words we carefully code calls and control flow before memory is available. -// -// Arguments : All parameters set up to do static PAL call. -// -// On Entry : -// -// Return Value: -// -// As per static calling conventions. -// -//-- -//--------------------------------------------------------------------------- -PROCEDURE_ENTRY(MakeStaticPALCall) - - NESTED_SETUP (5,8,0,0) - mov loc3 = b5 - mov loc4 = r2 - mov loc7 = r1;; - - movl loc6 = PAL_MC_CLEAR_LOG - mov r2 = psr;; - mov loc5 = r2 - - cmp.eq p6,p7 = r28,loc6;; - (p7)movl loc6 = PAL_MC_DYNAMIC_STATE;; - (p7)cmp.eq p6,p7 = r28,loc6;; - - (p7)movl loc6 = PAL_MC_ERROR_INFO;; - (p7)cmp.eq p6,p7 = r28,loc6;; - - (p7)movl loc6 = PAL_MC_RESUME;; - (p7)cmp.eq p6,p7 = r28,loc6 - - mov loc6 = 0x1;; - (p7)dep r2 = loc6,r2,13,1;; // psr.ic = 1 - -// p6 will be true, if it is one of the MCHK calls. There has been lots of debate -// on psr.ic for these values. For now, do not do any thing to psr.ic - -// (p6)dep r2 = r0,r2,13,1;; // psr.ic = 0 - dep r2 = r0,r2,14,1;; // psr.i = 0 - - mov psr.l = r2 - srlz.d;; // Needs data serailization. - srlz.i;; // Needs instruction serailization. - -StaticGetPALLocalIP: - mov loc2 = ip;; - add loc2 = StaticComeBackFromPALCall - StaticGetPALLocalIP,loc2;; - mov b0 = loc2 // return address after Pal call - mov r28 = in1 // get the input parameters to PAL call - mov r29 = in2 - mov r30 = in3;; - mov r31 = in4 - mov b5 = in0;; // get the PalProcEntrypt from input - br.sptk b5 // Take the plunge. - -StaticComeBackFromPALCall: - - mov psr.l = loc5;; - srlz.d;; // Needs data serailization. - srlz.i;; // Needs instruction serailization. - - mov b5 = loc3 - mov r2 = loc4 - mov r1 = loc7 - - NESTED_RETURN - -PROCEDURE_EXIT(MakeStaticPALCall) - - -//----------------------------------------------------------------------------- -//++ -// MakeStackedPALCall -// -// This routine is called whenever an architected stacked calling convention -// based PAL call is to be made. This call is made after memory is available. -// Although stacked calls could be made directly from 'C', there is a PAL -// requirement which forces the index to be in GR28 and hence this stub is -// needed -// -// Arguments : All parameters set up to do stacted PAL call. -// -// On Entry : -// in0: PAL_PROC entrypoint -// in1-in4 : PAL_PROC arguments -// -// Return Value: -// -// As per stacked calling conventions. -// -//-- -//--------------------------------------------------------------------------- -PROCEDURE_ENTRY(MakeStackedPALCall) - - NESTED_SETUP (5,8,4,0) - mov loc3 = b5 - mov loc4 = r2 - mov loc7 = r1 - mov r2 = psr;; - mov loc5 = r2;; - dep r2 = r0,r2,14,1;; // psr.i = 0 - mov psr.l = r2 - srlz.d;; // Needs data serailization. - srlz.i;; // Needs instruction serailization. - -StackedGetPALLocalIP: - mov r28 = in1 // get the input parameters to PAL call - mov out0 = in1 - mov out1 = in2;; - mov out2 = in3 - mov out3 = in4 - mov b5 = in0;; // get the PalProcEntrypt from input - br.call.dpnt b0=b5;; // Take the plunge. - -StackedComeBackFromPALCall: - - mov psr.l = loc5;; - srlz.d;; // Needs data serailization. - srlz.i;; // Needs instruction serailization. - mov b5 = loc3 - mov r2 = loc4 - mov r1 = loc7 - - NESTED_RETURN - -PROCEDURE_EXIT(MakeStackedPALCall) - diff --git a/efi/lib/ia64/palproc.h b/efi/lib/ia64/palproc.h deleted file mode 100644 index 240946d..0000000 --- a/efi/lib/ia64/palproc.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// -// Copyright (c) 1996-99 Intel Corp. -// -// -//Module Name: -// -// palproc.h -// -//Abstract: -// -// This module contains generic macros for an IA64 assembly writer. -// -// -//Revision History -// - -#ifndef _PALPROC_H -#define _PALPROC_H - -#define PROCEDURE_ENTRY(name) .##text; \ - .##type name, @function; \ - .##global name; \ - .##proc name; \ -name: - -#define PROCEDURE_EXIT(name) .##endp name - -// Note: use of NESTED_SETUP requires number of locals (l) >= 3 - -#define NESTED_SETUP(i,l,o,r) \ - alloc loc1=ar##.##pfs,i,l,o,r ;\ - mov loc0=b0 - -#define NESTED_RETURN \ - mov b0=loc0 ;\ - mov ar##.##pfs=loc1 ;;\ - br##.##ret##.##dpnt b0;; - - -// defines needed in palproc.s - -#define PAL_MC_CLEAR_LOG 0x0015 -#define PAL_MC_DRAIN 0x0016 -#define PAL_MC_EXPECTED 0x0017 -#define PAL_MC_DYNAMIC_STATE 0x0018 -#define PAL_MC_ERROR_INFO 0x0019 -#define PAL_MC_RESUME 0x001a -#define PAL_MC_REGISTER_MEM 0x001b - -#endif // _PALPROC_H diff --git a/efi/lib/ia64/salpal.c b/efi/lib/ia64/salpal.c deleted file mode 100644 index 3d808f3..0000000 --- a/efi/lib/ia64/salpal.c +++ /dev/null @@ -1,335 +0,0 @@ -/*++ - -Copyright (c) 1999 Intel Corporation - -Module Name: - - salpal.c - -Abstract: - - Functions to make SAL and PAL proc calls - -Revision History - ---*/ -#include "lib.h" -#include "palproc.h" -#include "salproc.h" -/*++ - -Copyright (c) 1999 Intel Corporation - -Module Name: - - EfiRtLib.h - -Abstract: - - EFI Runtime library functions - - - -Revision History - ---*/ - -#include "efi.h" -#include "efilib.h" - -rArg -MakeStaticPALCall ( - IN UINT64 PALPROCPtr, - IN UINT64 Arg1, - IN UINT64 Arg2, - IN UINT64 Arg3, - IN UINT64 Arg4 - ); - -rArg -MakeStackedPALCall ( - IN UINT64 PALPROCPtr, - IN UINT64 Arg1, - IN UINT64 Arg2, - IN UINT64 Arg3, - IN UINT64 Arg4 - ); - - -PLABEL SalProcPlabel; -PLABEL PalProcPlabel; -CALL_SAL_PROC GlobalSalProc; -CALL_PAL_PROC GlobalPalProc; - -VOID -LibInitSalAndPalProc ( - OUT PLABEL *SalPlabel, - OUT UINT64 *PalEntry - ) -{ - SAL_SYSTEM_TABLE_ASCENDING_ORDER *SalSystemTable; - EFI_STATUS Status; - - GlobalSalProc = NULL; - GlobalPalProc = NULL; - - Status = LibGetSystemConfigurationTable(&SalSystemTableGuid, (VOID **)&SalSystemTable); - if (EFI_ERROR(Status)) { - return; - } - - // - // BugBug: Add code to test checksum on the Sal System Table - // - if (SalSystemTable->Entry0.Type != 0) { - return; - } - - SalProcPlabel.ProcEntryPoint = SalSystemTable->Entry0.SalProcEntry; - SalProcPlabel.GP = SalSystemTable->Entry0.GlobalDataPointer; - GlobalSalProc = (CALL_SAL_PROC)&SalProcPlabel.ProcEntryPoint; - - // - // Need to check the PAL spec to make sure I'm not responsible for - // storing more state. - // We are passing in a Plabel that should be ignorred by the PAL. Call - // this way will cause use to retore our gp after the PAL returns. - // - PalProcPlabel.ProcEntryPoint = SalSystemTable->Entry0.PalProcEntry; - PalProcPlabel.GP = SalSystemTable->Entry0.GlobalDataPointer; - GlobalPalProc = (CALL_PAL_PROC)PalProcPlabel.ProcEntryPoint; - - *PalEntry = PalProcPlabel.ProcEntryPoint; - *SalPlabel = SalProcPlabel; -} - -EFI_STATUS -LibGetSalIoPortMapping ( - OUT UINT64 *IoPortMapping - ) -/*++ - - Get the IO Port Map from the SAL System Table. - DO NOT USE THIS TO DO YOU OWN IO's!!!!!!!!!!!! - Only use this for getting info, or initing the built in EFI IO abstraction. - Always use the EFI Device IO protoocl to access IO space. - ---*/ -{ - SAL_SYSTEM_TABLE_ASCENDING_ORDER *SalSystemTable; - SAL_ST_MEMORY_DESCRIPTOR_ENTRY *SalMemDesc; - EFI_STATUS Status; - - Status = LibGetSystemConfigurationTable(&SalSystemTableGuid, (VOID **)&SalSystemTable); - if (EFI_ERROR(Status)) { - return EFI_UNSUPPORTED; - } - - // - // BugBug: Add code to test checksum on the Sal System Table - // - if (SalSystemTable->Entry0.Type != 0) { - return EFI_UNSUPPORTED; - } - - // - // The SalSystemTable pointer includes the Type 0 entry. - // The SalMemDesc is Type 1 so it comes next. - // - SalMemDesc = (SAL_ST_MEMORY_DESCRIPTOR_ENTRY *)(SalSystemTable + 1); - while (SalMemDesc->Type == SAL_ST_MEMORY_DESCRIPTOR) { - if (SalMemDesc->MemoryType == SAL_IO_PORT_MAPPING) { - *IoPortMapping = SalMemDesc->PhysicalMemoryAddress; - return EFI_SUCCESS; - } - SalMemDesc++; - } - return EFI_UNSUPPORTED; -} - -EFI_STATUS -LibGetSalIpiBlock ( - OUT UINT64 *IpiBlock - ) -/*++ - - Get the IPI block from the SAL system table - ---*/ -{ - SAL_SYSTEM_TABLE_ASCENDING_ORDER *SalSystemTable; - SAL_ST_MEMORY_DESCRIPTOR_ENTRY *SalMemDesc; - EFI_STATUS Status; - - Status = LibGetSystemConfigurationTable(&SalSystemTableGuid, (VOID*)&SalSystemTable); - if (EFI_ERROR(Status)) { - return EFI_UNSUPPORTED; - } - - // - // BugBug: Add code to test checksum on the Sal System Table - // - if (SalSystemTable->Entry0.Type != 0) { - return EFI_UNSUPPORTED; - } - - // - // The SalSystemTable pointer includes the Type 0 entry. - // The SalMemDesc is Type 1 so it comes next. - // - SalMemDesc = (SAL_ST_MEMORY_DESCRIPTOR_ENTRY *)(SalSystemTable + 1); - while (SalMemDesc->Type == SAL_ST_MEMORY_DESCRIPTOR) { - if (SalMemDesc->MemoryType == SAL_SAPIC_IPI_BLOCK ) { - *IpiBlock = SalMemDesc->PhysicalMemoryAddress; - return EFI_SUCCESS; - } - SalMemDesc++; - } - return EFI_UNSUPPORTED; -} - -EFI_STATUS -LibGetSalWakeupVector ( - OUT UINT64 *WakeVector - ) -/*++ - -Get the wakeup vector from the SAL system table - ---*/ -{ - SAL_ST_AP_WAKEUP_DECRIPTOR *ApWakeUp; - - ApWakeUp = LibSearchSalSystemTable (SAL_ST_AP_WAKEUP); - if (!ApWakeUp) { - *WakeVector = -1; - return EFI_UNSUPPORTED; - } - *WakeVector = ApWakeUp->ExternalInterruptVector; - return EFI_SUCCESS; -} - -VOID * -LibSearchSalSystemTable ( - IN UINT8 EntryType - ) -{ - EFI_STATUS Status; - UINT8 *SalTableHack; - SAL_SYSTEM_TABLE_ASCENDING_ORDER *SalSystemTable; - UINT16 EntryCount; - UINT16 Count; - - Status = LibGetSystemConfigurationTable(&SalSystemTableGuid, (VOID*)&SalSystemTable); - if (EFI_ERROR(Status)) { - return NULL; - } - - EntryCount = SalSystemTable->Header.EntryCount; - if (EntryCount == 0) { - return NULL; - } - // - // BugBug: Add code to test checksum on the Sal System Table - // - - SalTableHack = (UINT8 *)&SalSystemTable->Entry0; - for (Count = 0; Count < EntryCount ;Count++) { - if (*SalTableHack == EntryType) { - return (VOID *)SalTableHack; - } - switch (*SalTableHack) { - case SAL_ST_ENTRY_POINT: - SalTableHack += 48; - break; - case SAL_ST_MEMORY_DESCRIPTOR: - SalTableHack += 32; - break; - case SAL_ST_PLATFORM_FEATURES: - SalTableHack += 16; - break; - case SAL_ST_TR_USAGE: - SalTableHack += 32; - break; - case SAL_ST_PTC: - SalTableHack += 16; - break; - case SAL_ST_AP_WAKEUP: - SalTableHack += 16; - break; - default: - ASSERT(FALSE); - break; - } - } - return NULL; -} - -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 - ) -{ - rArg ReturnValue; - - ReturnValue.p0 = -3; // SAL status return completed with error - if (GlobalSalProc) { - ReturnValue = GlobalSalProc(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8); - } - - if (Results) { - CopyMem (Results, &ReturnValue, sizeof(rArg)); - } -} - -VOID -LibPalProc ( - IN UINT64 Arg1, // Pal Proc index - IN UINT64 Arg2, - IN UINT64 Arg3, - IN UINT64 Arg4, - OUT rArg *Results OPTIONAL - ) -{ - - rArg ReturnValue; - - ReturnValue.p0 = -3; // PAL status return completed with error - - // - // check for valid PalProc entry point - // - - if (!GlobalPalProc) { - if (Results) - CopyMem (Results, &ReturnValue, sizeof(rArg)); - return; - } - - // - // check if index falls within stacked or static register calling conventions - // and call appropriate Pal stub call - // - - if (((Arg1 >=255) && (Arg1 <=511)) || - ((Arg1 >=768) && (Arg1 <=1023))) { - ReturnValue = MakeStackedPALCall((UINT64)GlobalPalProc,Arg1,Arg2,Arg3,Arg4); - } - else { - ReturnValue = MakeStaticPALCall((UINT64)GlobalPalProc,Arg1,Arg2,Arg3,Arg4); - } - - if (Results) - CopyMem (Results, &ReturnValue, sizeof(rArg)); - - return; -} - diff --git a/efi/lib/ia64/setjmp.S b/efi/lib/ia64/setjmp.S deleted file mode 100644 index bbb29d8..0000000 --- a/efi/lib/ia64/setjmp.S +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. - * This program and the accompanying materials are licensed and made -available - * under the terms and conditions of the BSD License which accompanies -this - * distribution. The full text of the license may be found at - * http://opensource.org/licenses/bsd-license.php. - * - * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" -BASIS, - * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR - * IMPLIED. - */ - .text - .globl setjmp - .type setjmp, @function -setjmp: - alloc loc0 = ar.pfs, 1, 2, 1, 0 - ;; - mov r14 = ar.unat - mov r15 = ar.bsp - add r10 = 0x10*20, in0 - ;; - stf.spill.nta [in0] = f2, 0x10 - st8.spill.nta [r10] = r4, 8 - mov r21 = b1 - ;; - stf.spill.nta [in0] = f3, 0x10 - st8.spill.nta [r10] = r5, 8 - mov r22 = b2 - ;; - stf.spill.nta [in0] = f4, 0x10 - st8.spill.nta [r10] = r6, 8 - mov r23 = b3 - ;; - stf.spill.nta [in0] = f5, 0x10 - st8.spill.nta [r10] = r7, 8 - mov r24 = b4 - ;; - stf.spill.nta [in0] = f16, 0x10 - st8.spill.nta [r10] = sp, 8 - mov r25 = b5 - ;; - stf.spill.nta [in0] = f17, 0x10 - st8.nta [r10] = loc1, 8 - mov r16 = pr - ;; - stf.spill.nta [in0] = f18, 0x10 - st8.nta [r10] = r21, 8 - mov r17 = ar.lc - ;; - stf.spill.nta [in0] = f19, 0x10 - st8.nta [r10] = r22, 8 - ;; - stf.spill.nta [in0] = f20, 0x10 - st8.nta [r10] = r23, 8 - ;; - stf.spill.nta [in0] = f21, 0x10 - st8.nta [r10] = r24, 8 - ;; - stf.spill.nta [in0] = f22, 0x10 - st8.nta [r10] = r25, 8 - ;; - stf.spill.nta [in0] = f23, 0x10 - mov r18 = ar.unat - ;; - stf.spill.nta [in0] = f24, 0x10 - st8.nta [r10] = r14, 8 - ;; - stf.spill.nta [in0] = f25, 0x10 - st8.nta [r10] = r18, 8 - ;; - stf.spill.nta [in0] = f26, 0x10 - st8.nta [r10] = loc0, 8 - ;; - stf.spill.nta [in0] = f27, 0x10 - st8.nta [r10] = r15, 8 - mov r8 = 0 - ;; - stf.spill.nta [in0] = f28, 0x10 - mov r19 = ar.fpsr - ;; - stf.spill.nta [in0] = f29, 0x10 - st8.nta [r10] = r16, 8 - mov ar.pfs = loc0 - ;; - stf.spill.nta [in0] = f30, 0x10 - st8.nta [r10] = r17, 8 - mov b0 = loc1 - ;; - stf.spill.nta [in0] = f31, 0x10 - st8.nta [r10] = r19 - ;; - mov ar.unat = r14 - br.ret.sptk b0 - ;; - - .globl longjmp - .type longjmp, @function - .regstk 2, 0, 0, 0 -longjmp: - add r10 = 0x10*20 + 8*14, in0 - movl r2 = ~((((1<<14) - 1) << 16) | 3) - ;; - ld8.nt1 r14 = [r10], -8*2 - mov r15 = ar.bspstore - ;; - ld8.nt1 r17 = [r10], -8 - mov r16 = ar.rsc - cmp.leu p6 = r14, r15 - ;; - ld8.nt1 r18 = [r10], -8 - ld8.nt1 r25 = [r10], -8 - and r2 = r16, r2 - ;; - ldf.fill.nt1 f2 = [in0], 0x10 - ld8.nt1 r24 = [r10], -8 - mov b5 = r25 - ;; - mov ar.rsc = r2 - ld8.nt1 r23 = [r10], -8 - mov b4 = r24 - ;; - ldf.fill.nt1 f3 = [in0], 0x10 - mov ar.unat = r17 -(p6) br.spnt.many _skip_flushrs - ;; - flushrs - mov r15 = ar.bsp - ;; -_skip_flushrs: - mov r31 = ar.rnat - loadrs - ;; - ldf.fill.nt1 f4 = [in0], 0x10 - ld8.nt1 r22 = [r10], -8 - dep r2 = -1, r14, 3, 6 - ;; - ldf.fill.nt1 f5 = [in0], 0x10 - ld8.nt1 r21 = [r10], -8 - cmp.ltu p6 = r2, r15 - ;; - ld8.nt1 r20 = [r10], -0x10 -(p6) ld8.nta r31 = [r2] - mov b3 = r23 - ;; - ldf.fill.nt1 f16 = [in0], 0x10 - ld8.fill.nt1 r7 = [r10], -8 - mov b2 = r22 - ;; - ldf.fill.nt1 f17 = [in0], 0x10 - ld8.fill.nt1 r6 = [r10], -8 - mov b1 = r21 - ;; - ldf.fill.nt1 f18 = [in0], 0x10 - ld8.fill.nt1 r5 = [r10], -8 - mov b0 = r20 - ;; - ldf.fill.nt1 f19 = [in0], 0x10 - ld8.fill.nt1 r4 = [r10], 8*13 - ;; - ldf.fill.nt1 f20 = [in0], 0x10 - ld8.nt1 r19 = [r10], 0x10 - ;; - ldf.fill.nt1 f21 = [in0], 0x10 - ld8.nt1 r26 = [r10], 8 - mov ar.pfs = r19 - ;; - ldf.fill.nt1 f22 = [in0], 0x10 - ld8.nt1 r27 = [r10], 8 - mov pr = r26, -1 - ;; - ldf.fill.nt1 f23 = [in0], 0x10 - ld8.nt1 r28 = [r10], -17*8 - 0x10 - mov ar.lc = r27 - ;; - ldf.fill.nt1 f24 = [in0], 0x10 - ldf.fill.nt1 f25 = [in0], 0x10 - mov r8 = in1 - ;; - ldf.fill.nt1 f26 = [in0], 0x10 - ldf.fill.nt1 f31 = [r10], -0x10 - ;; - ldf.fill.nt1 f27 = [in0], 0x10 - ldf.fill.nt1 f30 = [r10], -0x10 - ;; - ldf.fill.nt1 f28 = [in0] - ldf.fill.nt1 f29 = [r10], 0x10*3 + 8*4 - ;; - ld8.fill.nt1 sp = [r10] - mov ar.unat = r18 - ;; - mov ar.bspstore = r14 - mov ar.rnat = r31 - ;; - invala - mov ar.rsc = r16 - br.ret.sptk b0 diff --git a/efi/lib/init.c b/efi/lib/init.c deleted file mode 100644 index 4f238c0..0000000 --- a/efi/lib/init.c +++ /dev/null @@ -1,214 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - -VOID -EFIDebugVariable ( - VOID - ); - -VOID -InitializeLib ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: - - Initializes EFI library for use - -Arguments: - - Firmware's EFI system table - -Returns: - - None - ---*/ -{ - EFI_LOADED_IMAGE *LoadedImage; - EFI_STATUS Status; - CHAR8 *LangCode; - - if (!LibInitialized) { - LibInitialized = TRUE; - LibFwInstance = FALSE; - LibImageHandle = ImageHandle; - - - // - // Set up global pointer to the system table, boot services table, - // and runtime services table - // - - ST = SystemTable; - BS = SystemTable->BootServices; - RT = SystemTable->RuntimeServices; -// ASSERT (CheckCrc(0, &ST->Hdr)); -// ASSERT (CheckCrc(0, &BS->Hdr)); -// ASSERT (CheckCrc(0, &RT->Hdr)); - - - // - // Initialize pool allocation type - // - - if (ImageHandle) { - Status = uefi_call_wrapper( - BS->HandleProtocol, - 3, - ImageHandle, - &LoadedImageProtocol, - (VOID*)&LoadedImage - ); - - if (!EFI_ERROR(Status)) { - PoolAllocationType = LoadedImage->ImageDataType; - } - EFIDebugVariable (); - } - - // - // Initialize Guid table - // - - InitializeGuid(); - - InitializeLibPlatform(ImageHandle,SystemTable); - } - - // - // - // - - if (ImageHandle && UnicodeInterface == &LibStubUnicodeInterface) { - LangCode = LibGetVariable (VarLanguage, &EfiGlobalVariable); - InitializeUnicodeSupport (LangCode); - if (LangCode) { - FreePool (LangCode); - } - } -} - -VOID -InitializeUnicodeSupport ( - CHAR8 *LangCode - ) -{ - EFI_UNICODE_COLLATION_INTERFACE *Ui; - EFI_STATUS Status; - CHAR8 *Languages; - UINTN Index, Position, Length; - UINTN NoHandles; - EFI_HANDLE *Handles; - - // - // If we don't know it, lookup the current language code - // - - LibLocateHandle (ByProtocol, &UnicodeCollationProtocol, NULL, &NoHandles, &Handles); - if (!LangCode || !NoHandles) { - goto Done; - } - - // - // Check all driver's for a matching language code - // - - for (Index=0; Index < NoHandles; Index++) { - Status = uefi_call_wrapper(BS->HandleProtocol, 3, Handles[Index], &UnicodeCollationProtocol, (VOID*)&Ui); - if (EFI_ERROR(Status)) { - continue; - } - - // - // Check for a matching language code - // - - Languages = Ui->SupportedLanguages; - Length = strlena(Languages); - for (Position=0; Position < Length; Position += ISO_639_2_ENTRY_SIZE) { - - // - // If this code matches, use this driver - // - - if (CompareMem (Languages+Position, LangCode, ISO_639_2_ENTRY_SIZE) == 0) { - UnicodeInterface = Ui; - goto Done; - } - } - } - -Done: - // - // Cleanup - // - - if (Handles) { - FreePool (Handles); - } -} - -VOID -EFIDebugVariable ( - VOID - ) -{ - EFI_STATUS Status; - UINT32 Attributes; - UINTN DataSize; - UINTN NewEFIDebug; - - DataSize = sizeof(EFIDebug); - Status = uefi_call_wrapper(RT->GetVariable, 5, L"EFIDebug", &EfiGlobalVariable, &Attributes, &DataSize, &NewEFIDebug); - if (!EFI_ERROR(Status)) { - EFIDebug = NewEFIDebug; - } -} - -/* - * Calls to memset/memcpy may be emitted implicitly by GCC or MSVC - * even when -ffreestanding or /NODEFAULTLIB are in effect. - */ - -#ifndef __SIZE_TYPE__ -#define __SIZE_TYPE__ UINTN -#endif - -void *memset(void *s, int c, __SIZE_TYPE__ n) -{ - unsigned char *p = s; - - while (n--) - *p++ = c; - - return s; -} - -void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n) -{ - const unsigned char *q = src; - unsigned char *p = dest; - - while (n--) - *p++ = *q++; - - return dest; -} diff --git a/efi/lib/lib.h b/efi/lib/lib.h deleted file mode 100644 index 37fbb95..0000000 --- a/efi/lib/lib.h +++ /dev/null @@ -1,92 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - lib.h - -Abstract: - - EFI library header files - - - -Revision History - ---*/ - -#ifdef __GNUC__ -#pragma GCC visibility push(hidden) -#endif - -#include "efi.h" -#include "efilib.h" -#include "efirtlib.h" - -// -// Include non architectural protocols -// -#include "efivar.h" -#include "legacyboot.h" -#include "intload.h" -#include "vgaclass.h" -#include "eficonsplit.h" -#include "adapterdebug.h" -#include "intload.h" - -#include "efigpt.h" -#include "libsmbios.h" - -// -// Prototypes -// - -VOID -InitializeGuid ( - VOID - ); - -INTN EFIAPI -LibStubStriCmp ( - IN EFI_UNICODE_COLLATION_INTERFACE *This, - IN CHAR16 *S1, - IN CHAR16 *S2 - ); - -BOOLEAN EFIAPI -LibStubMetaiMatch ( - IN EFI_UNICODE_COLLATION_INTERFACE *This, - IN CHAR16 *String, - IN CHAR16 *Pattern - ); - -VOID EFIAPI -LibStubStrLwrUpr ( - IN EFI_UNICODE_COLLATION_INTERFACE *This, - IN CHAR16 *Str - ); - -BOOLEAN -LibMatchDevicePaths ( - IN EFI_DEVICE_PATH *Multi, - IN EFI_DEVICE_PATH *Single - ); - -EFI_DEVICE_PATH * -LibDuplicateDevicePathInstance ( - IN EFI_DEVICE_PATH *DevPath - ); - - -// -// Globals -// -extern BOOLEAN LibInitialized; -extern BOOLEAN LibFwInstance; -extern EFI_HANDLE LibImageHandle; -extern SIMPLE_TEXT_OUTPUT_INTERFACE *LibRuntimeDebugOut; -extern EFI_UNICODE_COLLATION_INTERFACE *UnicodeInterface; -extern EFI_UNICODE_COLLATION_INTERFACE LibStubUnicodeInterface; -extern EFI_RAISE_TPL LibRuntimeRaiseTPL; -extern EFI_RESTORE_TPL LibRuntimeRestoreTPL; diff --git a/efi/lib/lock.c b/efi/lib/lock.c deleted file mode 100644 index a33bec3..0000000 --- a/efi/lib/lock.c +++ /dev/null @@ -1,107 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - lock.c - -Abstract: - - Implements FLOCK - - - -Revision History - ---*/ - - -#include "lib.h" - - -VOID -InitializeLock ( - IN OUT FLOCK *Lock, - IN EFI_TPL Priority - ) -/*++ - -Routine Description: - - Initialize a basic mutual exclusion lock. Each lock - provides mutual exclusion access at it's task priority - level. Since there is no-premption (at any TPL) or - multiprocessor support, acquiring the lock only consists - of raising to the locks TPL. - - Note on a debug build the lock is acquired and released - to help ensure proper usage. - -Arguments: - - Lock - The FLOCK structure to initialize - - Priority - The task priority level of the lock - - -Returns: - - An initialized F Lock structure. - ---*/ -{ - Lock->Tpl = Priority; - Lock->OwnerTpl = 0; - Lock->Lock = 0; -} - - -VOID -AcquireLock ( - IN FLOCK *Lock - ) -/*++ - -Routine Description: - - Raising to the task priority level of the mutual exclusion - lock, and then acquires ownership of the lock. - -Arguments: - - Lock - The lock to acquire - -Returns: - - Lock owned - ---*/ -{ - RtAcquireLock (Lock); -} - - -VOID -ReleaseLock ( - IN FLOCK *Lock - ) -/*++ - -Routine Description: - - Releases ownership of the mutual exclusion lock, and - restores the previous task priority level. - -Arguments: - - Lock - The lock to release - -Returns: - - Lock unowned - ---*/ -{ - RtReleaseLock (Lock); -} diff --git a/efi/lib/mips64el/efi_stub.S b/efi/lib/mips64el/efi_stub.S deleted file mode 100644 index 464eae5..0000000 --- a/efi/lib/mips64el/efi_stub.S +++ /dev/null @@ -1 +0,0 @@ -/* This stub is a stub to make the build happy */ diff --git a/efi/lib/mips64el/initplat.c b/efi/lib/mips64el/initplat.c deleted file mode 100644 index 6c5e1fa..0000000 --- a/efi/lib/mips64el/initplat.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copright (C) 2014 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#include "lib.h" - -VOID -InitializeLibPlatform ( - IN EFI_HANDLE ImageHandle EFI_UNUSED, - IN EFI_SYSTEM_TABLE *SystemTable EFI_UNUSED - ) -{ -} diff --git a/efi/lib/mips64el/math.c b/efi/lib/mips64el/math.c deleted file mode 100644 index 8c16444..0000000 --- a/efi/lib/mips64el/math.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copright (C) 2014 Linaro Ltd. - * Author: Ard Biesheuvel - * - * 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 and this list of conditions, without modification. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License as published by the Free Software Foundation; - * either version 2 of the License, or (at your option) any later version. - */ - -#include "lib.h" - -UINT64 -LShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Left shift 64bit by 32bit and get a 64bit result -{ - return Operand << Count; -} - -UINT64 -RShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Right shift 64bit by 32bit and get a 64bit result -{ - return Operand >> Count; -} - - -UINT64 -MultU64x32 ( - IN UINT64 Multiplicand, - IN UINTN Multiplier - ) -// Multiple 64bit by 32bit and get a 64bit result -{ - return Multiplicand * Multiplier; -} - -UINT64 -DivU64x32 ( - IN UINT64 Dividend, - IN UINTN Divisor, - OUT UINTN *Remainder OPTIONAL - ) -// divide 64bit by 32bit and get a 64bit result -// N.B. only works for 31bit divisors!! -{ - if (Remainder) - *Remainder = Dividend % Divisor; - return Dividend / Divisor; -} diff --git a/efi/lib/mips64el/setjmp.S b/efi/lib/mips64el/setjmp.S deleted file mode 100644 index 930aca4..0000000 --- a/efi/lib/mips64el/setjmp.S +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. - * Copright (c) 2017 Lemote Co. - * Author: Heiher - * - * This program and the accompanying materials are licensed and made -available - * under the terms and conditions of the BSD License which accompanies -this - * distribution. The full text of the license may be found at - * http://opensource.org/licenses/bsd-license.php. - * - * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" -BASIS, - * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR - * IMPLIED. - */ - .text - .p2align 3 - - .globl setjmp - .type setjmp, @function -setjmp: - sd $ra, 0x00($a0) - sd $sp, 0x08($a0) - sd $fp, 0x10($a0) - sd $gp, 0x18($a0) - - sd $s0, 0x20($a0) - sd $s1, 0x28($a0) - sd $s2, 0x30($a0) - sd $s3, 0x38($a0) - sd $s4, 0x40($a0) - sd $s5, 0x48($a0) - sd $s6, 0x50($a0) - sd $s7, 0x58($a0) - -#ifdef __mips_hard_float - mfc0 $v0, $12 - ext $v0, $v0, 29, 1 - beqz $v0, 1f - - s.d $f24, 0x60($a0) - s.d $f25, 0x68($a0) - s.d $f26, 0x70($a0) - s.d $f27, 0x78($a0) - s.d $f28, 0x80($a0) - s.d $f29, 0x88($a0) - s.d $f30, 0x90($a0) - s.d $f31, 0x98($a0) - -1: -#endif - move $v0, $zero - jr $ra - - .globl longjmp - .type longjmp, @function -longjmp: - ld $ra, 0x00($a0) - ld $sp, 0x08($a0) - ld $fp, 0x10($a0) - ld $gp, 0x18($a0) - - ld $s0, 0x20($a0) - ld $s1, 0x28($a0) - ld $s2, 0x30($a0) - ld $s3, 0x38($a0) - ld $s4, 0x40($a0) - ld $s5, 0x48($a0) - ld $s6, 0x50($a0) - ld $s7, 0x58($a0) - -#ifdef __mips_hard_float - mfc0 $v0, $12 - ext $v0, $v0, 29, 1 - beqz $v0, 1f - - l.d $f24, 0x60($a0) - l.d $f25, 0x68($a0) - l.d $f26, 0x70($a0) - l.d $f27, 0x78($a0) - l.d $f28, 0x80($a0) - l.d $f29, 0x88($a0) - l.d $f30, 0x90($a0) - l.d $f31, 0x98($a0) - -1: -#endif - li $v0, 1 - movn $v0, $a1, $a1 - jr $ra diff --git a/efi/lib/misc.c b/efi/lib/misc.c deleted file mode 100644 index fdcc934..0000000 --- a/efi/lib/misc.c +++ /dev/null @@ -1,563 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - misc.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -// -// -// - -VOID * -AllocatePool ( - IN UINTN Size - ) -{ - EFI_STATUS Status; - VOID *p; - - Status = uefi_call_wrapper(BS->AllocatePool, 3, PoolAllocationType, Size, &p); - if (EFI_ERROR(Status)) { - DEBUG((D_ERROR, "AllocatePool: out of pool %x\n", Status)); - p = NULL; - } - return p; -} - -VOID * -AllocateZeroPool ( - IN UINTN Size - ) -{ - VOID *p; - - p = AllocatePool (Size); - if (p) { - ZeroMem (p, Size); - } - - return p; -} - -VOID * -ReallocatePool ( - IN VOID *OldPool, - IN UINTN OldSize, - IN UINTN NewSize - ) -{ - VOID *NewPool; - - NewPool = NULL; - if (NewSize) { - NewPool = AllocatePool (NewSize); - } - - if (OldPool) { - if (NewPool) { - CopyMem (NewPool, OldPool, OldSize < NewSize ? OldSize : NewSize); - } - - FreePool (OldPool); - } - - return NewPool; -} - - -VOID -FreePool ( - IN VOID *Buffer - ) -{ - uefi_call_wrapper(BS->FreePool, 1, Buffer); -} - - - -VOID -ZeroMem ( - IN VOID *Buffer, - IN UINTN Size - ) -{ - RtZeroMem (Buffer, Size); -} - -VOID -SetMem ( - IN VOID *Buffer, - IN UINTN Size, - IN UINT8 Value - ) -{ - RtSetMem (Buffer, Size, Value); -} - -VOID -CopyMem ( - IN VOID *Dest, - IN CONST VOID *Src, - IN UINTN len - ) -{ - RtCopyMem (Dest, Src, len); -} - -INTN -CompareMem ( - IN CONST VOID *Dest, - IN CONST VOID *Src, - IN UINTN len - ) -{ - return RtCompareMem (Dest, Src, len); -} - -BOOLEAN -GrowBuffer( - IN OUT EFI_STATUS *Status, - IN OUT VOID **Buffer, - IN UINTN BufferSize - ) -/*++ - -Routine Description: - - Helper function called as part of the code needed - to allocate the proper sized buffer for various - EFI interfaces. - -Arguments: - - Status - Current status - - Buffer - Current allocated buffer, or NULL - - BufferSize - Current buffer size needed - -Returns: - - TRUE - if the buffer was reallocated and the caller - should try the API again. - ---*/ -{ - BOOLEAN TryAgain; - - // - // If this is an initial request, buffer will be null with a new buffer size - // - - if (!*Buffer && BufferSize) { - *Status = EFI_BUFFER_TOO_SMALL; - } - - // - // If the status code is "buffer too small", resize the buffer - // - - TryAgain = FALSE; - if (*Status == EFI_BUFFER_TOO_SMALL) { - - if (*Buffer) { - FreePool (*Buffer); - } - - *Buffer = AllocatePool (BufferSize); - - if (*Buffer) { - TryAgain = TRUE; - } else { - *Status = EFI_OUT_OF_RESOURCES; - } - } - - // - // If there's an error, free the buffer - // - - if (!TryAgain && EFI_ERROR(*Status) && *Buffer) { - FreePool (*Buffer); - *Buffer = NULL; - } - - return TryAgain; -} - - -EFI_MEMORY_DESCRIPTOR * -LibMemoryMap ( - OUT UINTN *NoEntries, - OUT UINTN *MapKey, - OUT UINTN *DescriptorSize, - OUT UINT32 *DescriptorVersion - ) -{ - EFI_STATUS Status; - EFI_MEMORY_DESCRIPTOR *Buffer; - UINTN BufferSize; - - // - // Initialize for GrowBuffer loop - // - - Status = EFI_SUCCESS; - Buffer = NULL; - BufferSize = sizeof(EFI_MEMORY_DESCRIPTOR); - - // - // Call the real function - // - - while (GrowBuffer (&Status, (VOID **) &Buffer, BufferSize)) { - Status = uefi_call_wrapper(BS->GetMemoryMap, 5, &BufferSize, Buffer, MapKey, DescriptorSize, DescriptorVersion); - } - - // - // Convert buffer size to NoEntries - // - - if (!EFI_ERROR(Status)) { - *NoEntries = BufferSize / *DescriptorSize; - } - - return Buffer; -} - -VOID * -LibGetVariableAndSize ( - IN CHAR16 *Name, - IN EFI_GUID *VendorGuid, - OUT UINTN *VarSize - ) -{ - EFI_STATUS Status; - VOID *Buffer; - UINTN BufferSize; - - // - // Initialize for GrowBuffer loop - // - - Buffer = NULL; - BufferSize = 100; - - // - // Call the real function - // - - while (GrowBuffer (&Status, &Buffer, BufferSize)) { - Status = uefi_call_wrapper( - RT->GetVariable, - 5, - Name, - VendorGuid, - NULL, - &BufferSize, - Buffer - ); - } - if (Buffer) { - *VarSize = BufferSize; - } else { - *VarSize = 0; - } - return Buffer; -} - -VOID * -LibGetVariable ( - IN CHAR16 *Name, - IN EFI_GUID *VendorGuid - ) -{ - UINTN VarSize; - - return LibGetVariableAndSize (Name, VendorGuid, &VarSize); -} - -EFI_STATUS -LibDeleteVariable ( - IN CHAR16 *VarName, - IN EFI_GUID *VarGuid - ) -{ - VOID *VarBuf; - EFI_STATUS Status; - - VarBuf = LibGetVariable(VarName,VarGuid); - - Status = EFI_NOT_FOUND; - - if (VarBuf) { - // - // Delete variable from Storage - // - Status = uefi_call_wrapper( - RT->SetVariable, - 5, - VarName, VarGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE, - 0, NULL - ); - ASSERT (!EFI_ERROR(Status)); - FreePool(VarBuf); - } - - return (Status); -} - -EFI_STATUS -LibSetNVVariable ( - IN CHAR16 *VarName, - IN EFI_GUID *VarGuid, - IN UINTN DataSize, - IN VOID *Data - ) -{ - EFI_STATUS Status; - - Status = uefi_call_wrapper( - RT->SetVariable, - 5, - VarName, VarGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE, - DataSize, Data - ); - ASSERT (!EFI_ERROR(Status)); - return (Status); -} - -EFI_STATUS -LibSetVariable ( - IN CHAR16 *VarName, - IN EFI_GUID *VarGuid, - IN UINTN DataSize, - IN VOID *Data - ) -{ - EFI_STATUS Status; - - Status = uefi_call_wrapper( - RT->SetVariable, - 5, - VarName, VarGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, - DataSize, Data - ); - ASSERT (!EFI_ERROR(Status)); - return (Status); -} - -EFI_STATUS -LibInsertToTailOfBootOrder ( - IN UINT16 BootOption, - IN BOOLEAN OnlyInsertIfEmpty - ) -{ - UINT16 *BootOptionArray; - UINT16 *NewBootOptionArray; - UINTN VarSize; - UINTN Index; - EFI_STATUS Status; - - BootOptionArray = LibGetVariableAndSize (VarBootOrder, &EfiGlobalVariable, &VarSize); - if (VarSize != 0 && OnlyInsertIfEmpty) { - if (BootOptionArray) { - FreePool (BootOptionArray); - } - return EFI_UNSUPPORTED; - } - - VarSize += sizeof(UINT16); - NewBootOptionArray = AllocatePool (VarSize); - - for (Index = 0; Index < ((VarSize/sizeof(UINT16)) - 1); Index++) { - NewBootOptionArray[Index] = BootOptionArray[Index]; - } - // - // Insert in the tail of the array - // - NewBootOptionArray[Index] = BootOption; - - Status = uefi_call_wrapper( - RT->SetVariable, - 5, - VarBootOrder, &EfiGlobalVariable, - EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE, - VarSize, (VOID*) NewBootOptionArray - ); - - if (NewBootOptionArray) { - FreePool (NewBootOptionArray); - } - if (BootOptionArray) { - FreePool (BootOptionArray); - } - return Status; -} - - -BOOLEAN -ValidMBR( - IN MASTER_BOOT_RECORD *Mbr, - IN EFI_BLOCK_IO *BlkIo - ) -{ - UINT32 StartingLBA, EndingLBA; - UINT32 NewEndingLBA; - INTN i, j; - BOOLEAN ValidMbr; - - if (Mbr->Signature != MBR_SIGNATURE) { - // - // The BPB also has this signature, so it can not be used alone. - // - return FALSE; - } - - ValidMbr = FALSE; - for (i=0; iPartition[i].OSIndicator == 0x00 || EXTRACT_UINT32(Mbr->Partition[i].SizeInLBA) == 0 ) { - continue; - } - ValidMbr = TRUE; - StartingLBA = EXTRACT_UINT32(Mbr->Partition[i].StartingLBA); - EndingLBA = StartingLBA + EXTRACT_UINT32(Mbr->Partition[i].SizeInLBA) - 1; - if (EndingLBA > BlkIo->Media->LastBlock) { - // - // Compatability Errata: - // Some systems try to hide drive space with thier INT 13h driver - // This does not hide space from the OS driver. This means the MBR - // that gets created from DOS is smaller than the MBR created from - // a real OS (NT & Win98). This leads to BlkIo->LastBlock being - // wrong on some systems FDISKed by the OS. - // - // - if (BlkIo->Media->LastBlock < MIN_MBR_DEVICE_SIZE) { - // - // If this is a very small device then trust the BlkIo->LastBlock - // - return FALSE; - } - - if (EndingLBA > (BlkIo->Media->LastBlock + MBR_ERRATA_PAD)) { - return FALSE; - } - - } - for (j=i+1; jPartition[j].OSIndicator == 0x00 || EXTRACT_UINT32(Mbr->Partition[j].SizeInLBA) == 0) { - continue; - } - if ( EXTRACT_UINT32(Mbr->Partition[j].StartingLBA) >= StartingLBA && - EXTRACT_UINT32(Mbr->Partition[j].StartingLBA) <= EndingLBA ) { - // - // The Start of this region overlaps with the i'th region - // - return FALSE; - } - NewEndingLBA = EXTRACT_UINT32(Mbr->Partition[j].StartingLBA) + EXTRACT_UINT32(Mbr->Partition[j].SizeInLBA) - 1; - if ( NewEndingLBA >= StartingLBA && NewEndingLBA <= EndingLBA ) { - // - // The End of this region overlaps with the i'th region - // - return FALSE; - } - } - } - // - // Non of the regions overlapped so MBR is O.K. - // - return ValidMbr; -} - - -UINT8 -DecimaltoBCD( - IN UINT8 DecValue - ) -{ - return RtDecimaltoBCD (DecValue); -} - - -UINT8 -BCDtoDecimal( - IN UINT8 BcdValue - ) -{ - return RtBCDtoDecimal (BcdValue); -} - -EFI_STATUS -LibGetSystemConfigurationTable( - IN EFI_GUID *TableGuid, - IN OUT VOID **Table - ) - -{ - UINTN Index; - - for(Index=0;IndexNumberOfTableEntries;Index++) { - if (CompareGuid(TableGuid,&(ST->ConfigurationTable[Index].VendorGuid))==0) { - *Table = ST->ConfigurationTable[Index].VendorTable; - return EFI_SUCCESS; - } - } - return EFI_NOT_FOUND; -} - - -CHAR16 * -LibGetUiString ( - IN EFI_HANDLE Handle, - IN UI_STRING_TYPE StringType, - IN ISO_639_2 *LangCode, - IN BOOLEAN ReturnDevicePathStrOnMismatch - ) -{ - UI_INTERFACE *Ui; - UI_STRING_TYPE Index; - UI_STRING_ENTRY *Array; - EFI_STATUS Status; - - Status = uefi_call_wrapper(BS->HandleProtocol, 3, Handle, &UiProtocol, (VOID *)&Ui); - if (EFI_ERROR(Status)) { - return (ReturnDevicePathStrOnMismatch) ? DevicePathToStr(DevicePathFromHandle(Handle)) : NULL; - } - - // - // Skip the first strings - // - for (Index = UiDeviceString, Array = Ui->Entry; Index < StringType; Index++, Array++) { - while (Array->LangCode) { - Array++; - } - } - - // - // Search for the match - // - while (Array->LangCode) { - if (strcmpa (Array->LangCode, LangCode) == 0) { - return Array->UiString; - } - } - return (ReturnDevicePathStrOnMismatch) ? DevicePathToStr(DevicePathFromHandle(Handle)) : NULL; -} diff --git a/efi/lib/print.c b/efi/lib/print.c deleted file mode 100644 index 35e43c0..0000000 --- a/efi/lib/print.c +++ /dev/null @@ -1,1482 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - print.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" -#include "efistdarg.h" // !!! - -// -// Declare runtime functions -// - -#ifdef RUNTIME_CODE -#ifndef __GNUC__ -#pragma RUNTIME_CODE(DbgPrint) - -// For debugging.. - -/* -#pragma RUNTIME_CODE(_Print) -#pragma RUNTIME_CODE(PFLUSH) -#pragma RUNTIME_CODE(PSETATTR) -#pragma RUNTIME_CODE(PPUTC) -#pragma RUNTIME_CODE(PGETC) -#pragma RUNTIME_CODE(PITEM) -#pragma RUNTIME_CODE(ValueToHex) -#pragma RUNTIME_CODE(ValueToString) -#pragma RUNTIME_CODE(TimeToString) -*/ - -#endif /* !defined(__GNUC__) */ -#endif - -// -// -// - - -#define PRINT_STRING_LEN 200 -#define PRINT_ITEM_BUFFER_LEN 100 - -typedef struct { - BOOLEAN Ascii; - UINTN Index; - union { - CONST CHAR16 *pw; - CONST CHAR8 *pc; - } un; -} POINTER; - -#define pw un.pw -#define pc un.pc - -typedef struct _pitem { - - POINTER Item; - CHAR16 Scratch[PRINT_ITEM_BUFFER_LEN]; - UINTN Width; - UINTN FieldWidth; - UINTN *WidthParse; - CHAR16 Pad; - BOOLEAN PadBefore; - BOOLEAN Comma; - BOOLEAN Long; -} PRINT_ITEM; - - -typedef struct _pstate { - // Input - POINTER fmt; - va_list args; - - // Output - CHAR16 *Buffer; - CHAR16 *End; - CHAR16 *Pos; - UINTN Len; - - UINTN Attr; - UINTN RestoreAttr; - - UINTN AttrNorm; - UINTN AttrHighlight; - UINTN AttrError; - - INTN (EFIAPI *Output)(VOID *context, CHAR16 *str); - INTN (EFIAPI *SetAttr)(VOID *context, UINTN attr); - VOID *Context; - - // Current item being formatted - struct _pitem *Item; -} PRINT_STATE; - -// -// Internal fucntions -// - -STATIC -UINTN -_Print ( - IN PRINT_STATE *ps - ); - -STATIC -UINTN -_IPrint ( - IN UINTN Column, - IN UINTN Row, - IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, - IN CONST CHAR16 *fmt, - IN CONST CHAR8 *fmta, - IN va_list args - ); - -STATIC -INTN EFIAPI -_DbgOut ( - IN VOID *Context, - IN CHAR16 *Buffer - ); - -STATIC -VOID -PFLUSH ( - IN OUT PRINT_STATE *ps - ); - -STATIC -VOID -PPUTC ( - IN OUT PRINT_STATE *ps, - IN CHAR16 c - ); - -STATIC -VOID -PITEM ( - IN OUT PRINT_STATE *ps - ); - -STATIC -CHAR16 -PGETC ( - IN POINTER *p - ); - -STATIC -VOID -PSETATTR ( - IN OUT PRINT_STATE *ps, - IN UINTN Attr - ); - -// -// -// - -INTN EFIAPI -_SPrint ( - IN VOID *Context, - IN CHAR16 *Buffer - ); - -INTN EFIAPI -_PoolPrint ( - IN VOID *Context, - IN CHAR16 *Buffer - ); - -INTN -DbgPrint ( - IN INTN mask, - IN CONST CHAR8 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to the default StandardError console - -Arguments: - - mask - Bit mask of debug string. If a bit is set in the - mask that is also set in EFIDebug the string is - printed; otherwise, the string is not printed - - fmt - Format string - -Returns: - - Length of string printed to the StandardError console - ---*/ -{ - SIMPLE_TEXT_OUTPUT_INTERFACE *DbgOut; - PRINT_STATE ps; - va_list args; - UINTN back; - UINTN attr; - UINTN SavedAttribute; - - - if (!(EFIDebug & mask)) { - return 0; - } - - va_start (args, fmt); - ZeroMem (&ps, sizeof(ps)); - - ps.Output = _DbgOut; - ps.fmt.Ascii = TRUE; - ps.fmt.pc = fmt; - va_copy(ps.args, args); - ps.Attr = EFI_TEXT_ATTR(EFI_LIGHTGRAY, EFI_RED); - - DbgOut = LibRuntimeDebugOut; - - if (!DbgOut) { - DbgOut = ST->StdErr; - } - - if (DbgOut) { - ps.Attr = DbgOut->Mode->Attribute; - ps.Context = DbgOut; - ps.SetAttr = (INTN (EFIAPI *)(VOID *, UINTN)) DbgOut->SetAttribute; - } - - SavedAttribute = ps.Attr; - - back = (ps.Attr >> 4) & 0xf; - ps.AttrNorm = EFI_TEXT_ATTR(EFI_LIGHTGRAY, back); - ps.AttrHighlight = EFI_TEXT_ATTR(EFI_WHITE, back); - ps.AttrError = EFI_TEXT_ATTR(EFI_YELLOW, back); - - attr = ps.AttrNorm; - - if (mask & D_WARN) { - attr = ps.AttrHighlight; - } - - if (mask & D_ERROR) { - attr = ps.AttrError; - } - - if (ps.SetAttr) { - ps.Attr = attr; - uefi_call_wrapper(ps.SetAttr, 2, ps.Context, attr); - } - - _Print (&ps); - - va_end (ps.args); - va_end (args); - - // - // Restore original attributes - // - - if (ps.SetAttr) { - uefi_call_wrapper(ps.SetAttr, 2, ps.Context, SavedAttribute); - } - - return 0; -} - -STATIC -INTN -IsLocalPrint(void *func) -{ - if (func == _DbgOut || func == _SPrint || func == _PoolPrint) - return 1; - return 0; -} - -STATIC -INTN EFIAPI -_DbgOut ( - IN VOID *Context, - IN CHAR16 *Buffer - ) -// Append string worker for DbgPrint -{ - SIMPLE_TEXT_OUTPUT_INTERFACE *DbgOut; - - DbgOut = Context; -// if (!DbgOut && ST && ST->ConOut) { -// DbgOut = ST->ConOut; -// } - - if (DbgOut) { - if (IsLocalPrint(DbgOut->OutputString)) - DbgOut->OutputString(DbgOut, Buffer); - else - uefi_call_wrapper(DbgOut->OutputString, 2, DbgOut, Buffer); - } - - return 0; -} - -INTN EFIAPI -_SPrint ( - IN VOID *Context, - IN CHAR16 *Buffer - ) -// Append string worker for SPrint, PoolPrint and CatPrint -{ - UINTN len; - POOL_PRINT *spc; - - spc = Context; - len = StrLen(Buffer); - - // - // Is the string is over the max truncate it - // - - if (spc->len + len > spc->maxlen) { - len = spc->maxlen - spc->len; - } - - // - // Append the new text - // - - CopyMem (spc->str + spc->len, Buffer, len * sizeof(CHAR16)); - spc->len += len; - - // - // Null terminate it - // - - if (spc->len < spc->maxlen) { - spc->str[spc->len] = 0; - } else if (spc->maxlen) { - spc->str[spc->maxlen] = 0; - } - - return 0; -} - - -INTN EFIAPI -_PoolPrint ( - IN VOID *Context, - IN CHAR16 *Buffer - ) -// Append string worker for PoolPrint and CatPrint -{ - UINTN newlen; - POOL_PRINT *spc; - - spc = Context; - newlen = spc->len + StrLen(Buffer) + 1; - - // - // Is the string is over the max, grow the buffer - // - - if (newlen > spc->maxlen) { - - // - // Grow the pool buffer - // - - newlen += PRINT_STRING_LEN; - spc->maxlen = newlen; - spc->str = ReallocatePool ( - spc->str, - spc->len * sizeof(CHAR16), - spc->maxlen * sizeof(CHAR16) - ); - - if (!spc->str) { - spc->len = 0; - spc->maxlen = 0; - } - } - - // - // Append the new text - // - - return _SPrint (Context, Buffer); -} - - - -VOID -_PoolCatPrint ( - IN CONST CHAR16 *fmt, - IN va_list args, - IN OUT POOL_PRINT *spc, - IN INTN (EFIAPI *Output)(VOID *context, CHAR16 *str) - ) -// Dispath function for SPrint, PoolPrint, and CatPrint -{ - PRINT_STATE ps; - - ZeroMem (&ps, sizeof(ps)); - ps.Output = Output; - ps.Context = spc; - ps.fmt.pw = fmt; - va_copy(ps.args, args); - _Print (&ps); - va_end(ps.args); -} - - - -UINTN -VSPrint ( - OUT CHAR16 *Str, - IN UINTN StrSize, - IN CONST CHAR16 *fmt, - va_list args - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to a buffer using a va_list - -Arguments: - - Str - Output buffer to print the formatted string into - - StrSize - Size of Str. String is truncated to this size. - A size of 0 means there is no limit - - fmt - The format string - - args - va_list - - -Returns: - - String length returned in buffer - ---*/ -{ - POOL_PRINT spc; - - spc.str = Str; - spc.maxlen = StrSize / sizeof(CHAR16) - 1; - spc.len = 0; - - _PoolCatPrint (fmt, args, &spc, _SPrint); - - return spc.len; -} - -UINTN -SPrint ( - OUT CHAR16 *Str, - IN UINTN StrSize, - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to a buffer - -Arguments: - - Str - Output buffer to print the formatted string into - - StrSize - Size of Str. String is truncated to this size. - A size of 0 means there is no limit - - fmt - The format string - -Returns: - - String length returned in buffer - ---*/ -{ - va_list args; - UINTN len; - - va_start (args, fmt); - len = VSPrint(Str, StrSize, fmt, args); - va_end (args); - - return len; -} - -CHAR16 * -VPoolPrint ( - IN CONST CHAR16 *fmt, - va_list args - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to allocated pool using va_list argument. - The caller must free the resulting buffer. - -Arguments: - - fmt - The format string - args - The arguments in va_list form - -Returns: - - Allocated buffer with the formatted string printed in it. - The caller must free the allocated buffer. The buffer - allocation is not packed. - ---*/ -{ - POOL_PRINT spc; - ZeroMem (&spc, sizeof(spc)); - _PoolCatPrint (fmt, args, &spc, _PoolPrint); - return spc.str; -} - -CHAR16 * -PoolPrint ( - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to allocated pool. The caller - must free the resulting buffer. - -Arguments: - - fmt - The format string - -Returns: - - Allocated buffer with the formatted string printed in it. - The caller must free the allocated buffer. The buffer - allocation is not packed. - ---*/ -{ - va_list args; - CHAR16 *pool; - va_start (args, fmt); - pool = VPoolPrint(fmt, args); - va_end (args); - return pool; -} - -CHAR16 * -CatPrint ( - IN OUT POOL_PRINT *Str, - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Concatenates a formatted unicode string to allocated pool. - The caller must free the resulting buffer. - -Arguments: - - Str - Tracks the allocated pool, size in use, and - amount of pool allocated. - - fmt - The format string - -Returns: - - Allocated buffer with the formatted string printed in it. - The caller must free the allocated buffer. The buffer - allocation is not packed. - ---*/ -{ - va_list args; - - va_start (args, fmt); - _PoolCatPrint (fmt, args, Str, _PoolPrint); - va_end (args); - return Str->str; -} - - - -UINTN -Print ( - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to the default console - -Arguments: - - fmt - Format string - -Returns: - - Length of string printed to the console - ---*/ -{ - va_list args; - UINTN back; - - va_start (args, fmt); - back = _IPrint ((UINTN) -1, (UINTN) -1, ST->ConOut, fmt, NULL, args); - va_end (args); - return back; -} - -UINTN -VPrint ( - IN CONST CHAR16 *fmt, - va_list args - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to the default console using a va_list - -Arguments: - - fmt - Format string - args - va_list -Returns: - - Length of string printed to the console - ---*/ -{ - return _IPrint ((UINTN) -1, (UINTN) -1, ST->ConOut, fmt, NULL, args); -} - - -UINTN -PrintAt ( - IN UINTN Column, - IN UINTN Row, - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to the default console, at - the supplied cursor position - -Arguments: - - Column, Row - The cursor position to print the string at - - fmt - Format string - -Returns: - - Length of string printed to the console - ---*/ -{ - va_list args; - UINTN back; - - va_start (args, fmt); - back = _IPrint (Column, Row, ST->ConOut, fmt, NULL, args); - va_end (args); - return back; -} - - -UINTN -IPrint ( - IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to the specified console - -Arguments: - - Out - The console to print the string too - - fmt - Format string - -Returns: - - Length of string printed to the console - ---*/ -{ - va_list args; - UINTN back; - - va_start (args, fmt); - back = _IPrint ((UINTN) -1, (UINTN) -1, Out, fmt, NULL, args); - va_end (args); - return back; -} - - -UINTN -IPrintAt ( - IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, - IN UINTN Column, - IN UINTN Row, - IN CONST CHAR16 *fmt, - ... - ) -/*++ - -Routine Description: - - Prints a formatted unicode string to the specified console, at - the supplied cursor position - -Arguments: - - Out - The console to print the string to - - Column, Row - The cursor position to print the string at - - fmt - Format string - -Returns: - - Length of string printed to the console - ---*/ -{ - va_list args; - UINTN back; - - va_start (args, fmt); - back = _IPrint (Column, Row, Out, fmt, NULL, args); - va_end (args); - return back; -} - - -UINTN -_IPrint ( - IN UINTN Column, - IN UINTN Row, - IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, - IN CONST CHAR16 *fmt, - IN CONST CHAR8 *fmta, - IN va_list args - ) -// Display string worker for: Print, PrintAt, IPrint, IPrintAt -{ - PRINT_STATE ps; - UINTN back; - - ZeroMem (&ps, sizeof(ps)); - ps.Context = Out; - ps.Output = (INTN (EFIAPI *)(VOID *, CHAR16 *)) Out->OutputString; - ps.SetAttr = (INTN (EFIAPI *)(VOID *, UINTN)) Out->SetAttribute; - ps.Attr = Out->Mode->Attribute; - - back = (ps.Attr >> 4) & 0xF; - ps.AttrNorm = EFI_TEXT_ATTR(EFI_LIGHTGRAY, back); - ps.AttrHighlight = EFI_TEXT_ATTR(EFI_WHITE, back); - ps.AttrError = EFI_TEXT_ATTR(EFI_YELLOW, back); - - if (fmt) { - ps.fmt.pw = fmt; - } else { - ps.fmt.Ascii = TRUE; - ps.fmt.pc = fmta; - } - - va_copy(ps.args, args); - - if (Column != (UINTN) -1) { - uefi_call_wrapper(Out->SetCursorPosition, 3, Out, Column, Row); - } - - back = _Print (&ps); - va_end(ps.args); - return back; -} - - -UINTN -APrint ( - IN CONST CHAR8 *fmt, - ... - ) -/*++ - -Routine Description: - - For those whom really can't deal with unicode, a print - function that takes an ascii format string - -Arguments: - - fmt - ascii format string - -Returns: - - Length of string printed to the console - ---*/ - -{ - va_list args; - UINTN back; - - va_start (args, fmt); - back = _IPrint ((UINTN) -1, (UINTN) -1, ST->ConOut, NULL, fmt, args); - va_end (args); - return back; -} - - -STATIC -VOID -PFLUSH ( - IN OUT PRINT_STATE *ps - ) -{ - *ps->Pos = 0; - if (IsLocalPrint(ps->Output)) - ps->Output(ps->Context, ps->Buffer); - else - uefi_call_wrapper(ps->Output, 2, ps->Context, ps->Buffer); - ps->Pos = ps->Buffer; -} - -STATIC -VOID -PSETATTR ( - IN OUT PRINT_STATE *ps, - IN UINTN Attr - ) -{ - PFLUSH (ps); - - ps->RestoreAttr = ps->Attr; - if (ps->SetAttr) { - uefi_call_wrapper(ps->SetAttr, 2, ps->Context, Attr); - } - - ps->Attr = Attr; -} - -STATIC -VOID -PPUTC ( - IN OUT PRINT_STATE *ps, - IN CHAR16 c - ) -{ - // if this is a newline, add a carraige return - if (c == '\n') { - PPUTC (ps, '\r'); - } - - *ps->Pos = c; - ps->Pos += 1; - ps->Len += 1; - - // if at the end of the buffer, flush it - if (ps->Pos >= ps->End) { - PFLUSH(ps); - } -} - - -STATIC -CHAR16 -PGETC ( - IN POINTER *p - ) -{ - CHAR16 c; - - c = p->Ascii ? p->pc[p->Index] : p->pw[p->Index]; - p->Index += 1; - - return c; -} - - -STATIC -VOID -PITEM ( - IN OUT PRINT_STATE *ps - ) -{ - UINTN Len, i; - PRINT_ITEM *Item; - CHAR16 c; - - // Get the length of the item - Item = ps->Item; - Item->Item.Index = 0; - while (Item->Item.Index < Item->FieldWidth) { - c = PGETC(&Item->Item); - if (!c) { - Item->Item.Index -= 1; - break; - } - } - Len = Item->Item.Index; - - // if there is no item field width, use the items width - if (Item->FieldWidth == (UINTN) -1) { - Item->FieldWidth = Len; - } - - // if item is larger then width, update width - if (Len > Item->Width) { - Item->Width = Len; - } - - - // if pad field before, add pad char - if (Item->PadBefore) { - for (i=Item->Width; i < Item->FieldWidth; i+=1) { - PPUTC (ps, ' '); - } - } - - // pad item - for (i=Len; i < Item->Width; i++) { - PPUTC (ps, Item->Pad); - } - - // add the item - Item->Item.Index=0; - while (Item->Item.Index < Len) { - PPUTC (ps, PGETC(&Item->Item)); - } - - // If pad at the end, add pad char - if (!Item->PadBefore) { - for (i=Item->Width; i < Item->FieldWidth; i+=1) { - PPUTC (ps, ' '); - } - } -} - - -STATIC -UINTN -_Print ( - IN PRINT_STATE *ps - ) -/*++ - -Routine Description: - - %w.lF - w = width - l = field width - F = format of arg - - Args F: - 0 - pad with zeros - - - justify on left (default is on right) - , - add comma's to field - * - width provided on stack - n - Set output attribute to normal (for this field only) - h - Set output attribute to highlight (for this field only) - e - Set output attribute to error (for this field only) - l - Value is 64 bits - - a - ascii string - s - unicode string - X - fixed 8 byte value in hex - x - hex value - d - value as signed decimal - u - value as unsigned decimal - f - value as floating point - c - Unicode char - t - EFI time structure - g - Pointer to GUID - r - EFI status code (result code) - D - pointer to Device Path with normal ending. - - N - Set output attribute to normal - H - Set output attribute to highlight - E - Set output attribute to error - % - Print a % - -Arguments: - - SystemTable - The system table - -Returns: - - Number of charactors written - ---*/ -{ - CHAR16 c; - UINTN Attr; - PRINT_ITEM Item; - CHAR16 Buffer[PRINT_STRING_LEN]; - - ps->Len = 0; - ps->Buffer = Buffer; - ps->Pos = Buffer; - ps->End = Buffer + PRINT_STRING_LEN - 1; - ps->Item = &Item; - - ps->fmt.Index = 0; - while ((c = PGETC(&ps->fmt))) { - - if (c != '%') { - PPUTC ( ps, c ); - continue; - } - - // setup for new item - Item.FieldWidth = (UINTN) -1; - Item.Width = 0; - Item.WidthParse = &Item.Width; - Item.Pad = ' '; - Item.PadBefore = TRUE; - Item.Comma = FALSE; - Item.Long = FALSE; - Item.Item.Ascii = FALSE; - Item.Item.pw = NULL; - ps->RestoreAttr = 0; - Attr = 0; - - while ((c = PGETC(&ps->fmt))) { - - switch (c) { - - case '%': - // - // %% -> % - // - Item.Scratch[0] = '%'; - Item.Scratch[1] = 0; - Item.Item.pw = Item.Scratch; - break; - - case '0': - Item.Pad = '0'; - break; - - case '-': - Item.PadBefore = FALSE; - break; - - case ',': - Item.Comma = TRUE; - break; - - case '.': - Item.WidthParse = &Item.FieldWidth; - break; - - case '*': - *Item.WidthParse = va_arg(ps->args, UINTN); - break; - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - *Item.WidthParse = 0; - do { - *Item.WidthParse = *Item.WidthParse * 10 + c - '0'; - c = PGETC(&ps->fmt); - } while (c >= '0' && c <= '9') ; - ps->fmt.Index -= 1; - break; - - case 'a': - Item.Item.pc = va_arg(ps->args, CHAR8 *); - Item.Item.Ascii = TRUE; - if (!Item.Item.pc) { - Item.Item.pc = (CHAR8 *)"(null)"; - } - break; - - case 's': - Item.Item.pw = va_arg(ps->args, CHAR16 *); - if (!Item.Item.pw) { - Item.Item.pw = L"(null)"; - } - break; - - case 'c': - Item.Scratch[0] = (CHAR16) va_arg(ps->args, UINTN); - Item.Scratch[1] = 0; - Item.Item.pw = Item.Scratch; - break; - - case 'l': - Item.Long = TRUE; - break; - - case 'X': - Item.Width = Item.Long ? 16 : 8; - Item.Pad = '0'; -#if __GNUC__ >= 7 - __attribute__ ((fallthrough)); -#endif - case 'x': - ValueToHex ( - Item.Scratch, - Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32) - ); - Item.Item.pw = Item.Scratch; - - break; - - - case 'g': - GuidToString (Item.Scratch, va_arg(ps->args, EFI_GUID *)); - Item.Item.pw = Item.Scratch; - break; - - case 'u': - ValueToString ( - Item.Scratch, - Item.Comma, - Item.Long ? va_arg(ps->args, UINT64) : va_arg(ps->args, UINT32) - ); - Item.Item.pw = Item.Scratch; - break; - - case 'd': - ValueToString ( - Item.Scratch, - Item.Comma, - Item.Long ? va_arg(ps->args, INT64) : va_arg(ps->args, INT32) - ); - Item.Item.pw = Item.Scratch; - break; - - case 'D': - { - EFI_DEVICE_PATH *dp = va_arg(ps->args, EFI_DEVICE_PATH *); - CHAR16 *dpstr = DevicePathToStr(dp); - StrnCpy(Item.Scratch, dpstr, PRINT_ITEM_BUFFER_LEN); - Item.Scratch[PRINT_ITEM_BUFFER_LEN-1] = L'\0'; - FreePool(dpstr); - - Item.Item.pw = Item.Scratch; - break; - } - - case 'f': - FloatToString ( - Item.Scratch, - Item.Comma, - va_arg(ps->args, double) - ); - Item.Item.pw = Item.Scratch; - break; - - case 't': - TimeToString (Item.Scratch, va_arg(ps->args, EFI_TIME *)); - Item.Item.pw = Item.Scratch; - break; - - case 'r': - StatusToString (Item.Scratch, va_arg(ps->args, EFI_STATUS)); - Item.Item.pw = Item.Scratch; - break; - - case 'n': - PSETATTR(ps, ps->AttrNorm); - break; - - case 'h': - PSETATTR(ps, ps->AttrHighlight); - break; - - case 'e': - PSETATTR(ps, ps->AttrError); - break; - - case 'N': - Attr = ps->AttrNorm; - break; - - case 'H': - Attr = ps->AttrHighlight; - break; - - case 'E': - Attr = ps->AttrError; - break; - - default: - Item.Scratch[0] = '?'; - Item.Scratch[1] = 0; - Item.Item.pw = Item.Scratch; - break; - } - - // if we have an Item - if (Item.Item.pw) { - PITEM (ps); - break; - } - - // if we have an Attr set - if (Attr) { - PSETATTR(ps, Attr); - ps->RestoreAttr = 0; - break; - } - } - - if (ps->RestoreAttr) { - PSETATTR(ps, ps->RestoreAttr); - } - } - - // Flush buffer - PFLUSH (ps); - return ps->Len; -} - -STATIC CHAR8 Hex[] = {'0','1','2','3','4','5','6','7', - '8','9','A','B','C','D','E','F'}; - -VOID -ValueToHex ( - IN CHAR16 *Buffer, - IN UINT64 v - ) -{ - CHAR8 str[30], *p1; - CHAR16 *p2; - - if (!v) { - Buffer[0] = '0'; - Buffer[1] = 0; - return ; - } - - p1 = str; - p2 = Buffer; - - while (v) { - // Without the cast, the MSVC compiler may insert a reference to __allmull - *(p1++) = Hex[(UINTN)(v & 0xf)]; - v = RShiftU64 (v, 4); - } - - while (p1 != str) { - *(p2++) = *(--p1); - } - *p2 = 0; -} - - -VOID -ValueToString ( - IN CHAR16 *Buffer, - IN BOOLEAN Comma, - IN INT64 v - ) -{ - STATIC CHAR8 ca[] = { 3, 1, 2 }; - CHAR8 str[40], *p1; - CHAR16 *p2; - UINTN c, r; - - if (!v) { - Buffer[0] = '0'; - Buffer[1] = 0; - return ; - } - - p1 = str; - p2 = Buffer; - - if (v < 0) { - *(p2++) = '-'; - v = -v; - } - - while (v) { - v = (INT64)DivU64x32 ((UINT64)v, 10, &r); - *(p1++) = (CHAR8)r + '0'; - } - - c = (Comma ? ca[(p1 - str) % 3] : 999) + 1; - while (p1 != str) { - - c -= 1; - if (!c) { - *(p2++) = ','; - c = 3; - } - - *(p2++) = *(--p1); - } - *p2 = 0; -} - -VOID -FloatToString ( - IN CHAR16 *Buffer, - IN BOOLEAN Comma, - IN double v - ) -{ - /* - * Integer part. - */ - INTN i = (INTN)v; - ValueToString(Buffer, Comma, i); - - - /* - * Decimal point. - */ - UINTN x = StrLen(Buffer); - Buffer[x] = L'.'; - x++; - - - /* - * Keep fractional part. - */ - float f = (float)(v - i); - if (f < 0) f = -f; - - - /* - * Leading fractional zeroes. - */ - f *= 10.0; - while ( (f != 0) - && ((INTN)f == 0)) - { - Buffer[x] = L'0'; - x++; - f *= 10.0; - } - - - /* - * Fractional digits. - */ - while ((float)(INTN)f != f) - { - f *= 10; - } - ValueToString(Buffer + x, FALSE, (INTN)f); - return; -} - -VOID -TimeToString ( - OUT CHAR16 *Buffer, - IN EFI_TIME *Time - ) -{ - UINTN Hour, Year; - CHAR16 AmPm; - - AmPm = 'a'; - Hour = Time->Hour; - if (Time->Hour == 0) { - Hour = 12; - } else if (Time->Hour >= 12) { - AmPm = 'p'; - if (Time->Hour >= 13) { - Hour -= 12; - } - } - - Year = Time->Year % 100; - - // bugbug: for now just print it any old way - SPrint (Buffer, 0, L"%02d/%02d/%02d %02d:%02d%c", - Time->Month, - Time->Day, - Year, - Hour, - Time->Minute, - AmPm - ); -} - - - - -VOID -DumpHex ( - IN UINTN Indent, - IN UINTN Offset, - IN UINTN DataSize, - IN VOID *UserData - ) -{ - CHAR8 *Data, Val[50], Str[20], c; - UINTN Size, Index; - - UINTN ScreenCount; - UINTN TempColumn; - UINTN ScreenSize; - CHAR16 ReturnStr[1]; - - - uefi_call_wrapper(ST->ConOut->QueryMode, 4, ST->ConOut, ST->ConOut->Mode->Mode, &TempColumn, &ScreenSize); - ScreenCount = 0; - ScreenSize -= 2; - - Data = UserData; - while (DataSize) { - Size = 16; - if (Size > DataSize) { - Size = DataSize; - } - - for (Index=0; Index < Size; Index += 1) { - c = Data[Index]; - Val[Index*3+0] = Hex[c>>4]; - Val[Index*3+1] = Hex[c&0xF]; - Val[Index*3+2] = (Index == 7)?'-':' '; - Str[Index] = (c < ' ' || c > 'z') ? '.' : c; - } - - Val[Index*3] = 0; - Str[Index] = 0; - Print (L"%*a%X: %-.48a *%a*\n", Indent, "", Offset, Val, Str); - - Data += Size; - Offset += Size; - DataSize -= Size; - - ScreenCount++; - if (ScreenCount >= ScreenSize && ScreenSize != 0) { - // - // If ScreenSize == 0 we have the console redirected so don't - // block updates - // - ScreenCount = 0; - Print (L"Press Enter to continue :"); - Input (L"", ReturnStr, sizeof(ReturnStr)/sizeof(CHAR16)); - Print (L"\n"); - } - - } -} diff --git a/efi/lib/runtime/efirtlib.c b/efi/lib/runtime/efirtlib.c deleted file mode 100644 index f782e4c..0000000 --- a/efi/lib/runtime/efirtlib.c +++ /dev/null @@ -1,145 +0,0 @@ -/*++ - -Copyright (c) 1999 Intel Corporation - -Module Name: - - EfiRtLib.h - -Abstract: - - EFI Runtime library functions - - - -Revision History - ---*/ - -#include "efi.h" -#include "efilib.h" -#include "efirtlib.h" - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtZeroMem) -#endif -VOID -RUNTIMEFUNCTION -RtZeroMem ( - IN VOID *Buffer, - IN UINTN Size - ) -{ - INT8 *pt; - - pt = Buffer; - while (Size--) { - *(pt++) = 0; - } -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtSetMem) -#endif -VOID -RUNTIMEFUNCTION -RtSetMem ( - IN VOID *Buffer, - IN UINTN Size, - IN UINT8 Value - ) -{ - INT8 *pt; - - pt = Buffer; - while (Size--) { - *(pt++) = Value; - } -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtCopyMem) -#endif -VOID -RUNTIMEFUNCTION -RtCopyMem ( - IN VOID *Dest, - IN CONST VOID *Src, - IN UINTN len - ) -{ - CHAR8 *d; - CONST CHAR8 *s = Src; - d = Dest; - while (len--) { - *(d++) = *(s++); - } -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtCompareMem) -#endif -INTN -RUNTIMEFUNCTION -RtCompareMem ( - IN CONST VOID *Dest, - IN CONST VOID *Src, - IN UINTN len - ) -{ - CONST CHAR8 *d = Dest, *s = Src; - while (len--) { - if (*d != *s) { - return *d - *s; - } - - d += 1; - s += 1; - } - - return 0; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtCompareGuid) -#endif -INTN -RUNTIMEFUNCTION -RtCompareGuid ( - IN EFI_GUID *Guid1, - IN EFI_GUID *Guid2 - ) -/*++ - -Routine Description: - - Compares to GUIDs - -Arguments: - - Guid1 - guid to compare - Guid2 - guid to compare - -Returns: - = 0 if Guid1 == Guid2 - ---*/ -{ - INT32 *g1, *g2, r; - - // - // Compare 32 bits at a time - // - - g1 = (INT32 *) Guid1; - g2 = (INT32 *) Guid2; - - r = g1[0] - g2[0]; - r |= g1[1] - g2[1]; - r |= g1[2] - g2[2]; - r |= g1[3] - g2[3]; - - return r; -} - - diff --git a/efi/lib/runtime/rtdata.c b/efi/lib/runtime/rtdata.c deleted file mode 100644 index 3efcbf3..0000000 --- a/efi/lib/runtime/rtdata.c +++ /dev/null @@ -1,65 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - data.c - -Abstract: - - EFI library global data - - - -Revision History - ---*/ - -#include "lib.h" - - -// -// These globals are runtime globals -// -// N.B. The Microsoft C compiler will only put the data in the -// right data section if it is explicitly initialized.. -// - -#ifndef __GNUC__ -#pragma BEGIN_RUNTIME_DATA() -#endif - -// -// RT - pointer to the runtime table -// - -EFI_RUNTIME_SERVICES *RT; - -// -// LibStandalone - TRUE if lib is linked in as part of the firmware. -// N.B. The EFI fw sets this value directly -// - -BOOLEAN LibFwInstance; - -// -// EFIDebug - Debug mask -// - -UINTN EFIDebug = EFI_DBUG_MASK; - -// -// LibRuntimeDebugOut - Runtime Debug Output device -// - -SIMPLE_TEXT_OUTPUT_INTERFACE *LibRuntimeDebugOut; - -// -// LibRuntimeRaiseTPL, LibRuntimeRestoreTPL - pointers to Runtime functions from the -// Boot Services Table -// - -EFI_RAISE_TPL LibRuntimeRaiseTPL = NULL; -EFI_RESTORE_TPL LibRuntimeRestoreTPL = NULL; - diff --git a/efi/lib/runtime/rtlock.c b/efi/lib/runtime/rtlock.c deleted file mode 100644 index 2eafdca..0000000 --- a/efi/lib/runtime/rtlock.c +++ /dev/null @@ -1,102 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - lock.c - -Abstract: - - Implements FLOCK - - - -Revision History - ---*/ - - -#include "lib.h" - - - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtAcquireLock) -#endif -VOID -RtAcquireLock ( - IN FLOCK *Lock - ) -/*++ - -Routine Description: - - Raising to the task priority level of the mutual exclusion - lock, and then acquires ownership of the lock. - -Arguments: - - Lock - The lock to acquire - -Returns: - - Lock owned - ---*/ -{ - if (BS) { - if (BS->RaiseTPL != NULL) { - Lock->OwnerTpl = uefi_call_wrapper(BS->RaiseTPL, 1, Lock->Tpl); - } - } - else { - if (LibRuntimeRaiseTPL != NULL) { - Lock->OwnerTpl = LibRuntimeRaiseTPL(Lock->Tpl); - } - } - Lock->Lock += 1; - ASSERT (Lock->Lock == 1); -} - - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtAcquireLock) -#endif -VOID -RtReleaseLock ( - IN FLOCK *Lock - ) -/*++ - -Routine Description: - - Releases ownership of the mutual exclusion lock, and - restores the previous task priority level. - -Arguments: - - Lock - The lock to release - -Returns: - - Lock unowned - ---*/ -{ - EFI_TPL Tpl; - - Tpl = Lock->OwnerTpl; - ASSERT(Lock->Lock == 1); - Lock->Lock -= 1; - if (BS) { - if (BS->RestoreTPL != NULL) { - uefi_call_wrapper(BS->RestoreTPL, 1, Tpl); - } - } - else { - if (LibRuntimeRestoreTPL != NULL) { - LibRuntimeRestoreTPL(Tpl); - } - } -} diff --git a/efi/lib/runtime/rtstr.c b/efi/lib/runtime/rtstr.c deleted file mode 100644 index 129c9f2..0000000 --- a/efi/lib/runtime/rtstr.c +++ /dev/null @@ -1,231 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - str.c - -Abstract: - - String runtime functions - - -Revision History - ---*/ - -#include "lib.h" - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtAcquireLock) -#endif -INTN -RUNTIMEFUNCTION -RtStrCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2 - ) -// compare strings -{ - while (*s1) { - if (*s1 != *s2) { - break; - } - - s1 += 1; - s2 += 1; - } - - return *s1 - *s2; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrCpy) -#endif -VOID -RUNTIMEFUNCTION -RtStrCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ) -// copy strings -{ - while (*Src) { - *(Dest++) = *(Src++); - } - *Dest = 0; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrnCpy) -#endif -VOID -RUNTIMEFUNCTION -RtStrnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ) -// copy strings -{ - UINTN Size = RtStrnLen(Src, Len); - if (Size != Len) - RtSetMem(Dest + Len, '\0', (UINT8)((Len - Size) * sizeof(CHAR16))); - RtCopyMem(Dest, Src, Size * sizeof(CHAR16)); -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrCpy) -#endif -CHAR16 * -RUNTIMEFUNCTION -RtStpCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ) -// copy strings -{ - while (*Src) { - *(Dest++) = *(Src++); - } - *Dest = 0; - return Dest; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStpnCpy) -#endif -CHAR16 * -RUNTIMEFUNCTION -RtStpnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ) -// copy strings -{ - UINTN Size = RtStrnLen(Src, Len); - if (Size != Len) - RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0'); - RtCopyMem(Dest, Src, Size * sizeof(CHAR16)); - return Dest + Size; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrCat) -#endif -VOID -RUNTIMEFUNCTION -RtStrCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ) -{ - RtStrCpy(Dest+StrLen(Dest), Src); -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrnCat) -#endif -VOID -RUNTIMEFUNCTION -RtStrnCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ) -{ - UINTN DestSize, Size; - - DestSize = StrLen(Dest); - Size = RtStrnLen(Src, Len); - RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16)); - Dest[DestSize + Size] = '\0'; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrLen) -#endif -UINTN -RUNTIMEFUNCTION -RtStrLen ( - IN CONST CHAR16 *s1 - ) -// string length -{ - UINTN len; - - for (len=0; *s1; s1+=1, len+=1) ; - return len; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrnLen) -#endif -UINTN -RUNTIMEFUNCTION -RtStrnLen ( - IN CONST CHAR16 *s1, - IN UINTN Len - ) -// copy strings -{ - UINTN i; - for (i = 0; *s1 && i < Len; i++) - s1++; - return i; -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtStrSize) -#endif -UINTN -RUNTIMEFUNCTION -RtStrSize ( - IN CONST CHAR16 *s1 - ) -// string size -{ - UINTN len; - - for (len=0; *s1; s1+=1, len+=1) ; - return (len + 1) * sizeof(CHAR16); -} - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtBCDtoDecimal) -#endif -UINT8 -RUNTIMEFUNCTION -RtBCDtoDecimal( - IN UINT8 BcdValue - ) -{ - UINTN High, Low; - - High = BcdValue >> 4; - Low = BcdValue - (High << 4); - - return ((UINT8)(Low + (High * 10))); -} - - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtDecimaltoBCD) -#endif -UINT8 -RUNTIMEFUNCTION -RtDecimaltoBCD ( - IN UINT8 DecValue - ) -{ - UINTN High, Low; - - High = DecValue / 10; - Low = DecValue - (High * 10); - - return ((UINT8)(Low + (High << 4))); -} - - diff --git a/efi/lib/runtime/vm.c b/efi/lib/runtime/vm.c deleted file mode 100644 index 26e0c8e..0000000 --- a/efi/lib/runtime/vm.c +++ /dev/null @@ -1,105 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - vm.c - -Abstract: - - EFI Hell to remap runtime address into the new virual address space - that was registered by the OS for RT calls. - - So the code image needs to be relocated. All pointers need to be - manually fixed up since the address map changes. - - GOOD LUCK NOT HAVING BUGS IN YOUR CODE! PLEASE TEST A LOT. MAKE SURE - EXIT BOOTSERVICES OVER WRITES ALL BOOTSERVICE MEMORY & DATA SPACES WHEN - YOU TEST. - -Revision History - ---*/ - -#include "lib.h" - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtLibEnableVirtualMappings) -#endif -VOID -RUNTIMEFUNCTION -RtLibEnableVirtualMappings ( - VOID - ) -{ - EFI_CONVERT_POINTER ConvertPointer; - - // - // If this copy of the lib is linked into the firmware, then - // do not update the pointers yet. - // - - if (!LibFwInstance) { - - // - // Different components are updating to the new virtual - // mappings at differnt times. The only function that - // is safe to call at this notification is ConvertAddress - // - - ConvertPointer = RT->ConvertPointer; - - // - // Fix any pointers that the lib created, that may be needed - // during runtime. - // - - ConvertPointer (EFI_INTERNAL_PTR, (VOID **)&RT); - ConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&LibRuntimeDebugOut); - - ConvertPointer (EFI_INTERNAL_PTR, (VOID **)&LibRuntimeRaiseTPL); - ConvertPointer (EFI_INTERNAL_PTR, (VOID **)&LibRuntimeRestoreTPL); - - // that was it :^) - } -} - - -#ifndef __GNUC__ -#pragma RUNTIME_CODE(RtConvertList) -#endif -VOID -RUNTIMEFUNCTION -RtConvertList ( - IN UINTN DebugDisposition, - IN OUT LIST_ENTRY *ListHead - ) -{ - LIST_ENTRY *Link; - LIST_ENTRY *NextLink; - EFI_CONVERT_POINTER ConvertPointer; - - ConvertPointer = RT->ConvertPointer; - - // - // Convert all the Flink & Blink pointers in the list - // - - Link = ListHead; - do { - NextLink = Link->Flink; - - ConvertPointer ( - Link->Flink == ListHead ? DebugDisposition : 0, - (VOID **)&Link->Flink - ); - - ConvertPointer ( - Link->Blink == ListHead ? DebugDisposition : 0, - (VOID **)&Link->Blink - ); - - Link = NextLink; - } while (Link != ListHead); -} diff --git a/efi/lib/smbios.c b/efi/lib/smbios.c deleted file mode 100644 index d349fb6..0000000 --- a/efi/lib/smbios.c +++ /dev/null @@ -1,135 +0,0 @@ -/*++ - -Copyright (c) 2000 Intel Corporation - -Module Name: - - Smbios.c - -Abstract: - - Lib fucntions for SMBIOS. Used to get system serial number and GUID - -Revision History - ---*/ - -#include "lib.h" - -/* - * We convert 32 bit values to pointers. In 64 bit mode the compiler will issue a - * warning stating that the value is too small for the pointer: - * "warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]" - * we can safely ignore them here. - */ -#ifdef __GNUC__ -#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" -#endif - -EFI_STATUS -LibGetSmbiosSystemGuidAndSerialNumber ( - IN EFI_GUID *SystemGuid, - OUT CHAR8 **SystemSerialNumber - ) -{ - EFI_STATUS Status; - SMBIOS_STRUCTURE_TABLE *SmbiosTable; - SMBIOS_STRUCTURE_POINTER Smbios; - SMBIOS_STRUCTURE_POINTER SmbiosEnd; - UINT16 Index; - - Status = LibGetSystemConfigurationTable(&SMBIOSTableGuid, (VOID**)&SmbiosTable); - if (EFI_ERROR(Status)) { - return EFI_NOT_FOUND; - } - - Smbios.Hdr = (SMBIOS_HEADER *)SmbiosTable->TableAddress; - SmbiosEnd.Raw = (UINT8 *)(SmbiosTable->TableAddress + SmbiosTable->TableLength); - for (Index = 0; Index < SmbiosTable->TableLength ; Index++) { - if (Smbios.Hdr->Type == 1) { - if (Smbios.Hdr->Length < 0x19) { - // - // Older version did not support Guid and Serial number - // - continue; - } - - // - // SMBIOS tables are byte packed so we need to do a byte copy to - // prevend alignment faults on IA-64. - - CopyMem (SystemGuid, &Smbios.Type1->Uuid, sizeof(EFI_GUID)); - *SystemSerialNumber = LibGetSmbiosString(&Smbios, Smbios.Type1->SerialNumber); - return EFI_SUCCESS; - } - - // - // Make Smbios point to the next record - // - LibGetSmbiosString (&Smbios, -1); - - if (Smbios.Raw >= SmbiosEnd.Raw) { - // - // SMBIOS 2.1 incorrectly stated the length of SmbiosTable as 0x1e. - // given this we must double check against the lenght of - /// the structure. My home PC has this bug.ruthard - // - return EFI_SUCCESS; - } - } - - return EFI_SUCCESS; -} - -CHAR8* -LibGetSmbiosString ( - IN SMBIOS_STRUCTURE_POINTER *Smbios, - IN UINT16 StringNumber - ) -/*++ - - Return SMBIOS string given the string number. - - Arguments: - Smbios - Pointer to SMBIOS structure - StringNumber - String number to return. -1 is used to skip all strings and - point to the next SMBIOS structure. - - Returns: - Pointer to string, or pointer to next SMBIOS strcuture if StringNumber == -1 ---*/ -{ - UINT16 Index; - CHAR8 *String; - - // - // Skip over formatted section - // - String = (CHAR8 *)(Smbios->Raw + Smbios->Hdr->Length); - - // - // Look through unformated section - // - for (Index = 1; Index <= StringNumber; Index++) { - if (StringNumber == Index) { - return String; - } - - // - // Skip string - // - for (; *String != 0; String++); - String++; - - if (*String == 0) { - // - // If double NULL then we are done. - // Retrun pointer to next structure in Smbios. - // if you pass in a -1 you will always get here - // - Smbios->Raw = (UINT8 *)++String; - return NULL; - } - } - return NULL; -} diff --git a/efi/lib/sread.c b/efi/lib/sread.c deleted file mode 100644 index 888f954..0000000 --- a/efi/lib/sread.c +++ /dev/null @@ -1,358 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - sread.c - -Abstract: - - Simple read file access - - - -Revision History - ---*/ - -#include "lib.h" - -#define SIMPLE_READ_SIGNATURE EFI_SIGNATURE_32('s','r','d','r') -typedef struct _SIMPLE_READ_FILE { - UINTN Signature; - BOOLEAN FreeBuffer; - VOID *Source; - UINTN SourceSize; - EFI_FILE_HANDLE FileHandle; -} SIMPLE_READ_HANDLE; - - - -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 - ) -/*++ - -Routine Description: - - Opens a file for (simple) reading. The simple read abstraction - will access the file either from a memory copy, from a file - system interface, or from the load file interface. - -Arguments: - -Returns: - - A handle to access the file - ---*/ -{ - SIMPLE_READ_HANDLE *FHand; - EFI_DEVICE_PATH *UserFilePath; - EFI_DEVICE_PATH *TempFilePath; - EFI_DEVICE_PATH *TempFilePathPtr; - FILEPATH_DEVICE_PATH *FilePathNode; - EFI_FILE_HANDLE FileHandle, LastHandle; - EFI_STATUS Status; - EFI_LOAD_FILE_INTERFACE *LoadFile; - - FHand = NULL; - UserFilePath = *FilePath; - - // - // Allocate a new simple read handle structure - // - - FHand = AllocateZeroPool (sizeof(SIMPLE_READ_HANDLE)); - if (!FHand) { - Status = EFI_OUT_OF_RESOURCES; - goto Done; - } - - *SimpleReadHandle = (SIMPLE_READ_FILE) FHand; - FHand->Signature = SIMPLE_READ_SIGNATURE; - - // - // If the caller passed a copy of the file, then just use it - // - - if (SourceBuffer) { - FHand->Source = SourceBuffer; - FHand->SourceSize = SourceSize; - *DeviceHandle = NULL; - Status = EFI_SUCCESS; - goto Done; - } - - // - // Attempt to access the file via a file system interface - // - - FileHandle = NULL; - Status = uefi_call_wrapper(BS->LocateDevicePath, 3, &FileSystemProtocol, FilePath, DeviceHandle); - if (!EFI_ERROR(Status)) { - FileHandle = LibOpenRoot (*DeviceHandle); - } - - Status = FileHandle ? EFI_SUCCESS : EFI_UNSUPPORTED; - - // - // To access as a filesystem, the filepath should only - // contain filepath components. Follow the filepath nodes - // and find the target file - // - - FilePathNode = (FILEPATH_DEVICE_PATH *) *FilePath; - while (!IsDevicePathEnd(&FilePathNode->Header)) { - - // - // For filesystem access each node should be a filepath component - // - - if (DevicePathType(&FilePathNode->Header) != MEDIA_DEVICE_PATH || - DevicePathSubType(&FilePathNode->Header) != MEDIA_FILEPATH_DP) { - Status = EFI_UNSUPPORTED; - } - - // - // If there's been an error, stop - // - - if (EFI_ERROR(Status)) { - break; - } - - // - // Open this file path node - // - - LastHandle = FileHandle; - FileHandle = NULL; - - Status = uefi_call_wrapper( - LastHandle->Open, - 5, - LastHandle, - &FileHandle, - FilePathNode->PathName, - EFI_FILE_MODE_READ, - 0 - ); - - // - // Close the last node - // - - uefi_call_wrapper(LastHandle->Close, 1, LastHandle); - - // - // Get the next node - // - - FilePathNode = (FILEPATH_DEVICE_PATH *) NextDevicePathNode(&FilePathNode->Header); - } - - // - // If success, return the FHand - // - - if (!EFI_ERROR(Status)) { - ASSERT(FileHandle); - FHand->FileHandle = FileHandle; - goto Done; - } - - // - // Cleanup from filesystem access - // - - if (FileHandle) { - uefi_call_wrapper(FileHandle->Close, 1, FileHandle); - FileHandle = NULL; - *FilePath = UserFilePath; - } - - // - // If the error is something other then unsupported, return it - // - - if (Status != EFI_UNSUPPORTED) { - goto Done; - } - - // - // Attempt to access the file via the load file protocol - // - - Status = LibDevicePathToInterface (&LoadFileProtocol, *FilePath, (VOID*)&LoadFile); - if (!EFI_ERROR(Status)) { - - TempFilePath = DuplicateDevicePath (*FilePath); - - TempFilePathPtr = TempFilePath; - - Status = uefi_call_wrapper(BS->LocateDevicePath, 3, &LoadFileProtocol, &TempFilePath, DeviceHandle); - - FreePool (TempFilePathPtr); - - // - // Determine the size of buffer needed to hold the file - // - - SourceSize = 0; - Status = uefi_call_wrapper( - LoadFile->LoadFile, - 5, - LoadFile, - *FilePath, - BootPolicy, - &SourceSize, - NULL - ); - - // - // We expect a buffer too small error to inform us - // of the buffer size needed - // - - if (Status == EFI_BUFFER_TOO_SMALL) { - SourceBuffer = AllocatePool (SourceSize); - - if (SourceBuffer) { - FHand->FreeBuffer = TRUE; - FHand->Source = SourceBuffer; - FHand->SourceSize = SourceSize; - - Status = uefi_call_wrapper( - LoadFile->LoadFile, - 5, - LoadFile, - *FilePath, - BootPolicy, - &SourceSize, - SourceBuffer - ); - } - } - - // - // If success, return FHand - // - - if (!EFI_ERROR(Status) || Status == EFI_ALREADY_STARTED) { - goto Done; - } - } - - // - // Nothing else to try - // - - DEBUG ((D_LOAD|D_WARN, "OpenSimpleReadFile: Device did not support a known load protocol\n")); - Status = EFI_UNSUPPORTED; - -Done: - - // - // If the file was not accessed, clean up - // - if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) { - if (FHand) { - if (FHand->FreeBuffer) { - FreePool (FHand->Source); - } - - FreePool (FHand); - } - } - - return Status; -} - -EFI_STATUS -ReadSimpleReadFile ( - IN SIMPLE_READ_FILE UserHandle, - IN UINTN Offset, - IN OUT UINTN *ReadSize, - OUT VOID *Buffer - ) -{ - UINTN EndPos; - SIMPLE_READ_HANDLE *FHand; - EFI_STATUS Status; - - FHand = UserHandle; - ASSERT (FHand->Signature == SIMPLE_READ_SIGNATURE); - if (FHand->Source) { - - // - // Move data from our local copy of the file - // - - EndPos = Offset + *ReadSize; - if (EndPos > FHand->SourceSize) { - *ReadSize = FHand->SourceSize - Offset; - if (Offset >= FHand->SourceSize) { - *ReadSize = 0; - } - } - - CopyMem (Buffer, (CHAR8 *) FHand->Source + Offset, *ReadSize); - Status = EFI_SUCCESS; - - } else { - - // - // Read data from the file - // - - Status = uefi_call_wrapper(FHand->FileHandle->SetPosition, 2, FHand->FileHandle, Offset); - - if (!EFI_ERROR(Status)) { - Status = uefi_call_wrapper(FHand->FileHandle->Read, 3, FHand->FileHandle, ReadSize, Buffer); - } - } - - return Status; -} - - -VOID -CloseSimpleReadFile ( - IN SIMPLE_READ_FILE UserHandle - ) -{ - SIMPLE_READ_HANDLE *FHand; - - FHand = UserHandle; - ASSERT (FHand->Signature == SIMPLE_READ_SIGNATURE); - - // - // Free any file handle we opened - // - - if (FHand->FileHandle) { - uefi_call_wrapper(FHand->FileHandle->Close, 1, FHand->FileHandle); - } - - // - // If we allocated the Source buffer, free it - // - - if (FHand->FreeBuffer) { - FreePool (FHand->Source); - } - - // - // Done with this simple read file handle - // - - FreePool (FHand); -} diff --git a/efi/lib/str.c b/efi/lib/str.c deleted file mode 100644 index 9a89f30..0000000 --- a/efi/lib/str.c +++ /dev/null @@ -1,432 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - str.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -INTN -StrCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2 - ) -// compare strings -{ - return RtStrCmp(s1, s2); -} - -INTN -StrnCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2, - IN UINTN len - ) -// compare strings -{ - while (*s1 && len) { - if (*s1 != *s2) { - break; - } - - s1 += 1; - s2 += 1; - len -= 1; - } - - return len ? *s1 - *s2 : 0; -} - - -INTN EFIAPI -LibStubStriCmp ( - IN EFI_UNICODE_COLLATION_INTERFACE *This EFI_UNUSED, - IN CHAR16 *s1, - IN CHAR16 *s2 - ) -{ - return StrCmp (s1, s2); -} - -VOID EFIAPI -LibStubStrLwrUpr ( - IN EFI_UNICODE_COLLATION_INTERFACE *This EFI_UNUSED, - IN CHAR16 *Str EFI_UNUSED - ) -{ -} - -INTN -StriCmp ( - IN CONST CHAR16 *s1, - IN CONST CHAR16 *s2 - ) -// compare strings -{ - if (UnicodeInterface == &LibStubUnicodeInterface) - return UnicodeInterface->StriColl(UnicodeInterface, (CHAR16 *)s1, (CHAR16 *)s2); - else - return uefi_call_wrapper(UnicodeInterface->StriColl, 3, UnicodeInterface, (CHAR16 *)s1, (CHAR16 *)s2); -} - -VOID -StrLwr ( - IN CHAR16 *Str - ) -// lwoer case string -{ - if (UnicodeInterface == &LibStubUnicodeInterface) - UnicodeInterface->StrLwr(UnicodeInterface, Str); - else uefi_call_wrapper(UnicodeInterface->StrLwr, 2, UnicodeInterface, Str); -} - -VOID -StrUpr ( - IN CHAR16 *Str - ) -// upper case string -{ - if (UnicodeInterface == &LibStubUnicodeInterface) - UnicodeInterface->StrUpr(UnicodeInterface, Str); - else uefi_call_wrapper(UnicodeInterface->StrUpr, 2, UnicodeInterface, Str); -} - -VOID -StrCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ) -// copy strings -{ - RtStrCpy (Dest, Src); -} - -VOID -StrnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ) -// copy strings -{ - RtStrnCpy (Dest, Src, Len); -} - -CHAR16 * -StpCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ) -// copy strings -{ - return RtStpCpy (Dest, Src); -} - -CHAR16 * -StpnCpy ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ) -// copy strings -{ - return RtStpnCpy (Dest, Src, Len); -} - -VOID -StrCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src - ) -{ - RtStrCat(Dest, Src); -} - -VOID -StrnCat ( - IN CHAR16 *Dest, - IN CONST CHAR16 *Src, - IN UINTN Len - ) -{ - RtStrnCat(Dest, Src, Len); -} - - -UINTN -StrnLen ( - IN CONST CHAR16 *s1, - IN UINTN Len - ) -// string length -{ - return RtStrnLen(s1, Len); -} - -UINTN -StrLen ( - IN CONST CHAR16 *s1 - ) -// string length -{ - return RtStrLen(s1); -} - -UINTN -StrSize ( - IN CONST CHAR16 *s1 - ) -// string size -{ - return RtStrSize(s1); -} - -CHAR16 * -StrDuplicate ( - IN CONST CHAR16 *Src - ) -// duplicate a string -{ - CHAR16 *Dest; - UINTN Size; - - Size = StrSize(Src); - Dest = AllocatePool (Size); - if (Dest) { - CopyMem (Dest, Src, Size); - } - return Dest; -} - -UINTN -strlena ( - IN CONST CHAR8 *s1 - ) -// string length -{ - UINTN len; - - for (len=0; *s1; s1+=1, len+=1) ; - return len; -} - -UINTN -strcmpa ( - IN CONST CHAR8 *s1, - IN CONST CHAR8 *s2 - ) -// compare strings -{ - while (*s1) { - if (*s1 != *s2) { - break; - } - - s1 += 1; - s2 += 1; - } - - return *s1 - *s2; -} - -UINTN -strncmpa ( - IN CONST CHAR8 *s1, - IN CONST CHAR8 *s2, - IN UINTN len - ) -// compare strings -{ - while (*s1 && len) { - if (*s1 != *s2) { - break; - } - - s1 += 1; - s2 += 1; - len -= 1; - } - - return len ? *s1 - *s2 : 0; -} - - - -UINTN -xtoi ( - CONST CHAR16 *str - ) -// convert hex string to uint -{ - UINTN u; - CHAR16 c; - - // skip preceeding white space - while (*str && *str == ' ') { - str += 1; - } - - // convert hex digits - u = 0; - while ((c = *(str++))) { - if (c >= 'a' && c <= 'f') { - c -= 'a' - 'A'; - } - - if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')) { - u = (u << 4) | (c - (c >= 'A' ? 'A'-10 : '0')); - } else { - break; - } - } - - return u; -} - -UINTN -Atoi ( - CONST CHAR16 *str - ) -// convert hex string to uint -{ - UINTN u; - CHAR16 c; - - // skip preceeding white space - while (*str && *str == ' ') { - str += 1; - } - - // convert digits - u = 0; - while ((c = *(str++))) { - if (c >= '0' && c <= '9') { - u = (u * 10) + c - '0'; - } else { - break; - } - } - - return u; -} - -BOOLEAN -MetaMatch ( - IN CHAR16 *String, - IN CHAR16 *Pattern - ) -{ - CHAR16 c, p, l; - - for (; ;) { - p = *Pattern; - Pattern += 1; - - switch (p) { - case 0: - // End of pattern. If end of string, TRUE match - return *String ? FALSE : TRUE; - - case '*': - // Match zero or more chars - while (*String) { - if (MetaMatch (String, Pattern)) { - return TRUE; - } - String += 1; - } - return MetaMatch (String, Pattern); - - case '?': - // Match any one char - if (!*String) { - return FALSE; - } - String += 1; - break; - - case '[': - // Match char set - c = *String; - if (!c) { - return FALSE; // syntax problem - } - - l = 0; - while ((p = *Pattern++)) { - if (p == ']') { - return FALSE; - } - - if (p == '-') { // if range of chars, - p = *Pattern; // get high range - if (p == 0 || p == ']') { - return FALSE; // syntax problem - } - - if (c >= l && c <= p) { // if in range, - break; // it's a match - } - } - - l = p; - if (c == p) { // if char matches - break; // move on - } - } - - // skip to end of match char set - while (p && p != ']') { - p = *Pattern; - Pattern += 1; - } - - String += 1; - break; - - default: - c = *String; - if (c != p) { - return FALSE; - } - - String += 1; - break; - } - } -} - - -BOOLEAN EFIAPI -LibStubMetaiMatch ( - IN EFI_UNICODE_COLLATION_INTERFACE *This EFI_UNUSED, - IN CHAR16 *String, - IN CHAR16 *Pattern - ) -{ - return MetaMatch (String, Pattern); -} - - -BOOLEAN -MetaiMatch ( - IN CHAR16 *String, - IN CHAR16 *Pattern - ) -{ - if (UnicodeInterface == &LibStubUnicodeInterface) - return UnicodeInterface->MetaiMatch(UnicodeInterface, String, Pattern); - else return uefi_call_wrapper(UnicodeInterface->MetaiMatch, 3, UnicodeInterface, String, Pattern); -} diff --git a/efi/lib/x86_64/callwrap.c b/efi/lib/x86_64/callwrap.c deleted file mode 100644 index 30a5322..0000000 --- a/efi/lib/x86_64/callwrap.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Convert SysV calling convention to EFI x86_64 calling convention - * - * Copyright (C) 2007-2010 Intel Corp - * Bibo Mao - * Chandramouli Narayanan - * Huang Ying - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - 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. - * - Neither the name of Hewlett-Packard Co. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT OWNER OR CONTRIBUTORS - * BE LIABLE FOR ANYDIRECT, 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. - */ - -/* uefi_call_wrapper() is a macro in efibind.h */ diff --git a/efi/lib/x86_64/efi_stub.S b/efi/lib/x86_64/efi_stub.S deleted file mode 100644 index b431255..0000000 --- a/efi/lib/x86_64/efi_stub.S +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Function calling ABI conversion from Linux to EFI for x86_64 - * - * Copyright (C) 2007 Intel Corp - * Bibo Mao - * Huang Ying - * Copyright (C) 2012 Felipe Contreras - */ - -#if !defined(HAVE_USE_MS_ABI) -/* - * EFI calling conventions are documented at: - * http://msdn.microsoft.com/en-us/library/ms235286%28v=vs.80%29.aspx - * ELF calling conventions are documented at: - * http://www.x86-64.org/documentation/abi.pdf - * - * Basically here are the conversion rules: - * a) our function pointer is in %rdi - * b) rsi through r8 (elf) aka rcx through r9 (ms) require stack space - * on the MS side even though it's not getting used at all. - * c) 8(%rsp) is always aligned to 16 in ELF, so %rsp is shifted 8 bytes extra - * d) arguments are as follows: (elf -> ms) - * 1) rdi -> rcx (32 saved) - * 2) rsi -> rdx (32 saved) - * 3) rdx -> r8 (32 saved) - * 4) rcx -> r9 (32 saved) - * 5) r8 -> 32(%rsp) (32 saved) - * 6) r9 -> 40(%rsp) (48 saved) - * 7) 8(%rsp) -> 48(%rsp) (48 saved) - * 8) 16(%rsp) -> 56(%rsp) (64 saved) - * 9) 24(%rsp) -> 64(%rsp) (64 saved) - * 10) 32(%rsp) -> 72(%rsp) (80 saved) - * e) because the first argument we recieve in a thunker is actually the - * function to be called, arguments are offset as such: - * 0) rdi -> caller - * 1) rsi -> rcx (32 saved) - * 2) rdx -> rdx (32 saved) - * 3) rcx -> r8 (32 saved) - * 4) r8 -> r9 (32 saved) - * 5) r9 -> 32(%rsp) (32 saved) - * 6) 8(%rsp) -> 40(%rsp) (48 saved) - * 7) 16(%rsp) -> 48(%rsp) (48 saved) - * 8) 24(%rsp) -> 56(%rsp) (64 saved) - * 9) 32(%rsp) -> 64(%rsp) (64 saved) - * 10) 40(%rsp) -> 72(%rsp) (80 saved) - * f) arguments need to be moved in opposite order to avoid clobbering - */ - -#define ENTRY(name) \ - .globl name; \ - name: - -ENTRY(efi_call0) - subq $40, %rsp - call *%rdi - addq $40, %rsp - ret - -ENTRY(efi_call1) - subq $40, %rsp - mov %rsi, %rcx - call *%rdi - addq $40, %rsp - ret - -ENTRY(efi_call2) - subq $40, %rsp - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $40, %rsp - ret - -ENTRY(efi_call3) - subq $40, %rsp - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $40, %rsp - ret - -ENTRY(efi_call4) - subq $40, %rsp - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $40, %rsp - ret - -ENTRY(efi_call5) - subq $40, %rsp - mov %r9, 32(%rsp) - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $40, %rsp - ret - -ENTRY(efi_call6) - subq $56, %rsp - mov 56+8(%rsp), %rax - mov %rax, 40(%rsp) - mov %r9, 32(%rsp) - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $56, %rsp - ret - -ENTRY(efi_call7) - subq $56, %rsp - mov 56+16(%rsp), %rax - mov %rax, 48(%rsp) - mov 56+8(%rsp), %rax - mov %rax, 40(%rsp) - mov %r9, 32(%rsp) - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $56, %rsp - ret - -ENTRY(efi_call8) - subq $72, %rsp - mov 72+24(%rsp), %rax - mov %rax, 56(%rsp) - mov 72+16(%rsp), %rax - mov %rax, 48(%rsp) - mov 72+8(%rsp), %rax - mov %rax, 40(%rsp) - mov %r9, 32(%rsp) - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $72, %rsp - ret - -ENTRY(efi_call9) - subq $72, %rsp - mov 72+32(%rsp), %rax - mov %rax, 64(%rsp) - mov 72+24(%rsp), %rax - mov %rax, 56(%rsp) - mov 72+16(%rsp), %rax - mov %rax, 48(%rsp) - mov 72+8(%rsp), %rax - mov %rax, 40(%rsp) - mov %r9, 32(%rsp) - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $72, %rsp - ret - -ENTRY(efi_call10) - subq $88, %rsp - mov 88+40(%rsp), %rax - mov %rax, 72(%rsp) - mov 88+32(%rsp), %rax - mov %rax, 64(%rsp) - mov 88+24(%rsp), %rax - mov %rax, 56(%rsp) - mov 88+16(%rsp), %rax - mov %rax, 48(%rsp) - mov 88+8(%rsp), %rax - mov %rax, 40(%rsp) - mov %r9, 32(%rsp) - mov %r8, %r9 - mov %rcx, %r8 - /* mov %rdx, %rdx */ - mov %rsi, %rcx - call *%rdi - addq $88, %rsp - ret - -#endif diff --git a/efi/lib/x86_64/initplat.c b/efi/lib/x86_64/initplat.c deleted file mode 100644 index 7c887a6..0000000 --- a/efi/lib/x86_64/initplat.c +++ /dev/null @@ -1,27 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - initplat.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - -VOID -InitializeLibPlatform ( - IN EFI_HANDLE ImageHandle EFI_UNUSED, - IN EFI_SYSTEM_TABLE *SystemTable EFI_UNUSED - ) -{ -} - diff --git a/efi/lib/x86_64/math.c b/efi/lib/x86_64/math.c deleted file mode 100644 index aa02431..0000000 --- a/efi/lib/x86_64/math.c +++ /dev/null @@ -1,181 +0,0 @@ -/*++ - -Copyright (c) 1998 Intel Corporation - -Module Name: - - math.c - -Abstract: - - - - -Revision History - ---*/ - -#include "lib.h" - - -// -// Declare runtime functions -// - -#ifdef RUNTIME_CODE -#ifndef __GNUC__ -#pragma RUNTIME_CODE(LShiftU64) -#pragma RUNTIME_CODE(RShiftU64) -#pragma RUNTIME_CODE(MultU64x32) -#pragma RUNTIME_CODE(DivU64x32) -#endif -#endif - -// -// -// - -UINT64 -LShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Left shift 64bit by 32bit and get a 64bit result -{ -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) - return Operand << Count; -#else - UINT64 Result; - _asm { - mov eax, dword ptr Operand[0] - mov edx, dword ptr Operand[4] - mov ecx, Count - and ecx, 63 - - shld edx, eax, cl - shl eax, cl - - cmp ecx, 32 - jc short ls10 - - mov edx, eax - xor eax, eax - -ls10: - mov dword ptr Result[0], eax - mov dword ptr Result[4], edx - } - - return Result; -#endif -} - -UINT64 -RShiftU64 ( - IN UINT64 Operand, - IN UINTN Count - ) -// Right shift 64bit by 32bit and get a 64bit result -{ -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) - return Operand >> Count; -#else - UINT64 Result; - _asm { - mov eax, dword ptr Operand[0] - mov edx, dword ptr Operand[4] - mov ecx, Count - and ecx, 63 - - shrd eax, edx, cl - shr edx, cl - - cmp ecx, 32 - jc short rs10 - - mov eax, edx - xor edx, edx - -rs10: - mov dword ptr Result[0], eax - mov dword ptr Result[4], edx - } - - return Result; -#endif -} - - -UINT64 -MultU64x32 ( - IN UINT64 Multiplicand, - IN UINTN Multiplier - ) -// Multiple 64bit by 32bit and get a 64bit result -{ -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) - return Multiplicand * Multiplier; -#else - UINT64 Result; - _asm { - mov eax, dword ptr Multiplicand[0] - mul Multiplier - mov dword ptr Result[0], eax - mov dword ptr Result[4], edx - mov eax, dword ptr Multiplicand[4] - mul Multiplier - add dword ptr Result[4], eax - } - - return Result; -#endif -} - -UINT64 -DivU64x32 ( - IN UINT64 Dividend, - IN UINTN Divisor, - OUT UINTN *Remainder OPTIONAL - ) -// divide 64bit by 32bit and get a 64bit result -// N.B. only works for 31bit divisors!! -{ -#if defined(__GNUC__) || defined(_MSC_EXTENSIONS) - if (Remainder) - *Remainder = Dividend % Divisor; - return Dividend / Divisor; -#else - UINT32 Rem; - UINT32 bit; - - ASSERT (Divisor != 0); - ASSERT ((Divisor >> 31) == 0); - - // - // For each bit in the dividend - // - - Rem = 0; - for (bit=0; bit < 64; bit++) { - _asm { - shl dword ptr Dividend[0], 1 ; shift rem:dividend left one - rcl dword ptr Dividend[4], 1 - rcl dword ptr Rem, 1 - - mov eax, Rem - cmp eax, Divisor ; Is Rem >= Divisor? - cmc ; No - do nothing - sbb eax, eax ; Else, - sub dword ptr Dividend[0], eax ; set low bit in dividen - and eax, Divisor ; and - sub Rem, eax ; subtract divisor - } - } - - if (Remainder) { - *Remainder = Rem; - } - - return Dividend; -#endif -} diff --git a/efi/lib/x86_64/setjmp.S b/efi/lib/x86_64/setjmp.S deleted file mode 100644 index e870aef..0000000 --- a/efi/lib/x86_64/setjmp.S +++ /dev/null @@ -1,41 +0,0 @@ - .text - .globl setjmp -#ifndef __MINGW32__ - .type setjmp, @function -#else - .def setjmp; .scl 2; .type 32; .endef -#endif -setjmp: - pop %rsi - movq %rbx,0x00(%rdi) - movq %rsp,0x08(%rdi) - push %rsi - movq %rbp,0x10(%rdi) - movq %r12,0x18(%rdi) - movq %r13,0x20(%rdi) - movq %r14,0x28(%rdi) - movq %r15,0x30(%rdi) - movq %rsi,0x38(%rdi) - xor %rax,%rax - ret - - .globl longjmp -#ifndef __MINGW32__ - .type longjmp, @function -#else - .def longjmp; .scl 2; .type 32; .endef -#endif -longjmp: - movl %esi, %eax - movq 0x00(%rdi), %rbx - movq 0x08(%rdi), %rsp - movq 0x10(%rdi), %rbp - movq 0x18(%rdi), %r12 - movq 0x20(%rdi), %r13 - movq 0x28(%rdi), %r14 - movq 0x30(%rdi), %r15 - xor %rdx,%rdx - mov $1,%rcx - cmp %rax,%rdx - cmove %rcx,%rax - jmp *0x38(%rdi)