summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-05 09:34:00 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-05 09:34:00 +0100
commitb636137088923d092c3f0fa4221907fd43c34923 (patch)
tree2d21e43349204866d17091cfb395cd2dd1b28a90 /dev/ZKAKit/HALKit
parent4e7ea02ed492a1fc0b167392361673244f957cce (diff)
IMP: Scheduler improvements, fixing stack issue of kernel now.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/HALKit')
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc14
-rw-r--r--dev/ZKAKit/HALKit/AMD64/PCI/Device.cc2
-rw-r--r--dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc16
3 files changed, 15 insertions, 17 deletions
diff --git a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc
index 05ace369..1b880784 100644
--- a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc
@@ -57,10 +57,10 @@ EXTERN_C void hal_init_platform(
/* INITIALIZE GDT AND SEGMENTS. */
/************************************** */
- STATIC CONST auto cEntriesCount = 6;
+ STATIC CONST auto kGDTEntriesCount = 6;
/* GDT, mostly descriptors for user and kernel segments. */
- STATIC Kernel::HAL::Detail::ZKA_GDT_ENTRY ALIGN(0x08) cGdt[cEntriesCount] = {
+ STATIC Kernel::HAL::Detail::ZKA_GDT_ENTRY ALIGN(0x08) kGDTArray[kGDTEntriesCount] = {
{.fLimitLow = 0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x00, .fFlags = 0x00, .fBaseHigh = 0}, // Null entry
{.fLimitLow = 0xFFFF, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x9A, .fFlags = 0xAF, .fBaseHigh = 0}, // Kernel code
{.fLimitLow = 0xFFFF, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x92, .fFlags = 0xCF, .fBaseHigh = 0}, // Kernel data
@@ -71,8 +71,8 @@ EXTERN_C void hal_init_platform(
// Load memory descriptors.
Kernel::HAL::RegisterGDT gdt_reg;
- gdt_reg.Base = reinterpret_cast<Kernel::UIntPtr>(cGdt);
- gdt_reg.Limit = (sizeof(Kernel::HAL::Detail::ZKA_GDT_ENTRY) * cEntriesCount) - 1;
+ gdt_reg.Base = reinterpret_cast<Kernel::UIntPtr>(kGDTArray);
+ gdt_reg.Limit = (sizeof(Kernel::HAL::Detail::ZKA_GDT_ENTRY) * kGDTEntriesCount) - 1;
//! GDT will load hal_read_init after it successfully loads the segments.
Kernel::HAL::GDTLoader gdt_loader;
@@ -88,11 +88,9 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
Kernel::rtl_create_process([]() -> void {
while (Yes)
- {
- kcout << "Hello.\r";
- }
+ ;
},
- "RtlProcess");
+ "RtlProcess\0");
/* Start any cores. */
if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled)
diff --git a/dev/ZKAKit/HALKit/AMD64/PCI/Device.cc b/dev/ZKAKit/HALKit/AMD64/PCI/Device.cc
index bd451d96..4d44d7d0 100644
--- a/dev/ZKAKit/HALKit/AMD64/PCI/Device.cc
+++ b/dev/ZKAKit/HALKit/AMD64/PCI/Device.cc
@@ -116,7 +116,7 @@ namespace Kernel::PCI
Write(bar_in, enable, sizeof(UShort));
}
- UInt32 Device::Bar(UInt32 bar_in)
+ UIntPtr Device::Bar(UInt32 bar_in)
{
UInt32 bar = ZKA_PCIReadRaw(bar_in, fBus, fDevice, fFunction);
return bar;
diff --git a/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc b/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc
index 52603f51..91948324 100644
--- a/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc
+++ b/dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc
@@ -110,7 +110,7 @@ Kernel::Void drv_std_read(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT S
Kernel::LockDelegate<kMaxAhciPoll> lock(&kSlotIsUsed);
- if (lock.HasTimedOut())
+ if (kSlotIsUsed)
return;
kSlotIsUsed = Yes;
@@ -119,7 +119,7 @@ Kernel::Void drv_std_read(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT S
// Prepare command header.
- HbaCmdHeader* cmd_header = (HbaCmdHeader*)kAhciPort->Clb;
+ HbaCmdHeader* cmd_header = (HbaCmdHeader*)(Kernel::UIntPtr)kAhciPort->Clb;
cmd_header += free_slot;
// Read operation/set entries count.
@@ -129,7 +129,7 @@ Kernel::Void drv_std_read(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT S
// Prepare command table.
- HbaCmdTbl* cmd_tbl = (HbaCmdTbl*)cmd_header->Ctba;
+ HbaCmdTbl* cmd_tbl = (HbaCmdTbl*)(Kernel::UIntPtr)cmd_header->Ctba;
Kernel::rt_set_memory(cmd_tbl, 0, sizeof(HbaCmdTbl));
Kernel::UInt64 size = Size * kAHCISectorSize;
@@ -193,9 +193,7 @@ Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT
{
STATIC Kernel::Boolean kSlotIsUsed = No;
- Kernel::LockDelegate<kMaxAhciPoll> lock(&kSlotIsUsed);
-
- if (lock.HasTimedOut())
+ if (kSlotIsUsed)
return;
kSlotIsUsed = Yes;
@@ -204,7 +202,7 @@ Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT
// Prepare command header.
- HbaCmdHeader* cmd_header = (HbaCmdHeader*)kAhciPort->Clb;
+ HbaCmdHeader* cmd_header = (HbaCmdHeader*)(Kernel::UIntPtr)kAhciPort->Clb;
cmd_header += free_slot;
// Read operation/set entries count.
@@ -214,7 +212,7 @@ Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT
// Prepare command table.
- HbaCmdTbl* cmd_tbl = (HbaCmdTbl*)cmd_header->Ctba;
+ HbaCmdTbl* cmd_tbl = (HbaCmdTbl*)(Kernel::UIntPtr)cmd_header->Ctba;
Kernel::rt_set_memory(cmd_tbl, 0, sizeof(HbaCmdTbl));
Kernel::UInt64 size = Size * kAHCISectorSize;
@@ -267,6 +265,8 @@ Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT
}
else if (kAhciPort->Is & (1 << 30))
{
+ kcout << "Error in task file. (AHCI Drv)\r";
+ Kernel::ke_stop(RUNTIME_CHECK_UNEXCPECTED);
return; // Error in task file
}
}