diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-17 23:38:29 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-17 23:39:11 +0200 |
| commit | f36396f7fcc1fc4c116a76fa43f1e9f7cd6e4084 (patch) | |
| tree | 6840cddc1ba5a29ca134c29525fe4cab7e079751 /dev | |
| parent | 496f814adf3b9cbcaab2e73188a6730d0a780912 (diff) | |
kernel, boot: recovering lost changes because of some git issue.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/boot/modules/SysChk/amd64-pio.json | 1 | ||||
| -rw-r--r-- | dev/boot/src/HEL/AMD64/BootEFI.cc | 3 | ||||
| -rw-r--r-- | dev/kernel/FSKit/HeFS.h | 29 | ||||
| -rw-r--r-- | dev/kernel/FSKit/NeFS.h | 3 | ||||
| -rw-r--r-- | dev/kernel/FirmwareKit/GPT.h | 2 | ||||
| -rw-r--r-- | dev/kernel/FirmwareKit/Handover.h | 2 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc | 28 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc | 2 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/Processor.h | 2 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 2 | ||||
| -rw-r--r-- | dev/kernel/HALKit/ARM64/Processor.h | 2 | ||||
| -rw-r--r-- | dev/kernel/KernelKit/ProcessScheduler.h | 8 | ||||
| -rw-r--r-- | dev/kernel/src/BitMapMgr.cc | 2 | ||||
| -rw-r--r-- | dev/kernel/src/UserProcessScheduler.cc | 7 |
14 files changed, 46 insertions, 47 deletions
diff --git a/dev/boot/modules/SysChk/amd64-pio.json b/dev/boot/modules/SysChk/amd64-pio.json index f15a8efd..3848a611 100644 --- a/dev/boot/modules/SysChk/amd64-pio.json +++ b/dev/boot/modules/SysChk/amd64-pio.json @@ -17,6 +17,7 @@ "__BOOTZ_STANDALONE__", "__NE_AMD64__", "__ATA_PIO__", + "BOOTZ_EPM_SUPPORT", "kChkVersionHighest=0x0100", "kChkVersionLowest=0x0100", "kChkVersion=0x0100" diff --git a/dev/boot/src/HEL/AMD64/BootEFI.cc b/dev/boot/src/HEL/AMD64/BootEFI.cc index fa0cb74b..2ee662f3 100644 --- a/dev/boot/src/HEL/AMD64/BootEFI.cc +++ b/dev/boot/src/HEL/AMD64/BootEFI.cc @@ -226,6 +226,9 @@ EFI_EXTERN_C EFI_API Int32 BootloaderMain(EfiHandlePtr image_handle, handover_hdr->f_Magic = kHandoverMagic; handover_hdr->f_Version = kHandoverVersion; + handover_hdr->f_EFIImageKey = map_key; + handover_hdr->f_EFIImage = image_handle; + // Provide fimware vendor name. Boot::BCopyMem(handover_hdr->f_FirmwareVendorName, sys_table->FirmwareVendor, diff --git a/dev/kernel/FSKit/HeFS.h b/dev/kernel/FSKit/HeFS.h index 6c294ec6..cf1bebfc 100644 --- a/dev/kernel/FSKit/HeFS.h +++ b/dev/kernel/FSKit/HeFS.h @@ -20,19 +20,30 @@ #define kHeFSMinimumDiskSize (mib_cast(256))
+struct HeFS_BOOT_NODE;
+
enum
{
- kHeFSInvalidDrive,
- kHeFSHDDDrive,
- kHeFSSSDDrive,
- kHeFSMassStorageDrive,
- kHeFSSCSIDrive,
- kHeFSDriveCount,
+ kHeFSHardDrive = 0xC0, // Hard Drive
+ kHeFSSolidStateDrive = 0xC1, // Solid State Drive
+ kHeFSOpticalDrive = 0x0C, // Blu-Ray/DVD
+ kHeFSMassStorageDevice = 0xCC, // USB
+ kHeFSScsiDrive = 0xC4, // SCSI Hard Drive
+ kHeFSFlashDrive = 0xC6,
+ kHeFSUnknown = 0xFF, // Unknown device.
+ kHeFSDriveCount = 7,
};
-struct HeFS_BOOT_NODE;
+enum
+{
+ kHeFSStatusUnlocked = 0x18,
+ kHeFSStatusLocked,
+ kHeFSStatusError,
+ kHeFSStatusInvalid,
+ kHeFSStatusCount,
+};
-struct HeFS_BOOT_NODE final
+struct PACKED HeFS_BOOT_NODE final
{
Kernel::Char fMagic[kHeFSMagicLen];
Kernel::Char fPartName[kHeFSPartNameLen];
@@ -47,7 +58,7 @@ struct HeFS_BOOT_NODE final Kernel::UInt64 fRecoveryINode;
};
-struct HeFS_INDEX_NODE
+struct PACKED HeFS_INDEX_NODE
{
Kernel::Char fName[kHeFSFileNameLen];
Kernel::UInt32 fFlags;
diff --git a/dev/kernel/FSKit/NeFS.h b/dev/kernel/FSKit/NeFS.h index 3c11fdb4..747af16b 100644 --- a/dev/kernel/FSKit/NeFS.h +++ b/dev/kernel/FSKit/NeFS.h @@ -135,9 +135,10 @@ enum kNeFSStatusLocked, kNeFSStatusError, kNeFSStatusInvalid, + kNeFSStatusCount, }; -/// @brief Catalog type. +/// @brief Catalog record type. struct PACKED NEFS_CATALOG_STRUCT final { BOOL ForkOrCatalog : 1 {0}; diff --git a/dev/kernel/FirmwareKit/GPT.h b/dev/kernel/FirmwareKit/GPT.h index a8b53ead..40a7e899 100644 --- a/dev/kernel/FirmwareKit/GPT.h +++ b/dev/kernel/FirmwareKit/GPT.h @@ -9,7 +9,7 @@ #include <NewKit/Defines.h> #include <FirmwareKit/EFI/EFI.h> -#define kSectorSizeGPT (512U) +#define kSectorSizeGPT (420U) #define kPartNameGPT (8U) namespace Kernel diff --git a/dev/kernel/FirmwareKit/Handover.h b/dev/kernel/FirmwareKit/Handover.h index ecdaca64..dd529a9e 100644 --- a/dev/kernel/FirmwareKit/Handover.h +++ b/dev/kernel/FirmwareKit/Handover.h @@ -17,7 +17,7 @@ #pragma once -#include "FirmwareKit/EFI/EFI.h" +#include <FirmwareKit/EFI/EFI.h> #include <NewKit/Defines.h> #define kHandoverMagic 0xBADCC diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc index 43888f3b..938907f4 100644 --- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -210,24 +210,15 @@ namespace Kernel::HAL if (kMADTBlock) { - SizeT index = 1; + SizeT index = 1UL; kSMPInterrupt = 0; kSMPCount = 0; - kout << "SMP: Starting APs...\r"; + kout << "SMP: Registering APIC IDs...\r"; kApicBaseAddress = kMADTBlock->Address; - constexpr auto kMemoryAPStart = 0x7C000; - Char* ptr_ap_code = reinterpret_cast<Char*>(kMemoryAPStart); - - mm_map_page(ptr_ap_code, ptr_ap_code, kMMFlagsWr); - - SizeT hal_ap_blob_len = hal_ap_blob_end - hal_ap_blob_start; - - rt_copy_memory((Char*)hal_ap_blob_start, ptr_ap_code, hal_ap_blob_len); - while (Yes) { if (kMADTBlock->List[index].Type > 9 || @@ -241,18 +232,7 @@ namespace Kernel::HAL break; kAPICLocales[kSMPCount] = kMADTBlock->List[kSMPCount].LAPIC.ProcessorID; - (void)(kout << "SMP: APIC ID: " << number(kAPICLocales[kSMPCount]) << kendl); - - // I'll just make the AP start from scratch here. - - hal_send_start_ipi(kApicBaseAddress, kAPICLocales[kSMPCount]); - - HardwareTimer timer(Kernel::rtl_ms(10)); - timer.Wait(); - - /// TODO: HAL helper to create an address. - - hal_send_sipi(kApicBaseAddress, kAPICLocales[kSMPCount], (UInt8)(((UIntPtr)ptr_ap_code) >> 12)); + (Void)(kout << "SMP: APIC ID: " << number(kAPICLocales[kSMPCount]) << kendl); ++kSMPCount; break; @@ -264,7 +244,7 @@ namespace Kernel::HAL ++index; } - (void)(kout << "SMP: number of APs: " << number(kSMPCount) << kendl); + (Void)(kout << "SMP: Number of IDs: " << number(kSMPCount) << kendl); // Kernel is now SMP aware. // That means that the scheduler is now available (on MP Kernels) diff --git a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc index 4b50a3f4..16fe843a 100644 --- a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc +++ b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc @@ -143,7 +143,7 @@ namespace Kernel::HAL pte->Wr = !!(flags & kMMFlagsWr); pte->User = !!(flags & kMMFlagsUser); pte->Nx = !!(flags & kMMFlagsNX); - pte->Pcd = !(flags & kMMFlagsUncached); + pte->Pcd = !(flags & kMMFlagsPCD); pte->PhysicalAddress = (UIntPtr)(physical_address); mmi_page_status(pte); diff --git a/dev/kernel/HALKit/AMD64/Processor.h b/dev/kernel/HALKit/AMD64/Processor.h index e375a935..a5bc82c7 100644 --- a/dev/kernel/HALKit/AMD64/Processor.h +++ b/dev/kernel/HALKit/AMD64/Processor.h @@ -73,7 +73,7 @@ namespace Kernel::HAL kMMFlagsWr = 1 << 2, kMMFlagsUser = 1 << 3, kMMFlagsNX = 1 << 4, - kMMFlagsUncached = 1 << 5, + kMMFlagsPCD = 1 << 5, kMMFlagsCount = 4, }; diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc index 2dfd89a1..9c8f95bc 100644 --- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc +++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc @@ -283,7 +283,7 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL& atapi) kSATADev.EnableMmio(); kSATADev.BecomeBusMaster(); - HAL::mm_map_page((VoidPtr)mem_ahci, (VoidPtr)mem_ahci, HAL::kMMFlagsPresent | HAL::kMMFlagsWr | HAL::kMMFlagsUncached); + HAL::mm_map_page((VoidPtr)mem_ahci, (VoidPtr)mem_ahci, HAL::kMMFlagsPresent | HAL::kMMFlagsWr | HAL::kMMFlagsPCD); UInt32 ports_implemented = mem_ahci->Pi; UInt16 ahci_index = 0; diff --git a/dev/kernel/HALKit/ARM64/Processor.h b/dev/kernel/HALKit/ARM64/Processor.h index b108fc82..4cead7ea 100644 --- a/dev/kernel/HALKit/ARM64/Processor.h +++ b/dev/kernel/HALKit/ARM64/Processor.h @@ -28,7 +28,7 @@ namespace Kernel::HAL kMMFlagsWr = 1 << 1, kMMFlagsUser = 1 << 2, kMMFlagsNX = 1 << 3, - kMMFlagsUncached = 1 << 4, + kMMFlagsPCD = 1 << 4, kMMFlagsCount = 4, }; diff --git a/dev/kernel/KernelKit/ProcessScheduler.h b/dev/kernel/KernelKit/ProcessScheduler.h index cff2ce6b..a99fc45b 100644 --- a/dev/kernel/KernelKit/ProcessScheduler.h +++ b/dev/kernel/KernelKit/ProcessScheduler.h @@ -214,15 +214,15 @@ namespace Kernel enum { kInvalidExecutableKind, - kExectuableKind, - kExectuableDylibKind, - kExectuableKindCount, + kExecutableKind, + kExecutableDylibKind, + kExecutableKindCount, }; ProcessTime PTime{0}; //! @brief Process allocated tine. PID ProcessId{kSchedInvalidPID}; - Int32 Kind{kExectuableKind}; + Int32 Kind{kExecutableKind}; public: /***********************************************************************************/ diff --git a/dev/kernel/src/BitMapMgr.cc b/dev/kernel/src/BitMapMgr.cc index fe4b9625..96cbb803 100644 --- a/dev/kernel/src/BitMapMgr.cc +++ b/dev/kernel/src/BitMapMgr.cc @@ -78,7 +78,7 @@ namespace Kernel if (user) flags |= kMMFlagsUser; - flags |= HAL::kMMFlagsUncached; + flags |= HAL::kMMFlagsPCD; return flags; } diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index b2052723..15f55839 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -255,7 +255,7 @@ namespace Kernel this->StackFrame = nullptr; this->StackReserve = nullptr; - if (this->Kind == kExectuableDylibKind) + if (this->Kind == kExecutableDylibKind) { Bool success = false; @@ -336,11 +336,14 @@ namespace Kernel // React according to process kind. switch (process.Kind) { - case Process::kExectuableDylibKind: { + case Process::kExecutableDylibKind: { process.DylibDelegate = rtl_init_dylib(process); MUST_PASS(process.DylibDelegate); break; } + case Process::kExecutableKind: { + break; + } default: { (void)(kout << "Unknown process kind: " << hex_number(process.Kind) << kendl); break; |
