From ec765544a5b587e1222e9d5ea81d9f4878b45c80 Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Wed, 22 Feb 2023 19:04:16 +0100 Subject: [PATCH] Kernel/aarch64: Add getters/setters in RegisterState and ThreadRegisters Specifically this commit implements two setters set_userspace_sp and set_ip in RegisterState.h, and also adds a stack pointer getter (sp) in ThreadRegisters.h. Contributed by konrad, thanks for that. --- Kernel/Arch/aarch64/RegisterState.h | 6 ++---- Kernel/Arch/aarch64/ThreadRegisters.h | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Kernel/Arch/aarch64/RegisterState.h b/Kernel/Arch/aarch64/RegisterState.h index 40edbf2d99..279e237c68 100644 --- a/Kernel/Arch/aarch64/RegisterState.h +++ b/Kernel/Arch/aarch64/RegisterState.h @@ -24,14 +24,12 @@ struct RegisterState { FlatPtr userspace_sp() const { return sp_el0; } void set_userspace_sp(FlatPtr value) { - (void)value; - TODO_AARCH64(); + sp_el0 = value; } FlatPtr ip() const { return elr_el1; } void set_ip(FlatPtr value) { - (void)value; - TODO_AARCH64(); + elr_el1 = value; } FlatPtr bp() const { return x[29]; } diff --git a/Kernel/Arch/aarch64/ThreadRegisters.h b/Kernel/Arch/aarch64/ThreadRegisters.h index 217f446c99..94130cfeff 100644 --- a/Kernel/Arch/aarch64/ThreadRegisters.h +++ b/Kernel/Arch/aarch64/ThreadRegisters.h @@ -22,6 +22,7 @@ struct ThreadRegisters { FlatPtr ip() const { return elr_el1; } void set_ip(FlatPtr value) { elr_el1 = value; } + FlatPtr sp() const { return sp_el0; } void set_sp(FlatPtr value) { sp_el0 = value; } void set_initial_state(bool is_kernel_process, Memory::AddressSpace& space, FlatPtr kernel_stack_top)