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;