set stackpointers in thread obj

This commit is contained in:
2025-11-26 04:11:11 +01:00
parent 2b0257f849
commit 4ffae9e1f0
2 changed files with 6 additions and 6 deletions

View File

@@ -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){ Thread::Thread (bool kernel, void * start): queue_link(nullptr), isKernel(kernel), start(start), id(idCounter++), kill_flag(false){
void *tos = reinterpret_cast<void *>(reserved_stack_space_isr + STACK_SIZE); StackPointer.isr = reinterpret_cast<void *>(reserved_stack_space_isr + STACK_SIZE);
prepareContext(tos, context, kickoff, reinterpret_cast<uintptr_t>(this), 0, 0); StackPointer.user = reinterpret_cast<void *>(reserved_stack_space_user + STACK_SIZE);
prepareContext(StackPointer.isr, context, kickoff, reinterpret_cast<uintptr_t>(this), 0, 0);
} }
Thread::Thread() : queue_link(nullptr), id(idCounter++), kill_flag(false) { Thread::Thread() : queue_link(nullptr), id(idCounter++), kill_flag(false) {
void *tos = reinterpret_cast<void *>(reserved_stack_space + STACK_SIZE); void *tos = reinterpret_cast<void *>(reserved_stack_space_isr + STACK_SIZE);
prepareContext(tos, context, kickoff, reinterpret_cast<uintptr_t>(this), 0, prepareContext(tos, context, kickoff, reinterpret_cast<uintptr_t>(this), 0, 0);
0);
} }
void Thread::resume(Thread *next) { void Thread::resume(Thread *next) {

View File

@@ -28,7 +28,7 @@ class Thread {
/*! \brief pointer to the next element of the readylist /*! \brief pointer to the next element of the readylist
*/ */
Thread* queue_link; Thread* queue_link;
bool isKernel; bool isKernel = true;
void* start; void* start;
friend class Queue<Thread>; friend class Queue<Thread>;