diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-20 17:53:37 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-20 17:53:37 +0200 |
| commit | 7764e88cd0032cd57fdc17a2906db9d8af9999e1 (patch) | |
| tree | a373ed0682c3161ee38b77089bc8fab821304a6b /dev/zka/HALKit | |
| parent | 22e85ecdb17888268d32997b20e01cc98968cc3d (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.cxx | 4 | ||||
| -rw-r--r-- | dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx | 7 | ||||
| -rw-r--r-- | dev/zka/HALKit/AMD64/HalKernelMain.cxx | 24 | ||||
| -rw-r--r-- | dev/zka/HALKit/AMD64/Processor.hxx | 6 | ||||
| -rw-r--r-- | dev/zka/HALKit/ARM64/HalKernelMain.cxx | 4 | ||||
| -rw-r--r-- | dev/zka/HALKit/ARM64/HalPagingMgr.cxx | 1 | ||||
| -rw-r--r-- | dev/zka/HALKit/ARM64/HalSchedulerCore.cxx | 4 | ||||
| -rw-r--r-- | dev/zka/HALKit/ARM64/Processor.hxx | 1 |
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) { - } } |
