summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit/HALKit
diff options
context:
space:
mode:
authorAmlal <amlal.elmahrouss@icloud.com>2024-10-29 07:11:56 +0100
committerAmlal <amlal.elmahrouss@icloud.com>2024-10-29 07:11:56 +0100
commitc08af30448618c5d1950dc1fa0fb1685782e7b22 (patch)
treebc12b43a94fe4d4ff60b0f7c17100a179d95d0dc /dev/ZKAKit/HALKit
parent0511c53e648e5f253cd9e83c9e211aa6600db377 (diff)
FIX: Fix scheduler crash (1/2)
- UserProcessScheduler has been improved and cleaned up. - Same goes for the HardwareThreadScheduler Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/HALKit')
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalDescriptorLoader.cc6
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalInterruptAPI.asm2
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc29
-rw-r--r--dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc2
-rw-r--r--dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc12
5 files changed, 16 insertions, 35 deletions
diff --git a/dev/ZKAKit/HALKit/AMD64/HalDescriptorLoader.cc b/dev/ZKAKit/HALKit/AMD64/HalDescriptorLoader.cc
index 5f7bde36..20177eba 100644
--- a/dev/ZKAKit/HALKit/AMD64/HalDescriptorLoader.cc
+++ b/dev/ZKAKit/HALKit/AMD64/HalDescriptorLoader.cc
@@ -7,6 +7,8 @@
#include <ArchKit/ArchKit.h>
#include <HALKit/AMD64/Processor.h>
+#define kPITDefaultTicks (1000U)
+
namespace Kernel::HAL
{
namespace Detail
@@ -20,7 +22,7 @@ namespace Kernel::HAL
STATIC Void hal_enable_pit(UInt16 ticks) noexcept
{
if (ticks == 0)
- ticks = 1000;
+ ticks = kPITDefaultTicks;
// Configure PIT to receieve scheduler interrupts.
@@ -82,7 +84,7 @@ namespace Kernel::HAL
Void IDTLoader::Load(Register64& idt)
{
- const Int16 kPITTickForScheduler = 100;
+ const Int16 kPITTickForScheduler = kPITDefaultTicks;
volatile ::Kernel::UIntPtr** ptr_ivt = (volatile ::Kernel::UIntPtr**)idt.Base;
diff --git a/dev/ZKAKit/HALKit/AMD64/HalInterruptAPI.asm b/dev/ZKAKit/HALKit/AMD64/HalInterruptAPI.asm
index 06066f41..49eb2bd8 100644
--- a/dev/ZKAKit/HALKit/AMD64/HalInterruptAPI.asm
+++ b/dev/ZKAKit/HALKit/AMD64/HalInterruptAPI.asm
@@ -340,6 +340,8 @@ mp_system_call_handler:
o64 sysret
hal_load_idt:
+ cli
+
lidt [rcx]
; Master PIC initialization
diff --git a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc
index 507ce217..a50eab32 100644
--- a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc
@@ -13,19 +13,6 @@
#include <CFKit/Property.h>
#include <Modules/FB/Text.h>
-namespace Kernel::HAL
-{
- /// @brief Gets the system cores using the MADT.
- /// @param rsp_ptr The 'RSD PTR' data structure.
- EXTERN void mp_get_cores(Kernel::voidPtr rsp_ptr) noexcept;
-} // namespace Kernel::HAL
-
-namespace Kernel
-{
- EXTERN UserProcessScheduler* kProcessScheduler;
- EXTERN HardwareThreadScheduler* kHardwareThreadScheduler;
-} // namespace Kernel
-
EXTERN_C Kernel::VoidPtr kInterruptVectorTable[];
EXTERN_C Kernel::VoidPtr mp_user_switch_proc;
EXTERN_C Kernel::Char mp_user_switch_proc_stack_begin[];
@@ -36,9 +23,6 @@ EXTERN_C void hal_init_platform(
{
kHandoverHeader = HandoverHeader;
- Kernel::kProcessScheduler = nullptr;
- Kernel::kHardwareThreadScheduler = nullptr;
-
if (kHandoverHeader->f_Magic != kHandoverMagic &&
kHandoverHeader->f_Version != kHandoverVersion)
{
@@ -81,24 +65,11 @@ EXTERN_C void hal_init_platform(
Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP);
}
-EXTERN_C Kernel::Void hal_kernel_server(Kernel::Void) noexcept
-{
- while (Yes)
- ;
-}
-
EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
/* Initialize filesystem. */
Kernel::NeFileSystemMgr::Mount(new Kernel::NeFileSystemMgr());
- /* Initialize scheduler. */
- Kernel::UserProcessHelper::InitializeScheduler();
-
- const Kernel::Char kKernelServerName[255] = "KernelServer";
-
- Kernel::rtl_create_process(&hal_kernel_server, kKernelServerName);
-
/* Start any cores. */
if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled)
Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
diff --git a/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc b/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc
index caf7cd7e..b329b705 100644
--- a/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc
+++ b/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc
@@ -20,7 +20,7 @@
#include <NewKit/Utils.h>
#include <KernelKit/LockDelegate.h>
-#define kMaxAhciPoll 100000
+#define kMaxAhciPoll (100000U)
#ifdef __AHCI__
enum
diff --git a/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc b/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc
index 95b3a9b0..913853d2 100644
--- a/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc
+++ b/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc
@@ -40,7 +40,13 @@ EXTERN_C void hal_init_platform(
/* INITIALIZE BIT MAP. */
/************************************** */
- while (Yes)
- {
- }
+ kKernelBitMpSize = kHandoverHeader->f_BitMapSize;
+ kKernelBitMpStart = reinterpret_cast<Kernel::VoidPtr>(
+ reinterpret_cast<Kernel::UIntPtr>(kHandoverHeader->f_BitMapStart));
+
+ Kernel::NeFileSystemMgr::Mount(new Kernel::NeFileSystemMgr());
+
+
+
+ while (Yes);
}