MdePkg/Include/Protocol/DebugSupport.h File Reference


Data Structures

struct  EFI_FX_SAVE_STATE_IA32
struct  EFI_SYSTEM_CONTEXT_IA32
struct  EFI_FX_SAVE_STATE_X64
struct  EFI_SYSTEM_CONTEXT_X64
struct  EFI_SYSTEM_CONTEXT_IPF
struct  EFI_SYSTEM_CONTEXT_EBC
struct  EFI_SYSTEM_CONTEXT_ARM
struct  EFI_SYSTEM_CONTEXT_AARCH64
union  EFI_SYSTEM_CONTEXT
struct  _EFI_DEBUG_SUPPORT_PROTOCOL

Defines

#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID
#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
#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
#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
#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
 Opcode out of range.
#define EXCEPT_EBC_STACK_FAULT   6
#define EXCEPT_EBC_ALIGNMENT_CHECK   7
#define EXCEPT_EBC_INSTRUCTION_ENCODING   8
 Malformed instruction.
#define EXCEPT_EBC_BAD_BREAK   9
 BREAK 0 or undefined BREAK.
#define EXCEPT_EBC_STEP   10
#define MAX_EBC_EXCEPTION   EXCEPT_EBC_STEP
#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
#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS   0
#define EXCEPT_AARCH64_IRQ   1
#define EXCEPT_AARCH64_FIQ   2
#define EXCEPT_AARCH64_SERROR   3
#define MAX_AARCH64_EXCEPTION   EXCEPT_AARCH64_SERROR

Typedefs

typedef struct
_EFI_DEBUG_SUPPORT_PROTOCOL 
EFI_DEBUG_SUPPORT_PROTOCOL
typedef INTN EFI_EXCEPTION_TYPE
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 EFI_STATUS(EFIAPI * EFI_GET_MAXIMUM_PROCESSOR_INDEX )(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex)
typedef EFI_STATUS(EFIAPI * EFI_REGISTER_PERIODIC_CALLBACK )(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback)
typedef EFI_STATUS(EFIAPI * EFI_REGISTER_EXCEPTION_CALLBACK )(IN 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 EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN VOID *Start, IN UINT64 Length)

Enumerations

enum  EFI_INSTRUCTION_SET_ARCHITECTURE {
  IsaIa32 = IMAGE_FILE_MACHINE_I386, IsaX64 = IMAGE_FILE_MACHINE_X64, IsaIpf = IMAGE_FILE_MACHINE_IA64, IsaEbc = IMAGE_FILE_MACHINE_EBC,
  IsaArm = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED, IsaAArch64 = IMAGE_FILE_MACHINE_ARM64
}

Variables

EFI_GUID gEfiDebugSupportProtocolGuid

Detailed Description

DebugSupport protocol and supporting definitions as defined in the UEFI2.4 specification.

The DebugSupport protocol is used by source level debuggers to abstract the processor and handle context save and restore operations.

Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that 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.


Define Documentation

#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID

Value:

