diff --git a/Kernel/Arch/aarch64/RegisterState.h b/Kernel/Arch/aarch64/RegisterState.h index 128c93bcb4..40edbf2d99 100644 --- a/Kernel/Arch/aarch64/RegisterState.h +++ b/Kernel/Arch/aarch64/RegisterState.h @@ -56,16 +56,20 @@ static_assert(AssertSize()); inline void copy_kernel_registers_into_ptrace_registers(PtraceRegisters& ptrace_regs, RegisterState const& kernel_regs) { - (void)ptrace_regs; - (void)kernel_regs; - TODO_AARCH64(); + for (auto i = 0; i < 31; i++) + ptrace_regs.x[i] = kernel_regs.x[i]; + + ptrace_regs.sp = kernel_regs.userspace_sp(); + ptrace_regs.pc = kernel_regs.ip(); } inline void copy_ptrace_registers_into_kernel_registers(RegisterState& kernel_regs, PtraceRegisters const& ptrace_regs) { - (void)kernel_regs; - (void)ptrace_regs; - TODO_AARCH64(); + for (auto i = 0; i < 31; i++) + kernel_regs.x[i] = ptrace_regs.x[i]; + + kernel_regs.set_userspace_sp(ptrace_regs.sp); + kernel_regs.set_ip(ptrace_regs.pc); } struct DebugRegisterState {