commit
34754d941f
@ -69,7 +69,7 @@ TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi t7.efi t8.efi \
|
||||
tcc.efi printenv.efi modelist.efi route80h.efi route80h.efi \
|
||||
drv0_use.efi AllocPages.efi exit.efi FreePages.efi bltgrid.efi \
|
||||
lfbgrid.efi setdbg.efi unsetdbg.efi ctors_test.efi \
|
||||
ctors_dtors_priority_test.efi
|
||||
ctors_dtors_priority_test.efi old_ABI.efi
|
||||
ifeq ($(IS_MINGW32),)
|
||||
TARGET_APPS += setjmp.efi debughook.efi debughook.efi.debug
|
||||
endif
|
||||
|
@ -1,29 +1,29 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
// 101 in init_array, 65434 in ctors
|
||||
static void __attribute__((constructor(101))) EFI_NO_TAIL_CALL ctors101() {
|
||||
Print(L"1) ctor with lower numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 65434 in init_array, 101 in ctors
|
||||
static void __attribute__((constructor(65434))) EFI_NO_TAIL_CALL ctors65434() {
|
||||
Print(L"2) ctor with higher numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 101 in fini_array, 65434 in dtors
|
||||
static void __attribute__((destructor(101))) EFI_NO_TAIL_CALL dtors101() {
|
||||
Print(L"4) dtor with lower numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 65434 in fini_array, 101 in dtors
|
||||
static void __attribute__((destructor(65434))) EFI_NO_TAIL_CALL dtors65434() {
|
||||
Print(L"3) dtor with higher numbered priority \r\n");
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||
{
|
||||
Print(L"Main function \r\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
// 101 in init_array, 65434 in ctors
|
||||
static void __attribute__((constructor(101))) EFI_NO_TAIL_CALL ctors101() {
|
||||
Print(L"1) ctor with lower numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 65434 in init_array, 101 in ctors
|
||||
static void __attribute__((constructor(65434))) EFI_NO_TAIL_CALL ctors65434() {
|
||||
Print(L"2) ctor with higher numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 101 in fini_array, 65434 in dtors
|
||||
static void __attribute__((destructor(101))) EFI_NO_TAIL_CALL dtors101() {
|
||||
Print(L"4) dtor with lower numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 65434 in fini_array, 101 in dtors
|
||||
static void __attribute__((destructor(65434))) EFI_NO_TAIL_CALL dtors65434() {
|
||||
Print(L"3) dtor with higher numbered priority \r\n");
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||
{
|
||||
Print(L"Main function \r\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
22
apps/old_ABI.c
Normal file
22
apps/old_ABI.c
Normal file
@ -0,0 +1,22 @@
|
||||
#define GNU_EFI_USE_REALLOCATEPOOL_ABI 0
|
||||
#define GNU_EFI_USE_COPYMEM_ABI 0
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||
{
|
||||
|
||||
CHAR16 *Dest = 0;
|
||||
EFI_UNUSED CHAR16 *Copy = 0;
|
||||
UINTN test_str_size = 0;
|
||||
CONST CHAR16 *test_str = L"Hello World!";
|
||||
|
||||
test_str_size = StrSize(test_str);
|
||||
Dest = AllocatePool(test_str_size);
|
||||
CopyMem(Dest, test_str, test_str_size);
|
||||
Copy = ReallocatePool(Dest, test_str_size, test_str_size+10);
|
||||
Print(L"Done!\r\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -46,6 +46,37 @@ FILES = reloc_$(ARCH)
|
||||
|
||||
OBJS = $(FILES:%=%.o)
|
||||
|
||||
ifneq ($(HAVE_EFI_OBJCOPY),)
|
||||
gnu_efi_default_is_objcopy=true
|
||||
else
|
||||
gnu_efi_default_is_objcopy=false
|
||||
endif
|
||||
# https://uefi.org/specs/UEFI/2.10/03_Boot_Manager.html#uefi-image-types
|
||||
ifeq ($(ARCH),x86_64)
|
||||
efi_machine_type_name=x64
|
||||
endif
|
||||
ifeq ($(ARCH),ia32)
|
||||
efi_machine_type_name=ia32
|
||||
endif
|
||||
ifeq ($(ARCH),arm)
|
||||
efi_machine_type_name=arm
|
||||
endif
|
||||
ifeq ($(ARCH),aarch64)
|
||||
efi_machine_type_name=aa64
|
||||
endif
|
||||
ifeq ($(ARCH),ia64)
|
||||
efi_machine_type_name=ia64
|
||||
endif
|
||||
ifeq ($(ARCH),riscv64)
|
||||
efi_machine_type_name=riscv64
|
||||
endif
|
||||
ifeq ($(ARCH),loongarch64)
|
||||
efi_machine_type_name=loongarch64
|
||||
endif
|
||||
ifeq ($(ARCH),mips64el)
|
||||
efi_machine_type_name=mips64
|
||||
endif
|
||||
|
||||
# on aarch64, avoid jump tables before all relocations have been processed
|
||||
reloc_aarch64.o: CFLAGS += -fno-jump-tables
|
||||
|
||||
@ -63,6 +94,9 @@ gnu-efi.pc:
|
||||
-e 's:@INCLUDEDIR@:$(INCLUDEDIR):g' \
|
||||
-e 's:@LIBDIR@:$(LIBDIR):g' \
|
||||
-e 's:@VERSION@:$(VERSION):g' \
|
||||
-e 's:@efi_machine_type_name@:$(efi_machine_type_name):g' \
|
||||
-e 's:@gnu_efi_arch@:$(ARCH):g' \
|
||||
-e 's:@gnu_efi_default_is_objcopy@:$(gnu_efi_default_is_objcopy):g' \
|
||||
$(SRCDIR)/gnu-efi.pc.in > gnu-efi.pc
|
||||
|
||||
|
||||
|
@ -1,10 +1,13 @@
|
||||
prefix=@PREFIX@
|
||||
exec_prefix=@EXEC_PREFIX@
|
||||
includedir=@INCLUDEDIR@
|
||||
libdir=@LIBDIR@
|
||||
|
||||
Name: gnu-efi
|
||||
Description: EFI development toolkit
|
||||
Version: @VERSION@
|
||||
Cflags: -I${includedir}/efi
|
||||
Libs: -lefi
|
||||
prefix=@PREFIX@
|
||||
exec_prefix=@EXEC_PREFIX@
|
||||
includedir=@INCLUDEDIR@
|
||||
libdir=@LIBDIR@
|
||||
efi_machine_type_name=@efi_machine_type_name@
|
||||
gnu_efi_arch=@gnu_efi_arch@
|
||||
gnu_efi_default_is_objcopy=@gnu_efi_default_is_objcopy@
|
||||
|
||||
Name: gnu-efi
|
||||
Description: EFI development toolkit
|
||||
Version: @VERSION@
|
||||
Cflags: -I${includedir}/efi
|
||||
Libs: -lefi
|
||||
|
@ -64,6 +64,7 @@ extern "C" {
|
||||
|
||||
#include "eficompiler.h"
|
||||
#include "efidef.h"
|
||||
#include "legacy.h"
|
||||
#include "efidevp.h"
|
||||
#include "efipciio.h"
|
||||
#include "efiprot.h"
|
||||
|
20
inc/efilib.h
20
inc/efilib.h
@ -297,12 +297,19 @@ SetMem (
|
||||
);
|
||||
|
||||
VOID EFIAPI
|
||||
CopyMem (
|
||||
CopyMem_1 (
|
||||
IN VOID *Dest,
|
||||
IN VOID *Src,
|
||||
IN UINTN len
|
||||
);
|
||||
|
||||
VOID EFIAPI
|
||||
CopyMemC (
|
||||
IN VOID *Dest,
|
||||
IN CONST VOID *Src,
|
||||
IN UINTN len
|
||||
);
|
||||
|
||||
INTN
|
||||
CompareMem (
|
||||
IN CONST VOID *Dest,
|
||||
@ -505,11 +512,12 @@ AllocateZeroPool (
|
||||
);
|
||||
|
||||
VOID *
|
||||
ReallocatePool (
|
||||
IN VOID *OldPool,
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize
|
||||
);
|
||||
EFIAPI
|
||||
ReallocatePool_1 (
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize,
|
||||
IN VOID *OldPool OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
FreePool (
|
||||
|
230
inc/efipoint.h
230
inc/efipoint.h
@ -1,115 +1,115 @@
|
||||
/* 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
|
||||
/* 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
|
||||
|
@ -62,6 +62,15 @@ RtCopyMem (
|
||||
IN UINTN len
|
||||
);
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
RUNTIMEFUNCTION
|
||||
RtCopyMemC (
|
||||
IN VOID *Dest,
|
||||
IN CONST VOID *Src,
|
||||
IN UINTN len
|
||||
);
|
||||
|
||||
INTN
|
||||
RUNTIMEFUNCTION
|
||||
RtCompareMem (
|
||||
|
@ -1,94 +1,94 @@
|
||||
/** @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.<BR>
|
||||
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
|
||||
/** @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.<BR>
|
||||
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
|
||||
|
40
inc/inc.mak
40
inc/inc.mak
@ -1,23 +1,23 @@
|
||||
|
||||
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
efi.h \
|
||||
efiapi.h \
|
||||
efibind.h \
|
||||
eficon.h \
|
||||
efidebug.h \
|
||||
efidef.h \
|
||||
efidevp.h \
|
||||
efierr.h \
|
||||
efifs.h \
|
||||
efilib.h \
|
||||
efipart.h \
|
||||
efipciio.h \
|
||||
efiprot.h \
|
||||
efipxe.h \
|
||||
efivar.h \
|
||||
pe.h \
|
||||
|
||||
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
efi.h \
|
||||
efiapi.h \
|
||||
efibind.h \
|
||||
eficon.h \
|
||||
efidebug.h \
|
||||
efidef.h \
|
||||
efidevp.h \
|
||||
efierr.h \
|
||||
efifs.h \
|
||||
efilib.h \
|
||||
efipart.h \
|
||||
efipciio.h \
|
||||
efiprot.h \
|
||||
efipxe.h \
|
||||
efivar.h \
|
||||
pe.h \
|
||||
efiip.h \
|
||||
efiudp.h \
|
||||
efitcp.h \
|
||||
stdarg.h
|
||||
stdarg.h
|
||||
|
60
inc/legacy.h
Normal file
60
inc/legacy.h
Normal file
@ -0,0 +1,60 @@
|
||||
#ifndef _EFI_LEGACY_H
|
||||
#define _EFI_LEGACY_H
|
||||
|
||||
/*
|
||||
ABIs:
|
||||
Default ABI will be highest number
|
||||
Older versions can be selected via compiler defines
|
||||
*/
|
||||
|
||||
/* ReallocatePool */
|
||||
#ifndef GNU_EFI_USE_REALLOCATEPOOL_ABI
|
||||
#define GNU_EFI_USE_REALLOCATEPOOL_ABI 1
|
||||
#endif
|
||||
|
||||
#if GNU_EFI_USE_REALLOCATEPOOL_ABI == 0
|
||||
#define ReallocatePool ReallocatePool_0
|
||||
#else
|
||||
#define ReallocatePool ReallocatePool_1
|
||||
#endif
|
||||
|
||||
/* prevent circular headers */
|
||||
VOID *
|
||||
EFIAPI
|
||||
ReallocatePool_1 (
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize,
|
||||
IN VOID *OldPool OPTIONAL
|
||||
);
|
||||
|
||||
inline
|
||||
VOID *
|
||||
EFIAPI
|
||||
ReallocatePool_0 (
|
||||
IN VOID *OldPool,
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize
|
||||
)
|
||||
{
|
||||
return ReallocatePool_1(OldSize, NewSize, OldPool);
|
||||
}
|
||||
|
||||
/* end ReallocatePool */
|
||||
|
||||
/* CopyMem */
|
||||
/* CopyMemC isn't deprecated - serves different purpose to CopyMem */
|
||||
|
||||
#ifndef GNU_EFI_USE_COPYMEM_ABI
|
||||
#define GNU_EFI_USE_COPYMEM_ABI 1
|
||||
#endif
|
||||
|
||||
#if GNU_EFI_USE_COPYMEM_ABI == 0
|
||||
#define CopyMem CopyMemC
|
||||
#else
|
||||
#define CopyMem CopyMem_1
|
||||
#endif
|
||||
|
||||
/* end CopyMem */
|
||||
|
||||
#endif
|
||||
|
60
inc/make.inf
60
inc/make.inf
@ -1,33 +1,33 @@
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
[sources]
|
||||
efi.h
|
||||
efiapi.h
|
||||
eficon.h
|
||||
efidebug.h
|
||||
efidef.h
|
||||
efidevp.h
|
||||
efierr.h
|
||||
efifs.h
|
||||
efilib.h
|
||||
efipart.h
|
||||
efipciio.h
|
||||
efiprot.h
|
||||
efipxebc.h
|
||||
efistdarg.h
|
||||
efinet.h
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
[sources]
|
||||
efi.h
|
||||
efiapi.h
|
||||
eficon.h
|
||||
efidebug.h
|
||||
efidef.h
|
||||
efidevp.h
|
||||
efierr.h
|
||||
efifs.h
|
||||
efilib.h
|
||||
efipart.h
|
||||
efipciio.h
|
||||
efiprot.h
|
||||
efipxebc.h
|
||||
efistdarg.h
|
||||
efinet.h
|
||||
efiip.h
|
||||
efiudp.h
|
||||
efitcp.h
|
||||
|
||||
[ia32sources]
|
||||
efibind.h
|
||||
pe.h
|
||||
efilibplat.h
|
||||
|
||||
[ia64sources]
|
||||
efibind.h
|
||||
pe.h
|
||||
efilibplat.h
|
||||
|
||||
[ia32sources]
|
||||
efibind.h
|
||||
pe.h
|
||||
efilibplat.h
|
||||
|
||||
[ia64sources]
|
||||
efibind.h
|
||||
pe.h
|
||||
efilibplat.h
|
||||
|
@ -1,48 +1,48 @@
|
||||
|
||||
#
|
||||
# This is a machine generated file - DO NOT EDIT
|
||||
# Generated by genmake.exe
|
||||
# Generated from make.inf
|
||||
# Copyright (c) 1998 Intel Corporation
|
||||
#
|
||||
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efi.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efiapi.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\eficon.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efidebug.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efidef.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efidevp.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efierr.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efifs.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efilib.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efipart.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efipciio.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efiprot.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efipxebc.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efistdarg.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efinet.h \
|
||||
|
||||
#
|
||||
# This is a machine generated file - DO NOT EDIT
|
||||
# Generated by genmake.exe
|
||||
# Generated from make.inf
|
||||
# Copyright (c) 1998 Intel Corporation
|
||||
#
|
||||
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efi.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efiapi.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\eficon.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efidebug.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efidef.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efidevp.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efierr.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efifs.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efilib.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efipart.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efipciio.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efiprot.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efipxebc.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efistdarg.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efinet.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efiip.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efiudp.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\efitcp.h \
|
||||
|
||||
|
||||
!IF "$(PROCESSOR)" == "Ia32"
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia32\efibind.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia32\pe.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia32\efilibplat.h \
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(PROCESSOR)" == "Ia64"
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia64\efibind.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia64\pe.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia64\efilibplat.h \
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
|
||||
!IF "$(PROCESSOR)" == "Ia32"
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia32\efibind.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia32\pe.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia32\efilibplat.h \
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(PROCESSOR)" == "Ia64"
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia64\efibind.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia64\pe.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\Ia64\efilibplat.h \
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -1,208 +1,208 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2000
|
||||
* Intel Corporation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
*
|
||||
* This product includes software developed by Intel Corporation and
|
||||
* its contributors.
|
||||
*
|
||||
* 4. Neither the name of Intel Corporation or its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _EFICONTEXT_H_
|
||||
#define _EFICONTEXT_H_
|
||||
|
||||
|
||||
//
|
||||
// IA-64 processor exception types
|
||||
//
|
||||
#define EXCPT_ALT_DTLB 4
|
||||
#define EXCPT_DNESTED_TLB 5
|
||||
#define EXCPT_BREAKPOINT 11
|
||||
#define EXCPT_EXTERNAL_INTERRUPT 12
|
||||
#define EXCPT_GEN_EXCEPT 24
|
||||
#define EXCPT_NAT_CONSUMPTION 26
|
||||
#define EXCPT_DEBUG_EXCEPT 29
|
||||
#define EXCPT_UNALIGNED_ACCESS 30
|
||||
#define EXCPT_FP_FAULT 32
|
||||
#define EXCPT_FP_TRAP 33
|
||||
#define EXCPT_TAKEN_BRANCH 35
|
||||
#define EXCPT_SINGLE_STEP 36
|
||||
|
||||
//
|
||||
// IA-64 processor context definition - must be 512 byte aligned!!!
|
||||
//
|
||||
typedef
|
||||
struct {
|
||||
UINT64 reserved; // necessary to preserve alignment for the correct bits in UNAT and to insure F2 is 16 byte aligned...
|
||||
|
||||
UINT64 r1;
|
||||
UINT64 r2;
|
||||
UINT64 r3;
|
||||
UINT64 r4;
|
||||
UINT64 r5;
|
||||
UINT64 r6;
|
||||
UINT64 r7;
|
||||
UINT64 r8;
|
||||
UINT64 r9;
|
||||
UINT64 r10;
|
||||
UINT64 r11;
|
||||
UINT64 r12;
|
||||
UINT64 r13;
|
||||
UINT64 r14;
|
||||
UINT64 r15;
|
||||
UINT64 r16;
|
||||
UINT64 r17;
|
||||
UINT64 r18;
|
||||
UINT64 r19;
|
||||
UINT64 r20;
|
||||
UINT64 r21;
|
||||
UINT64 r22;
|
||||
UINT64 r23;
|
||||
UINT64 r24;
|
||||
UINT64 r25;
|
||||
UINT64 r26;
|
||||
UINT64 r27;
|
||||
UINT64 r28;
|
||||
UINT64 r29;
|
||||
UINT64 r30;
|
||||
UINT64 r31;
|
||||
|
||||
UINT64 f2[2];
|
||||
UINT64 f3[2];
|
||||
UINT64 f4[2];
|
||||
UINT64 f5[2];
|
||||
UINT64 f6[2];
|
||||
UINT64 f7[2];
|
||||
UINT64 f8[2];
|
||||
UINT64 f9[2];
|
||||
UINT64 f10[2];
|
||||
UINT64 f11[2];
|
||||
UINT64 f12[2];
|
||||
UINT64 f13[2];
|
||||
UINT64 f14[2];
|
||||
UINT64 f15[2];
|
||||
UINT64 f16[2];
|
||||
UINT64 f17[2];
|
||||
UINT64 f18[2];
|
||||
UINT64 f19[2];
|
||||
UINT64 f20[2];
|
||||
UINT64 f21[2];
|
||||
UINT64 f22[2];
|
||||
UINT64 f23[2];
|
||||
UINT64 f24[2];
|
||||
UINT64 f25[2];
|
||||
UINT64 f26[2];
|
||||
UINT64 f27[2];
|
||||
UINT64 f28[2];
|
||||
UINT64 f29[2];
|
||||
UINT64 f30[2];
|
||||
UINT64 f31[2];
|
||||
|
||||
UINT64 pr;
|
||||
|
||||
UINT64 b0;
|
||||
UINT64 b1;
|
||||
UINT64 b2;
|
||||
UINT64 b3;
|
||||
UINT64 b4;
|
||||
UINT64 b5;
|
||||
UINT64 b6;
|
||||
UINT64 b7;
|
||||
|
||||
// application registers
|
||||
UINT64 ar_rsc;
|
||||
UINT64 ar_bsp;
|
||||
UINT64 ar_bspstore;
|
||||
UINT64 ar_rnat;
|
||||
|
||||
UINT64 ar_fcr;
|
||||
|
||||
UINT64 ar_eflag;
|
||||
UINT64 ar_csd;
|
||||
UINT64 ar_ssd;
|
||||
UINT64 ar_cflg;
|
||||
UINT64 ar_fsr;
|
||||
UINT64 ar_fir;
|
||||
UINT64 ar_fdr;
|
||||
|
||||
UINT64 ar_ccv;
|
||||
|
||||
UINT64 ar_unat;
|
||||
|
||||
UINT64 ar_fpsr;
|
||||
|
||||
UINT64 ar_pfs;
|
||||
UINT64 ar_lc;
|
||||
UINT64 ar_ec;
|
||||
|
||||
// control registers
|
||||
UINT64 cr_dcr;
|
||||
UINT64 cr_itm;
|
||||
UINT64 cr_iva;
|
||||
UINT64 cr_pta;
|
||||
UINT64 cr_ipsr;
|
||||
UINT64 cr_isr;
|
||||
UINT64 cr_iip;
|
||||
UINT64 cr_ifa;
|
||||
UINT64 cr_itir;
|
||||
UINT64 cr_iipa;
|
||||
UINT64 cr_ifs;
|
||||
UINT64 cr_iim;
|
||||
UINT64 cr_iha;
|
||||
|
||||
// debug registers
|
||||
UINT64 dbr0;
|
||||
UINT64 dbr1;
|
||||
UINT64 dbr2;
|
||||
UINT64 dbr3;
|
||||
UINT64 dbr4;
|
||||
UINT64 dbr5;
|
||||
UINT64 dbr6;
|
||||
UINT64 dbr7;
|
||||
|
||||
UINT64 ibr0;
|
||||
UINT64 ibr1;
|
||||
UINT64 ibr2;
|
||||
UINT64 ibr3;
|
||||
UINT64 ibr4;
|
||||
UINT64 ibr5;
|
||||
UINT64 ibr6;
|
||||
UINT64 ibr7;
|
||||
|
||||
// virtual registers
|
||||
UINT64 int_nat; // nat bits for R1-R31
|
||||
|
||||
} SYSTEM_CONTEXT;
|
||||
|
||||
#endif /* _EFI_CONTEXT_H_ */
|
||||
/*
|
||||
* 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_ */
|
||||
|
@ -1,13 +1,13 @@
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
[sources]
|
||||
efivar.h
|
||||
legacyboot.h
|
||||
VgaClass.h
|
||||
intload.h
|
||||
|
||||
[ia32sources]
|
||||
|
||||
[ia64sources]
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
[sources]
|
||||
efivar.h
|
||||
legacyboot.h
|
||||
VgaClass.h
|
||||
intload.h
|
||||
|
||||
[ia32sources]
|
||||
|
||||
[ia64sources]
|
||||
|
@ -1,29 +1,29 @@
|
||||
|
||||
#
|
||||
# This is a machine generated file - DO NOT EDIT
|
||||
# Generated by genmake.exe
|
||||
# Generated from make.inf
|
||||
# Copyright (c) 1998 Intel Corporation
|
||||
#
|
||||
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\protocol\efivar.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\protocol\legacyboot.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\protocol\vgaclass.h \
|
||||
$(SDK_INSTALL_DIR)\include\efi\protocol\efidbg.h \
|
||||
|
||||
|
||||
!IF "$(PROCESSOR)" == "Ia32"
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(PROCESSOR)" == "Ia64"
|
||||
INC_DEPS = $(INC_DEPS) \
|
||||
$(SDK_INSTALL_DIR)\include\efi\protocol\$(PROCESSOR)\eficontext.h \
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
The protocol directory contains non Architectural
|
||||
Protocols that span the FW, Platform, or application
|
||||
The protocol directory contains non Architectural
|
||||
Protocols that span the FW, Platform, or application
|
||||
space.
|
@ -1202,7 +1202,7 @@ DevicePathToStr (
|
||||
|
||||
FreePool (DevPath);
|
||||
NewSize = (Str.len + 1) * sizeof(CHAR16);
|
||||
Str.str = ReallocatePool (Str.str, NewSize, NewSize);
|
||||
Str.str = ReallocatePool (NewSize, NewSize, Str.str);
|
||||
Str.str[Str.len] = 0;
|
||||
return Str.str;
|
||||
}
|
||||
|
23
lib/misc.c
23
lib/misc.c
@ -54,11 +54,12 @@ AllocateZeroPool (
|
||||
}
|
||||
|
||||
VOID *
|
||||
ReallocatePool (
|
||||
IN VOID *OldPool,
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize
|
||||
)
|
||||
EFIAPI
|
||||
ReallocatePool_1 (
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize,
|
||||
IN VOID *OldPool OPTIONAL
|
||||
)
|
||||
{
|
||||
VOID *NewPool;
|
||||
|
||||
@ -109,7 +110,7 @@ SetMem (
|
||||
}
|
||||
|
||||
VOID EFIAPI
|
||||
CopyMem (
|
||||
CopyMem_1 (
|
||||
IN VOID *Dest,
|
||||
IN VOID *Src,
|
||||
IN UINTN len
|
||||
@ -118,6 +119,16 @@ CopyMem (
|
||||
RtCopyMem (Dest, Src, len);
|
||||
}
|
||||
|
||||
VOID EFIAPI
|
||||
CopyMemC (
|
||||
IN VOID *Dest,
|
||||
IN CONST VOID *Src,
|
||||
IN UINTN len
|
||||
)
|
||||
{
|
||||
RtCopyMemC (Dest, Src, len);
|
||||
}
|
||||
|
||||
INTN
|
||||
CompareMem (
|
||||
IN CONST VOID *Dest,
|
||||
|
@ -378,9 +378,9 @@ _PoolPrint (
|
||||
newlen += PRINT_STRING_LEN;
|
||||
spc->maxlen = newlen;
|
||||
spc->str = ReallocatePool (
|
||||
spc->str,
|
||||
spc->len * sizeof(CHAR16),
|
||||
spc->maxlen * sizeof(CHAR16)
|
||||
spc->maxlen * sizeof(CHAR16),
|
||||
spc->str
|
||||
);
|
||||
|
||||
if (!spc->str) {
|
||||
|
@ -88,6 +88,30 @@ RtCopyMem (
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef __GNUC__
|
||||
#pragma RUNTIME_CODE(RtCopyMemC)
|
||||
#endif
|
||||
VOID
|
||||
EFIAPI
|
||||
RUNTIMEFUNCTION
|
||||
RtCopyMemC (
|
||||
IN VOID *Dest,
|
||||
IN CONST VOID *Src,
|
||||
IN UINTN len
|
||||
)
|
||||
{
|
||||
CHAR8 *d = (CHAR8*)Dest;
|
||||
CONST CHAR8 *s = (CONST CHAR8*)Src;
|
||||
|
||||
if (d == NULL || s == NULL || s == d)
|
||||
return;
|
||||
|
||||
/* CONST Src: UB if Src and Dest overlap */
|
||||
|
||||
while (len--)
|
||||
*d++ = *s++;
|
||||
}
|
||||
|
||||
#ifndef __GNUC__
|
||||
#pragma RUNTIME_CODE(RtCompareMem)
|
||||
#endif
|
||||
|
@ -69,13 +69,11 @@ RtStrnCpy (
|
||||
)
|
||||
// copy strings
|
||||
{
|
||||
CHAR16 CopySrc = *Src;
|
||||
CHAR16 *PCopySrc = &CopySrc;
|
||||
|
||||
UINTN Size = RtStrnLen(Src, Len);
|
||||
if (Size != Len)
|
||||
RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
|
||||
RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
|
||||
RtCopyMemC(Dest, Src, Size * sizeof(CHAR16));
|
||||
}
|
||||
|
||||
#ifndef __GNUC__
|
||||
@ -108,13 +106,11 @@ RtStpnCpy (
|
||||
)
|
||||
// copy strings
|
||||
{
|
||||
CHAR16 CopySrc = *Src;
|
||||
CHAR16 *PCopySrc = &CopySrc;
|
||||
|
||||
UINTN Size = RtStrnLen(Src, Len);
|
||||
if (Size != Len)
|
||||
RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
|
||||
RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
|
||||
RtCopyMemC(Dest, Src, Size * sizeof(CHAR16));
|
||||
return Dest + Size;
|
||||
}
|
||||
|
||||
@ -143,12 +139,10 @@ RtStrnCat (
|
||||
)
|
||||
{
|
||||
UINTN DestSize, Size;
|
||||
CHAR16 CopySrc = *Src;
|
||||
CHAR16 *PCopySrc = &CopySrc;
|
||||
|
||||
DestSize = RtStrLen(Dest);
|
||||
Size = RtStrnLen(Src, Len);
|
||||
RtCopyMem(Dest + DestSize, PCopySrc, Size * sizeof(CHAR16));
|
||||
RtCopyMemC(Dest + DestSize, Src, Size * sizeof(CHAR16));
|
||||
Dest[DestSize + Size] = '\0';
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user