diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-05 09:34:00 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-05 09:34:00 +0100 |
| commit | b636137088923d092c3f0fa4221907fd43c34923 (patch) | |
| tree | 2d21e43349204866d17091cfb395cd2dd1b28a90 /dev/ZKAKit/HALKit | |
| parent | 4e7ea02ed492a1fc0b167392361673244f957cce (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.cc | 14 | ||||
| -rw-r--r-- | dev/ZKAKit/HALKit/AMD64/PCI/Device.cc | 2 | ||||
| -rw-r--r-- | dev/ZKAKit/HALKit/AMD64/Storage/AHCI.cc | 16 |
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 } } |
