summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/src/HardwareThreadScheduler.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-10 23:40:15 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-10 23:40:15 +0100
commit5fedb726774eb46d2aed9378b13bc296baf89333 (patch)
tree7d8170999fa3db72fd7794110824b6e6d0299914 /dev/Kernel/src/HardwareThreadScheduler.cc
parent6b63380f5f45891c5c27715cb290037d072ad212 (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.cc9
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);