summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-17 23:38:29 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-04-17 23:39:11 +0200
commitf36396f7fcc1fc4c116a76fa43f1e9f7cd6e4084 (patch)
tree6840cddc1ba5a29ca134c29525fe4cab7e079751 /dev
parent496f814adf3b9cbcaab2e73188a6730d0a780912 (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.json1
-rw-r--r--dev/boot/src/HEL/AMD64/BootEFI.cc3
-rw-r--r--dev/kernel/FSKit/HeFS.h29
-rw-r--r--dev/kernel/FSKit/NeFS.h3
-rw-r--r--dev/kernel/FirmwareKit/GPT.h2
-rw-r--r--dev/kernel/FirmwareKit/Handover.h2
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc28
-rw-r--r--dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/Processor.h2
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/Processor.h2
-rw-r--r--dev/kernel/KernelKit/ProcessScheduler.h8
-rw-r--r--dev/kernel/src/BitMapMgr.cc2
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc7
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;