summaryrefslogtreecommitdiffhomepage
path: root/dev/zka/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-10-20 17:53:37 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-10-20 17:53:37 +0200
commit7764e88cd0032cd57fdc17a2906db9d8af9999e1 (patch)
treea373ed0682c3161ee38b77089bc8fab821304a6b /dev/zka/HALKit
parent22e85ecdb17888268d32997b20e01cc98968cc3d (diff)
IMP: New implementations and improvements.
- Heap class allocation have been fixed. - Scheduler allocation has been fixed. - A new better flow for the kernel has been designed. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/zka/HALKit')
-rw-r--r--dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx4
-rw-r--r--dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx7
-rw-r--r--dev/zka/HALKit/AMD64/HalKernelMain.cxx24
-rw-r--r--dev/zka/HALKit/AMD64/Processor.hxx6
-rw-r--r--dev/zka/HALKit/ARM64/HalKernelMain.cxx4
-rw-r--r--dev/zka/HALKit/ARM64/HalPagingMgr.cxx1
-rw-r--r--dev/zka/HALKit/ARM64/HalSchedulerCore.cxx4
-rw-r--r--dev/zka/HALKit/ARM64/Processor.hxx1
8 files changed, 28 insertions, 23 deletions
diff --git a/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx b/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx
index 292aea4d..a76fde89 100644
--- a/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx
+++ b/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx
@@ -92,7 +92,7 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp)
/// @return nothing.
EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr rdx)
{
- Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC
+ Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC
if (rcx <= (kSyscalls.Count() - 1))
{
@@ -110,7 +110,7 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr
/// @return nothing.
EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr rdx, Kernel::UIntPtr r8, Kernel::UIntPtr r9)
{
- Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC
+ Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC
if (rcx <= (kSyscalls.Count() - 1))
{
diff --git a/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx b/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx
index d554771c..343ac9ab 100644
--- a/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx
+++ b/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx
@@ -100,10 +100,9 @@ namespace Kernel::HAL
hal_load_idt(idt);
Detail::hal_enable_pit(cPITTickForScheduler);
- Detail::hal_clear_irq_mask(32);
-
- rt_sti();
- }
+
+ rt_sti();
+ }
void GDTLoader::Load(Ref<RegisterGDT>& gdt)
{
diff --git a/dev/zka/HALKit/AMD64/HalKernelMain.cxx b/dev/zka/HALKit/AMD64/HalKernelMain.cxx
index ea8049c5..e836a239 100644
--- a/dev/zka/HALKit/AMD64/HalKernelMain.cxx
+++ b/dev/zka/HALKit/AMD64/HalKernelMain.cxx
@@ -83,19 +83,25 @@ EXTERN_C void hal_init_platform(
EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
- Kernel::HAL::Register64 idt_reg;
- idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable;
-
- Kernel::HAL::IDTLoader idt_loader;
- idt_loader.Load(idt_reg);
+ /* Initialize filesystem. */
+ Kernel::NeFileSystemMgr* mgr = Kernel::mm_new_class<Kernel::NeFileSystemMgr>();
+ Kernel::NeFileSystemMgr::Mount(mgr);
+
+ /* Initialize scheduler. */
+ Kernel::UserProcessHelper::InitializeScheduler();
+ /* Start any cores. */
if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled)
Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
+
+ /* Load System.exe here (TODO) */
+
+ Kernel::HAL::Register64 idt_reg;
+ idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable;
- Kernel::NeFileSystemMgr* mgr = Kernel::mm_new_class<Kernel::NeFileSystemMgr>();
- Kernel::NeFileSystemMgr::Mount(mgr);
-
- Kernel::UserProcessHelper::InitializeScheduler();
+ /* Load interrupts. */
+ Kernel::HAL::IDTLoader idt_loader;
+ idt_loader.Load(idt_reg);
Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP);
}
diff --git a/dev/zka/HALKit/AMD64/Processor.hxx b/dev/zka/HALKit/AMD64/Processor.hxx
index f1de4d49..2fd62820 100644
--- a/dev/zka/HALKit/AMD64/Processor.hxx
+++ b/dev/zka/HALKit/AMD64/Processor.hxx
@@ -23,10 +23,10 @@
#define kPITChannel0Port 0x40
#define kPITFrequency 1193180
-#define kPICCommand 0x20
-#define kPICData 0x21
+#define kPICCommand 0x20
+#define kPICData 0x21
#define kPIC2Command 0xA0
-#define kPIC2Data 0xA1
+#define kPIC2Data 0xA1
EXTERN_C
{
diff --git a/dev/zka/HALKit/ARM64/HalKernelMain.cxx b/dev/zka/HALKit/ARM64/HalKernelMain.cxx
index 4e445a21..52096158 100644
--- a/dev/zka/HALKit/ARM64/HalKernelMain.cxx
+++ b/dev/zka/HALKit/ARM64/HalKernelMain.cxx
@@ -40,5 +40,7 @@ EXTERN_C void hal_init_platform(
/* INITIALIZE BIT MAP. */
/************************************** */
- while (Yes) {}
+ while (Yes)
+ {
+ }
}
diff --git a/dev/zka/HALKit/ARM64/HalPagingMgr.cxx b/dev/zka/HALKit/ARM64/HalPagingMgr.cxx
index e8a41ff5..ae060af9 100644
--- a/dev/zka/HALKit/ARM64/HalPagingMgr.cxx
+++ b/dev/zka/HALKit/ARM64/HalPagingMgr.cxx
@@ -36,7 +36,6 @@ namespace Kernel::HAL
/// \brief Retrieve the page status of a PTE.
STATIC Void mmi_page_status(PTE* pte)
{
-
}
STATIC Int32 mmi_map_page_table_entry(VoidPtr virtual_address, UInt32 flags, PTE* pt_entry);
diff --git a/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx b/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx
index 6f2f356e..e231e0fc 100644
--- a/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx
+++ b/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx
@@ -8,9 +8,9 @@
namespace Kernel
{
- EXTERN_C Void __zka_pure_call(void)
+ EXTERN_C Void __zka_pure_call(void)
{
- UserProcessScheduler::The().CurrentProcess().Leak().Crash();
+ UserProcessScheduler::The().CurrentProcess().Leak().Crash();
}
Void UserProcess::SetImageStart(VoidPtr image_start) noexcept
diff --git a/dev/zka/HALKit/ARM64/Processor.hxx b/dev/zka/HALKit/ARM64/Processor.hxx
index 883ebe5c..93a9141a 100644
--- a/dev/zka/HALKit/ARM64/Processor.hxx
+++ b/dev/zka/HALKit/ARM64/Processor.hxx
@@ -62,7 +62,6 @@ namespace Kernel::HAL
{
while (Yes)
{
-
}
}