diff options
| author | Amlal El Mahrouss <amlal@el-mahrouss-logic.com> | 2024-03-23 00:59:31 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@el-mahrouss-logic.com> | 2024-03-23 01:04:00 +0100 |
| commit | 77bf7cab39fef40797e8832aaef91abbdf0098f5 (patch) | |
| tree | 157f6f82188c505f1333abf93aeda63b3373cf04 /Private/HALKit | |
| parent | 954285b6c9553a047d0789707ad520c84099e74a (diff) | |
Kernel and Bootloader: See below.
Kernel: Add kPefArchPowerPC type.
Kernel: Working on NewFS support for NewKernel.
Kernel: Cleaned-up DriveManager.
Kernel: Use kernel mouse on install mode.
Bootloader: Refactor and cleanup.
FirmwareKit: Fix EPM header.
Signed-off-by: Amlal El Mahrouss <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'Private/HALKit')
| -rw-r--r-- | Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp | 14 | ||||
| -rw-r--r-- | Private/HALKit/AMD64/HalInterruptRouting.asm | 14 | ||||
| -rw-r--r-- | Private/HALKit/AMD64/HalKernelMain.cxx | 8 | ||||
| -rw-r--r-- | Private/HALKit/AMD64/HalKernelMouse.cxx | 27 | ||||
| -rw-r--r-- | Private/HALKit/AMD64/Storage/ATA.cxx | 10 |
5 files changed, 25 insertions, 48 deletions
diff --git a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp index e95e8902..78b69bff 100644 --- a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp @@ -11,10 +11,10 @@ EXTERN_C void idt_handle_gpf(HCore::UIntPtr rsp) { MUST_PASS(HCore::ProcessManager::Shared().Leak().GetCurrent()); - HCore::kcout << "HCoreKrnl.exe: Stack Pointer: " << HCore::StringBuilder::FromInt("rsp{%}", rsp); + HCore::kcout << "NewKernel.exe: Stack Pointer: " << HCore::StringBuilder::FromInt("rsp{%}", rsp); HCore::kcout - << "HCoreKrnl.exe: General Protection Fault, caused by " + << "NewKernel.exe: General Protection Fault, caused by " << HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().GetName(); HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); @@ -24,13 +24,13 @@ EXTERN_C void idt_handle_scheduler(HCore::UIntPtr rsp) { HCore::kcout << HCore::StringBuilder::FromInt("rsp{%}", rsp); HCore::kcout - << "HCoreKrnl.exe: Will be scheduled back later " + << "NewKernel.exe: Will be scheduled back later " << HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().GetName() << HCore::end_line(); /// schedule another process. if (!HCore::ProcessHelper::StartScheduling()) { - HCore::kcout << "HCoreKrnl.exe: Continue schedule this process...\r\n"; + HCore::kcout << "NewKernel.exe: Continue schedule this process...\r\n"; } } @@ -40,7 +40,7 @@ EXTERN_C void idt_handle_pf(HCore::UIntPtr rsp) { MUST_PASS(HCore::ProcessManager::Shared().Leak().GetCurrent()); HCore::kcout - << "HCoreKrnl.exe: Segmentation Fault, caused by " + << "NewKernel.exe: Segmentation Fault, caused by " << HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().GetName(); HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); @@ -52,7 +52,7 @@ EXTERN_C void idt_handle_math(HCore::UIntPtr rsp) { MUST_PASS(HCore::ProcessManager::Shared().Leak().GetCurrent()); HCore::kcout - << "HCoreKrnl.exe: Math error, caused by " + << "NewKernel.exe: Math error, caused by " << HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().GetName(); HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); @@ -64,7 +64,7 @@ EXTERN_C void idt_handle_generic(HCore::UIntPtr rsp) { MUST_PASS(HCore::ProcessManager::Shared().Leak().GetCurrent()); HCore::kcout - << "HCoreKrnl.exe: Execution error, caused by " + << "NewKernel.exe: Execution error, caused by " << HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().GetName(); HCore::ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); diff --git a/Private/HALKit/AMD64/HalInterruptRouting.asm b/Private/HALKit/AMD64/HalInterruptRouting.asm index fe6fd2b5..384f775c 100644 --- a/Private/HALKit/AMD64/HalInterruptRouting.asm +++ b/Private/HALKit/AMD64/HalInterruptRouting.asm @@ -130,6 +130,7 @@ IntNormal 41 IntNormal 42 IntNormal 43 +;; Mapped according to PIC remap. __HCR_INT_44: cli @@ -139,15 +140,6 @@ __HCR_INT_44: pop rax - push rax - - ;; Find and execute system call TODO - - mov rcx, kMouseLabelExit - call ke_io_print - - pop rax - sti iretq @@ -220,6 +212,4 @@ kInterruptVectorTable: %endrep kSystemCallLabel: - db "HCoreKrnl.exe: SystemCall: Enter SCM.", 0xa, 0xd, 0 -kMouseLabelExit: - db "HCoreKrnl.exe: KernelMouse: Acknowledge Interrupt.", 0xa, 0xd, 0
\ No newline at end of file + db "NewKernel.exe: SystemCall: Enter SCM.", 0xa, 0xd, 0
\ No newline at end of file diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index abbf5feb..c2b6dfbb 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -19,6 +19,9 @@ ///! @brief Disk contains HCore files. #define kInstalledMedia 0xDD +EXTERN_C HCore::Void _hal_draw_mouse(); +EXTERN_C HCore::Void _hal_init_mouse(); + EXTERN_C HCore::VoidPtr kInterruptVectorTable[]; EXTERN_C void RuntimeMain( @@ -83,6 +86,11 @@ EXTERN_C void RuntimeMain( /// TODO: Parse system configuration. } else { /// TODO: Install hcore on host. + _hal_init_mouse(); + + while (true) { + _hal_draw_mouse(); + } } HCore::ke_stop(RUNTIME_CHECK_BOOTSTRAP); diff --git a/Private/HALKit/AMD64/HalKernelMouse.cxx b/Private/HALKit/AMD64/HalKernelMouse.cxx index 2427ff2d..b71c00ed 100644 --- a/Private/HALKit/AMD64/HalKernelMouse.cxx +++ b/Private/HALKit/AMD64/HalKernelMouse.cxx @@ -33,7 +33,6 @@ using namespace HCore; /// @brief Interrupt handler for the mouse. /// @return EXTERN_C Void _hal_mouse_handler() { -#ifdef __DEBUG__ HCore::UInt8 data = HCore::HAL::In8(0x60); switch (kMouseCycle) { @@ -72,13 +71,11 @@ EXTERN_C Void _hal_mouse_handler() { HCore::HAL::Out8(0x20, 0x20); HCore::HAL::Out8(0xA0, 0x20); -#endif } /// @brief Draws the kernel's mouse. /// @return void -EXTERN_C Void _hal_mouse_draw() { -#ifdef __DEBUG__ +EXTERN_C Void _hal_draw_mouse() { if (!kMousePacketReady) return; bool xNeg, yNeg, xOvf, yOvf; @@ -119,25 +116,7 @@ EXTERN_C Void _hal_mouse_draw() { kPrevY = kMousePacket[2]; kMousePacketReady = false; -#endif } -/// @brief Inital kernel mouse initializer -/// @param -EXTERN_C Void _hal_init_mouse(void) { -#ifdef __DEBUG__ - kMousePS2.Init(); - - auto pic1Port = 0x20; - auto pic2Port = 0xA0; - - auto mask = 1 << 12; - auto currentMask = HCore::HAL::In8(pic1Port + 1); - auto newMask = currentMask & ~mask; - HCore::HAL::Out8(pic1Port + 1, newMask); - - currentMask = HCore::HAL::In8(pic2Port + 1); - newMask = currentMask & ~mask; - HCore::HAL::Out8(pic2Port + 1, newMask); -#endif -}
\ No newline at end of file +/// @brief Init kernel mouse. +EXTERN_C Void _hal_init_mouse() { kMousePS2.Init(); }
\ No newline at end of file diff --git a/Private/HALKit/AMD64/Storage/ATA.cxx b/Private/HALKit/AMD64/Storage/ATA.cxx index 6a4a0252..854b166e 100644 --- a/Private/HALKit/AMD64/Storage/ATA.cxx +++ b/Private/HALKit/AMD64/Storage/ATA.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: auto statRdy = In8(IO + ATA_REG_STATUS); if (statRdy & ATA_SR_ERR) { - kcout << "HCoreKrnl.exe: ATA: Select error, not an IDE based hard-drive.\r\n"; + kcout << "NewKernel.exe: ATA: Select error, not an IDE based hard-drive.\r\n"; return false; } @@ -107,21 +107,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - kcout << "HCoreKrnl.exe: PATAPI drive detected.\r\n"; + kcout << "NewKernel.exe: PATAPI drive detected.\r\n"; kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - kcout << "HCoreKrnl.exe: SATAPI drive detected.\r\n"; + kcout << "NewKernel.exe: SATAPI drive detected.\r\n"; kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - kcout << "HCoreKrnl.exe: PATA drive detected.\r\n"; + kcout << "NewKernel.exe: PATA drive detected.\r\n"; kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - kcout << "HCoreKrnl.exe: SATA drive detected.\r\n"; + kcout << "NewKernel.exe: SATA drive detected.\r\n"; kATADeviceType = kATADeviceSATA; } |