{ \
    0x2755590C, 0x6F3C, 0x42FA, {0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
  }
Debug Support protocol {2755590C-6F3C-42FA-9EA4-A3BA543CDA25}.

#define EXCEPT_AARCH64_FIQ   2

#define EXCEPT_AARCH64_IRQ   1

#define EXCEPT_AARCH64_SERROR   3

#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS   0

AARCH64 processor exception types.

#define EXCEPT_ARM_DATA_ABORT   4

#define EXCEPT_ARM_FIQ   7

#define EXCEPT_ARM_IRQ   6

#define EXCEPT_ARM_PREFETCH_ABORT   3

#define EXCEPT_ARM_RESERVED   5

#define EXCEPT_ARM_RESET   0

ARM processor exception types.

#define EXCEPT_ARM_SOFTWARE_INTERRUPT   2

#define EXCEPT_ARM_UNDEFINED_INSTRUCTION   1

#define EXCEPT_EBC_ALIGNMENT_CHECK   7

#define EXCEPT_EBC_BAD_BREAK   9

BREAK 0 or undefined BREAK.

#define EXCEPT_EBC_BREAKPOINT   3

#define EXCEPT_EBC_DEBUG   2

#define EXCEPT_EBC_DIVIDE_ERROR   1

#define EXCEPT_EBC_INSTRUCTION_ENCODING   8

Malformed instruction.

#define EXCEPT_EBC_INVALID_OPCODE   5

Opcode out of range.

#define EXCEPT_EBC_OVERFLOW   4

#define EXCEPT_EBC_STACK_FAULT   6

#define EXCEPT_EBC_STEP   10

To support debug stepping.

#define EXCEPT_EBC_UNDEFINED   0

EBC processor exception types.

#define EXCEPT_IA32_ALIGNMENT_CHECK   17

#define EXCEPT_IA32_BOUND   5

#define EXCEPT_IA32_BREAKPOINT   3

#define EXCEPT_IA32_DEBUG   1

#define EXCEPT_IA32_DIVIDE_ERROR   0

IA-32 processor exception types.

#define EXCEPT_IA32_DOUBLE_FAULT   8

#define EXCEPT_IA32_FP_ERROR   16

#define EXCEPT_IA32_GP_FAULT   13

#define EXCEPT_IA32_INVALID_OPCODE   6

#define EXCEPT_IA32_INVALID_TSS   10

#define EXCEPT_IA32_MACHINE_CHECK   18

#define EXCEPT_IA32_NMI   2

#define EXCEPT_IA32_OVERFLOW   4

#define EXCEPT_IA32_PAGE_FAULT   14

#define EXCEPT_IA32_SEG_NOT_PRESENT   11

#define EXCEPT_IA32_SIMD   19

#define EXCEPT_IA32_STACK_FAULT   12

#define EXCEPT_IPF_ALT_DATA_TLB   4

#define EXCEPT_IPF_ALT_INSTRUCTION_TLB   3

#define EXCEPT_IPF_BREAKPOINT   11

#define EXCEPT_IPF_DATA_ACCESS_BIT   10

#define EXCEPT_IPF_DATA_ACCESS_RIGHTS   23

#define EXCEPT_IPF_DATA_KEY_MISSED   7

#define EXCEPT_IPF_DATA_NESTED_TLB   5

#define EXCEPT_IPF_DATA_TLB   2

#define EXCEPT_IPF_DEBUG   29

#define EXCEPT_IPF_DIRTY_BIT   8

#define EXCEPT_IPF_DISABLED_FP_REGISTER   25

#define EXCEPT_IPF_EXTERNAL_INTERRUPT   12

#define EXCEPT_IPF_FP_FAULT   32

#define EXCEPT_IPF_FP_TRAP   33

#define EXCEPT_IPF_GENERAL_EXCEPTION   24

#define EXCEPT_IPF_IA32_EXCEPTION   45

#define EXCEPT_IPF_IA32_INTERCEPT   46

#define EXCEPT_IPF_IA32_INTERRUPT   47

#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT   9

#define EXCEPT_IPF_INSTRUCTION_ACCESS_RIGHTS   22

#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED   6

#define EXCEPT_IPF_INSTRUCTION_TLB   1

#define EXCEPT_IPF_KEY_PERMISSION   21

#define EXCEPT_IPF_LOWER_PRIVILEGE_TRANSFER_TRAP   34

#define EXCEPT_IPF_NAT_CONSUMPTION   26

#define EXCEPT_IPF_PAGE_NOT_PRESENT   20

#define EXCEPT_IPF_SINGLE_STEP   36

#define EXCEPT_IPF_SPECULATION   27

#define EXCEPT_IPF_TAKEN_BRANCH   35

#define EXCEPT_IPF_UNALIGNED_REFERENCE   30

#define EXCEPT_IPF_UNSUPPORTED_DATA_REFERENCE   31

#define EXCEPT_IPF_VHTP_TRANSLATION   0

Itanium Processor Family Exception types.

#define EXCEPT_X64_ALIGNMENT_CHECK   17

#define EXCEPT_X64_BOUND   5

#define EXCEPT_X64_BREAKPOINT   3

#define EXCEPT_X64_DEBUG   1

#define EXCEPT_X64_DIVIDE_ERROR   0

x64 processor exception types.

#define EXCEPT_X64_DOUBLE_FAULT   8

#define EXCEPT_X64_FP_ERROR   16

#define EXCEPT_X64_GP_FAULT   13

#define EXCEPT_X64_INVALID_OPCODE   6

#define EXCEPT_X64_INVALID_TSS   10

#define EXCEPT_X64_MACHINE_CHECK   18

#define EXCEPT_X64_NMI   2

#define EXCEPT_X64_OVERFLOW   4

#define EXCEPT_X64_PAGE_FAULT   14

#define EXCEPT_X64_SEG_NOT_PRESENT   11

#define EXCEPT_X64_SIMD   19

#define EXCEPT_X64_STACK_FAULT   12

#define MAX_AARCH64_EXCEPTION   EXCEPT_AARCH64_SERROR

For coding convenience, define the maximum valid ARM exception.

#define MAX_ARM_EXCEPTION   EXCEPT_ARM_FIQ

For coding convenience, define the maximum valid ARM exception.

#define MAX_EBC_EXCEPTION   EXCEPT_EBC_STEP

For coding convenience, define the maximum valid EBC exception.


Typedef Documentation

typedef VOID(EFIAPI * EFI_EXCEPTION_CALLBACK)(IN EFI_EXCEPTION_TYPE ExceptionType, IN OUT EFI_SYSTEM_CONTEXT SystemContext)

Registers and enables an exception callback function for the specified exception.

Parameters:
ExceptionType Exception types in EBC, IA-32, x64, or IPF.
SystemContext Exception content.

Processor exception to be hooked. All exception types for IA32, X64, Itanium and EBC processors are defined.

typedef EFI_STATUS(EFIAPI * EFI_GET_MAXIMUM_PROCESSOR_INDEX)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex)

