From 4ffae9e1f0133a3118d08892bfa63e2c543aa31e Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Wed, 26 Nov 2025 04:11:11 +0100 Subject: [PATCH] set stackpointers in thread obj --- kernel/thread/thread.cc | 10 +++++----- kernel/thread/thread.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/kernel/thread/thread.cc b/kernel/thread/thread.cc index 23a352b..72b7751 100644 --- a/kernel/thread/thread.cc +++ b/kernel/thread/thread.cc @@ -36,14 +36,14 @@ void Thread::kickoffUsermode (Thread *object){ } Thread::Thread (bool kernel, void * start): queue_link(nullptr), isKernel(kernel), start(start), id(idCounter++), kill_flag(false){ - void *tos = reinterpret_cast(reserved_stack_space_isr + STACK_SIZE); - prepareContext(tos, context, kickoff, reinterpret_cast(this), 0, 0); + StackPointer.isr = reinterpret_cast(reserved_stack_space_isr + STACK_SIZE); + StackPointer.user = reinterpret_cast(reserved_stack_space_user + STACK_SIZE); + prepareContext(StackPointer.isr, context, kickoff, reinterpret_cast(this), 0, 0); } Thread::Thread() : queue_link(nullptr), id(idCounter++), kill_flag(false) { - void *tos = reinterpret_cast(reserved_stack_space + STACK_SIZE); - prepareContext(tos, context, kickoff, reinterpret_cast(this), 0, - 0); + void *tos = reinterpret_cast(reserved_stack_space_isr + STACK_SIZE); + prepareContext(tos, context, kickoff, reinterpret_cast(this), 0, 0); } void Thread::resume(Thread *next) { diff --git a/kernel/thread/thread.h b/kernel/thread/thread.h index 7cfa557..765c435 100644 --- a/kernel/thread/thread.h +++ b/kernel/thread/thread.h @@ -28,7 +28,7 @@ class Thread { /*! \brief pointer to the next element of the readylist */ Thread* queue_link; - bool isKernel; + bool isKernel = true; void* start; friend class Queue;