TianoCore EDK2 master
|
#include <GdbStubInternal.h>
Go to the source code of this file.
Variables | |
EFI_EXCEPTION_TYPE_ENTRY | gExceptionType [] |
UINTN | gRegisterOffsets [] |
Processor specific parts of the GDB stub
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file Processor.c.
VOID AddSingleStep | ( | IN EFI_SYSTEM_CONTEXT | SystemContext | ) |
Insert Single Step in the SystemContext
SystemContext | Register content at time of the exception |
Definition at line 329 of file Processor.c.
CHAR8 * BasicReadRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | RegNumber, | ||
IN CHAR8 * | OutBufPtr | ||
) |
Adds the RegNumber-th register's value to the output buffer, starting at the given OutBufPtr
SystemContext | Register content at time of the exception |
RegNumber | the number of the register that we want to read |
OutBufPtr | pointer to the output buffer's end. the new data will be added from this point on. |
the | pointer to the next character of the output buffer that is available to be written on. |
Definition at line 130 of file Processor.c.
CHAR8 * BasicWriteRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | RegNumber, | ||
IN CHAR8 * | InBufPtr | ||
) |
Adds the RegNumber-th register's value to the output buffer, starting at the given OutBufPtr
SystemContext | Register content at time of the exception |
RegNumber | the number of the register that we want to write |
InBufPtr | pointer to the output buffer. the new data will be extracted from the input buffer from this point on. |
the | pointer to the next character of the input buffer that can be used |
Definition at line 211 of file Processor.c.
BOOLEAN CheckIsa | ( | IN EFI_INSTRUCTION_SET_ARCHITECTURE | Isa | ) |
Check to see if the ISA is supported. ISA = Instruction Set Architecture
TRUE | if Isa is supported |
Definition at line 96 of file Processor.c.
VOID EFIAPI ContinueAtAddress | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | PacketData | ||
) |
‘c [addr ]’ Continue. addr is Address to resume. If addr is omitted, resume at current Address.
SystemContext | Register content at time of the exception |
Definition at line 357 of file Processor.c.
Parses Length and returns the length which DR7 LENn field accepts. For example: If we receive 1-Byte length then we should return 0. Zero gets written to DR7 LENn field.
Length | Breakpoint length in Bytes (1 byte, 2 byte, 4 byte) |
Length | Appropriate converted values which DR7 LENn field accepts. |
Definition at line 503 of file Processor.c.
EFI_STATUS DisableDebugRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | Register | ||
) |
Disables the particular debug register.
SystemContext | Register content at time of the exception |
Register | Register to be disabled |
EFI_STATUS | Appropriate status value. |
Definition at line 713 of file Processor.c.
EFI_STATUS EnableDebugRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | Register, | ||
IN UINTN | Address, | ||
IN UINTN | Length, | ||
IN UINTN | Type | ||
) |
Enables the debug register. Writes Address value to appropriate DR0-3 register. Sets LENn, Gn, RWn bits in DR7 register.
SystemContext | Register content at time of the exception |
Register | Register value (0 - 3) |
Address | Breakpoint address value |
Type | Breakpoint type (Instruction, Data write, Data read or write etc.) |
EFI_STATUS | Appropriate status value. |
Definition at line 571 of file Processor.c.
EFI_STATUS FindMatchingDebugRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | Address, | ||
IN UINTN | Length, | ||
IN UINTN | Type, | ||
OUT UINTN * | Register | ||
) |
Returns register number 0 - 3 for the matching debug register. This function compares incoming Address, Type, Length and if there is a match then it returns the appropriate register number. In case of mismatch, function returns EFI_NOT_FOUND message.
SystemContext | Register content at time of the exception |
Address | Breakpoint address value |
Length | Breakpoint length value |
Type | Breakpoint type (Instruction, Data write, Data read or write etc.) |
Register | Register value to be returned |
EFI_STATUS | Appropriate status value. |
Definition at line 648 of file Processor.c.
EFI_STATUS FindNextFreeDebugRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
OUT UINTN * | Register | ||
) |
Finds the next free debug register. If all the registers are occupied then EFI_OUT_OF_RESOURCES is returned.
SystemContext | Register content at time of the exception |
Register | Register value (0 - 3 for the first free debug register) |
EFI_STATUS | Appropriate status value. |
Definition at line 533 of file Processor.c.
UINTN * FindPointerToRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | RegNumber | ||
) |
This takes in the register number and the System Context, and returns a pointer to the RegNumber-th register in gdb ordering It is, by default, set to find the register pointer of the X64 member
SystemContext | Register content at time of the exception |
RegNumber | The register to which we want to find a pointer |
the | pointer to the RegNumber-th pointer |
Definition at line 111 of file Processor.c.
UINTN GetBreakpointDataAddress | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | BreakpointNumber | ||
) |
Returns breakpoint data address from DR0-DR3 based on the input breakpoint number
SystemContext | Register content at time of the exception |
BreakpointNumber | Breakpoint number |
Address | Data address from DR0-DR3 based on the breakpoint number. |
Definition at line 399 of file Processor.c.
UINTN GetBreakpointDetected | ( | IN EFI_SYSTEM_CONTEXT | SystemContext | ) |
Returns currently detected breakpoint value based on the register DR6 B0-B3 field. If no breakpoint is detected then it returns 0.
SystemContext | Register content at time of the exception |
{1-4} | Currently detected breakpoint value |
0 | No breakpoint detected. |
Definition at line 433 of file Processor.c.
BREAK_TYPE GetBreakpointType | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN UINTN | BreakpointNumber | ||
) |
Returns Breakpoint type (InstructionExecution, DataWrite, DataRead or DataReadWrite) based on the Breakpoint number
SystemContext | Register content at time of the exception |
BreakpointNumber | Breakpoint number |
BREAK_TYPE | Breakpoint type value read from register DR7 RWn field. For unknown value, it returns NotSupported. |
Definition at line 469 of file Processor.c.
VOID InitializeProcessor | ( | VOID | ) |
Definition at line 924 of file Processor.c.
VOID EFIAPI InsertBreakPoint | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | PacketData | ||
) |
‘Z1, [addr], [length]’ ‘Z2, [addr], [length]’ ‘Z3, [addr], [length]’ ‘Z4, [addr], [length]’
Insert hardware breakpoint/watchpoint at address addr of size length
SystemContext | Register content at time of the exception |
*PacketData | Pointer to the Payload data for the packet |
Definition at line 768 of file Processor.c.
UINTN MaxEfiException | ( | VOID | ) |
Return the number of entries in the gExceptionType[]
UINTN,the | number of entries in the gExceptionType[] array. |
Definition at line 69 of file Processor.c.
UINTN MaxRegisterCount | ( | VOID | ) |
Return the number of entries in the gRegisters[]
UINTN,the | number of entries (registers) in the gRegisters[] array. |
Definition at line 82 of file Processor.c.
VOID EFIAPI ReadGeneralRegisters | ( | IN EFI_SYSTEM_CONTEXT | SystemContext | ) |
‘g’ Reads the general registers into an output buffer and sends it as a packet
SystemContext | Register content at time of the exception |
Definition at line 184 of file Processor.c.
VOID ReadNthRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | InBuffer | ||
) |
‘p n’ Reads the n-th register's value into an output buffer and sends it as a packet
SystemContext | Register content at time of the exception |
InBuffer | Pointer to the input buffer received from gdb server |
Definition at line 154 of file Processor.c.
VOID EFIAPI RemoveBreakPoint | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | PacketData | ||
) |
‘z1, [addr], [length]’ ‘z2, [addr], [length]’ ‘z3, [addr], [length]’ ‘z4, [addr], [length]’
Remove hardware breakpoint/watchpoint at address addr of size length
*PacketData | Pointer to the Payload data for the packet |
Definition at line 852 of file Processor.c.
VOID RemoveSingleStep | ( | IN EFI_SYSTEM_CONTEXT | SystemContext | ) |
Remove Single Step in the SystemContext
SystemContext | Register content at time of the exception |
Definition at line 342 of file Processor.c.
VOID EFIAPI SingleStep | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | PacketData | ||
) |
‘s [addr ]’ Single step. addr is the Address at which to resume. If addr is omitted, resume at same Address.
SystemContext | Register content at time of the exception |
Definition at line 375 of file Processor.c.
BOOLEAN ValidateAddress | ( | IN VOID * | Address | ) |
Definition at line 931 of file Processor.c.
BOOLEAN ValidateException | ( | IN EFI_EXCEPTION_TYPE | ExceptionType, |
IN OUT EFI_SYSTEM_CONTEXT | SystemContext | ||
) |
Definition at line 939 of file Processor.c.
VOID EFIAPI WriteGeneralRegisters | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | InBuffer | ||
) |
‘G XX...’ Writes the new values received into the input buffer to the general registers
SystemContext | Register content at time of the exception |
InBuffer | Pointer to the input buffer received from gdb server |
pointer to the input buffer
Definition at line 294 of file Processor.c.
VOID EFIAPI WriteNthRegister | ( | IN EFI_SYSTEM_CONTEXT | SystemContext, |
IN CHAR8 * | InBuffer | ||
) |
‘P n...=r...’ Writes the new value of n-th register received into the input buffer to the n-th register
SystemContext | Register content at time of the exception |
InBuffer | Pointer to the input buffer received from gdb server |
Definition at line 255 of file Processor.c.
EFI_EXCEPTION_TYPE_ENTRY gExceptionType[] |
Definition at line 15 of file Processor.c.
UINTN gRegisterOffsets[] |
Definition at line 36 of file Processor.c.