From 63a91d6971c4b108da3f6861dc3c78eaa76cec9e Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sun, 16 Oct 2022 21:51:08 +0200 Subject: [PATCH] Kernel: Add more AARCH64 stubs --- Kernel/Arch/aarch64/Processor.cpp | 15 +++++++++++++++ Kernel/Arch/aarch64/Processor.h | 6 ++++++ Kernel/Arch/aarch64/RegisterState.h | 10 ++++++++++ Kernel/Process.cpp | 3 +++ 4 files changed, 34 insertions(+) diff --git a/Kernel/Arch/aarch64/Processor.cpp b/Kernel/Arch/aarch64/Processor.cpp index d001616f1b..f84354d8ca 100644 --- a/Kernel/Arch/aarch64/Processor.cpp +++ b/Kernel/Arch/aarch64/Processor.cpp @@ -5,6 +5,7 @@ */ #include +#include #include #include @@ -58,4 +59,18 @@ u32 Processor::clear_critical() TODO_AARCH64(); } +u32 Processor::smp_wake_n_idle_processors(u32 wake_count) +{ + (void)wake_count; + TODO_AARCH64(); +} + +ErrorOr> Processor::capture_stack_trace(Thread& thread, size_t max_frames) +{ + (void)thread; + (void)max_frames; + TODO_AARCH64(); + return Vector {}; +} + } diff --git a/Kernel/Arch/aarch64/Processor.h b/Kernel/Arch/aarch64/Processor.h index 18890320dc..2f353314ae 100644 --- a/Kernel/Arch/aarch64/Processor.h +++ b/Kernel/Arch/aarch64/Processor.h @@ -160,6 +160,8 @@ public: VERIFY(!Processor::in_critical()); } + ALWAYS_INLINE static FPUState const& clean_fpu_state() { TODO_AARCH64(); } + // FIXME: Actually return the idle thread once aarch64 supports threading. ALWAYS_INLINE static Thread* idle_thread() { @@ -182,8 +184,12 @@ public: TODO_AARCH64(); } + static u32 smp_wake_n_idle_processors(u32 wake_count); + [[noreturn]] static void halt(); + static ErrorOr> capture_stack_trace(Thread& thread, size_t max_frames = 0); + private: u32 m_in_critical { 0 }; diff --git a/Kernel/Arch/aarch64/RegisterState.h b/Kernel/Arch/aarch64/RegisterState.h index da558afb4e..7aab709d28 100644 --- a/Kernel/Arch/aarch64/RegisterState.h +++ b/Kernel/Arch/aarch64/RegisterState.h @@ -15,7 +15,17 @@ namespace Kernel { struct RegisterState { FlatPtr userspace_sp() const { return 0; } + void set_userspace_sp(FlatPtr value) + { + (void)value; + TODO_AARCH64(); + } FlatPtr ip() const { return 0; } + void set_ip(FlatPtr value) + { + (void)value; + TODO_AARCH64(); + } }; inline void copy_kernel_registers_into_ptrace_registers(PtraceRegisters& ptrace_regs, RegisterState const& kernel_regs) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 4ed78ac123..dc7ccb6e9e 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -189,6 +189,9 @@ LockRefPtr Process::create_kernel_process(LockRefPtr& first_thr first_thread->regs().esp = FlatPtr(entry_data); // entry function argument is expected to be in regs.esp #elif ARCH(X86_64) first_thread->regs().rdi = FlatPtr(entry_data); // entry function argument is expected to be in regs.rdi +#elif ARCH(AARCH64) + (void)entry_data; + TODO_AARCH64(); #else # error Unknown architecture #endif