mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:37:44 +00:00
Kernel: Add ptrace commands for reading/writing the debug registers
This adds PT_PEEKDEBUG and PT_POKEDEBUG to allow for reading/writing the debug registers, and updates the Kernel's debug handler to read the new information from the debug status register.
This commit is contained in:
parent
97a4c627cb
commit
3123ffb19d
6 changed files with 79 additions and 5 deletions
|
@ -363,14 +363,15 @@ void debug_handler(TrapFrame* trap)
|
|||
PANIC("Debug exception in ring 0");
|
||||
}
|
||||
constexpr u8 REASON_SINGLESTEP = 14;
|
||||
bool is_reason_singlestep = (read_dr6() & (1 << REASON_SINGLESTEP));
|
||||
if (!is_reason_singlestep)
|
||||
auto debug_status = read_dr6();
|
||||
auto should_trap_mask = (1 << REASON_SINGLESTEP) | 0b1111;
|
||||
if ((debug_status & should_trap_mask) == 0)
|
||||
return;
|
||||
|
||||
if (auto tracer = process.tracer()) {
|
||||
tracer->set_regs(regs);
|
||||
}
|
||||
current_thread->send_urgent_signal_to_self(SIGTRAP);
|
||||
write_dr6(debug_status & ~(should_trap_mask));
|
||||
}
|
||||
|
||||
EH_ENTRY_NO_CODE(3, breakpoint);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue