summaryrefslogtreecommitdiffhomepage
path: root/Private/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-03-23 00:59:31 +0100
committerAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-03-23 01:04:00 +0100
commit77bf7cab39fef40797e8832aaef91abbdf0098f5 (patch)
tree157f6f82188c505f1333abf93aeda63b3373cf04 /Private/HALKit
parent954285b6c9553a047d0789707ad520c84099e74a (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.cpp14
-rw-r--r--Private/HALKit/AMD64/HalInterruptRouting.asm14
-rw-r--r--Private/HALKit/AMD64/HalKernelMain.cxx8
-rw-r--r--Private/HALKit/AMD64/HalKernelMouse.cxx27
-rw-r--r--Private/HALKit/AMD64/Storage/ATA.cxx10
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;
}