From 36362b96796569c44c759df6bac16515e6e8036a Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Thu, 23 Feb 2023 00:06:20 +0100 Subject: [PATCH] Kernel/aarch64: Implement copying of kernel regs into ptrace regs And also vice versa. Contributed by konrad, thanks for that. --- Kernel/Arch/aarch64/RegisterState.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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 {