#include <linux/compiler.h>
#include <uapi/asm/ptrace.h>
Go to the source code of this file.
#define arch_has_single_step |
( |
| ) |
(1) |
#define PT_FLAGS_DISABLE_IRQ 1 /* on return to kernel, disable irqs */ |
#define PT_FLAGS_RESTORE_REGS 4 /* restore callee-save regs on return */ |
#define PT_TRACE_MIGRATE 0x00080000 |
#define SINGLESTEP_STATE_MASK_IS_ENABLED 0x1 |
#define SINGLESTEP_STATE_MASK_UPDATE 0x2 |
#define SINGLESTEP_STATE_TARGET_LB 2 |
#define SINGLESTEP_STATE_TARGET_UB 7 |
single_step_once() - entry point when single stepping has been triggered. : The machine register state
When we arrive at this routine via a trampoline, the single step engine copies the executing bundle to the single step buffer. If the instruction is a condition branch, then the target is reset to one past the next instruction. If the instruction sets the lr, then that is noted. If the instruction is a jump or call, then the new target pc is preserved and the current bundle instruction set to null.
The necessary post-single-step rewriting information is stored in single_step_state-> We use data segment values because the stack will be rewound when we run the rewritten single-stepped instruction.
Definition at line 305 of file single_step.c.