diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-10 23:40:15 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-10 23:40:15 +0100 |
| commit | 5fedb726774eb46d2aed9378b13bc296baf89333 (patch) | |
| tree | 7d8170999fa3db72fd7794110824b6e6d0299914 /dev/Kernel/src/HardwareThreadScheduler.cc | |
| parent | 6b63380f5f45891c5c27715cb290037d072ad212 (diff) | |
ADD: SMP tweaks on AMD64.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src/HardwareThreadScheduler.cc')
| -rw-r--r-- | dev/Kernel/src/HardwareThreadScheduler.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/dev/Kernel/src/HardwareThreadScheduler.cc b/dev/Kernel/src/HardwareThreadScheduler.cc index a94ad64c..0e9a2865 100644 --- a/dev/Kernel/src/HardwareThreadScheduler.cc +++ b/dev/Kernel/src/HardwareThreadScheduler.cc @@ -22,7 +22,7 @@ namespace Kernel /***********************************************************************************/ EXTERN Bool hal_check_stack(HAL::StackFramePtr frame_ptr); - EXTERN_C Bool mp_register_process(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, ProcessID pid); + EXTERN_C Bool mp_register_process(HAL::StackFramePtr frame, ProcessID pid); STATIC HardwareThreadScheduler kHardwareThreadScheduler; @@ -109,12 +109,15 @@ namespace Kernel /// @retval true stack was changed, code is running. /// @retval false stack is invalid, previous code is running. /***********************************************************************************/ - Bool HardwareThread::Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid) + Bool HardwareThread::Switch(VoidPtr image_ptr, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid) { this->fStack = frame; this->fSourcePID = pid; - Bool ret = mp_register_process(image, stack_ptr, fStack, this->fSourcePID); + fStack->BP = reinterpret_cast<UIntPtr>(image_ptr); + fStack->SP = reinterpret_cast<UIntPtr>(stack_ptr); + + Bool ret = mp_register_process(fStack, this->fSourcePID); if (ret) this->Busy(YES); |
