set stackpointers in thread obj
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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>;
|
||||||
|
|||||||
Reference in New Issue
Block a user