Skip to content

Commit 36362b9

Browse files
FireFox317IdanHo
authored andcommitted
Kernel/aarch64: Implement copying of kernel regs into ptrace regs
And also vice versa. Contributed by konrad, thanks for that.
1 parent 200e91c commit 36362b9

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

Kernel/Arch/aarch64/RegisterState.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,20 @@ static_assert(AssertSize<RegisterState, REGISTER_STATE_SIZE>());
5656

5757
inline void copy_kernel_registers_into_ptrace_registers(PtraceRegisters& ptrace_regs, RegisterState const& kernel_regs)
5858
{
59-
(void)ptrace_regs;
60-
(void)kernel_regs;
61-
TODO_AARCH64();
59+
for (auto i = 0; i < 31; i++)
60+
ptrace_regs.x[i] = kernel_regs.x[i];
61+
62+
ptrace_regs.sp = kernel_regs.userspace_sp();
63+
ptrace_regs.pc = kernel_regs.ip();
6264
}
6365

6466
inline void copy_ptrace_registers_into_kernel_registers(RegisterState& kernel_regs, PtraceRegisters const& ptrace_regs)
6567
{
66-
(void)kernel_regs;
67-
(void)ptrace_regs;
68-
TODO_AARCH64();
68+
for (auto i = 0; i < 31; i++)
69+
kernel_regs.x[i] = ptrace_regs.x[i];
70+
71+
kernel_regs.set_userspace_sp(ptrace_regs.sp);
72+
kernel_regs.set_ip(ptrace_regs.pc);
6973
}
7074

7175
struct DebugRegisterState {

0 commit comments

Comments
 (0)