Returns the maximum value that may be used for the ProcessorIndex parameter in RegisterPeriodicCallback() and RegisterExceptionCallback().

Parameters:
This A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
MaxProcessorIndex Pointer to a caller-allocated UINTN in which the maximum supported processor index is returned.
Return values:
EFI_SUCCESS The function completed successfully.

typedef EFI_STATUS(EFIAPI * EFI_INVALIDATE_INSTRUCTION_CACHE)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN VOID *Start, IN UINT64 Length)

Invalidates processor instruction cache for a memory range. Subsequent execution in this range causes a fresh memory fetch to retrieve code to be executed.

Parameters:
This A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
ProcessorIndex Specifies which processor's instruction cache is to be invalidated.
Start Specifies the physical base of the memory range to be invalidated.
Length Specifies the minimum number of bytes in the processor's instruction cache to invalidate.
Return values:
EFI_SUCCESS The function completed successfully.

typedef VOID(EFIAPI * EFI_PERIODIC_CALLBACK)(IN OUT EFI_SYSTEM_CONTEXT SystemContext)

Registers and enables the on-target debug agent's periodic entry point.

Parameters:
SystemContext Exception content.

typedef EFI_STATUS(EFIAPI * EFI_REGISTER_EXCEPTION_CALLBACK)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_EXCEPTION_CALLBACK ExceptionCallback, IN EFI_EXCEPTION_TYPE ExceptionType)

Registers a function to be called when a given processor exception occurs.

Parameters:
This A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
ProcessorIndex Specifies which processor the callback function applies to.
ExceptionCallback A pointer to a function of type EXCEPTION_CALLBACK that is called when the processor exception specified by ExceptionType occurs.
ExceptionType Specifies which processor exception to hook.
Return values:
EFI_SUCCESS The function completed successfully.
EFI_ALREADY_STARTED Non-NULL PeriodicCallback parameter when a callback function was previously registered.
EFI_OUT_OF_RESOURCES System has insufficient memory resources to register new callback function.

typedef EFI_STATUS(EFIAPI * EFI_REGISTER_PERIODIC_CALLBACK)(IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback)

Registers a function to be called back periodically in interrupt context.

Parameters:
This A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
ProcessorIndex Specifies which processor the callback function applies to.
PeriodicCallback A pointer to a function of type PERIODIC_CALLBACK that is the main periodic entry point of the debug agent.
Return values:
EFI_SUCCESS The function completed successfully.
EFI_ALREADY_STARTED Non-NULL PeriodicCallback parameter when a callback function was previously registered.
EFI_OUT_OF_RESOURCES System has insufficient memory resources to register new callback function.


Enumeration Type Documentation

Machine type definition

Enumerator:
IsaIa32  0x014C
IsaX64  0x8664
IsaIpf  0x0200
IsaEbc  0x0EBC
IsaArm  0x01c2
IsaAArch64  0xAA64


Variable Documentation


Generated on Wed Sep 23 16:24:22 2015 for MdePkg[ALL] by  doxygen 1.5.7.1