summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-18 00:19:48 +0200
committerGitHub <noreply@github.com>2025-04-18 00:19:48 +0200
commitee1edba85ea13627871e1ed005931bd502b86ab8 (patch)
tree8570cd210aaf11d8cd36aebf3b682e420a497bff /dev/kernel
parent6b7403efd291f80a06267817afee4c0a4c8da56c (diff)
parent7bfa36c2215e13097bb5ddcb15d2a8a476102b55 (diff)
Merge pull request #23 from amlel-el-mahrouss/dev
dev, kernel: important patches.
Diffstat (limited to 'dev/kernel')
-rw-r--r--dev/kernel/FirmwareKit/GPT.h4
-rw-r--r--dev/kernel/FirmwareKit/Handover.h7
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelMain.cc14
-rw-r--r--dev/kernel/HALKit/AMD64/Processor.h2
6 files changed, 13 insertions, 18 deletions
diff --git a/dev/kernel/FirmwareKit/GPT.h b/dev/kernel/FirmwareKit/GPT.h
index 9a6cffc6..0515af8a 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 kSectorAlignGPT_Part (420U)
+#define kSectorAlignGPT_PartTbl (420U)
#define kSectorAlignGPT_PartEntry (72U)
#define kPartNameGPT (8U)
@@ -44,7 +44,7 @@ namespace Kernel
UInt32 NumPartitionEntries;
UInt32 SizeOfEntries;
UInt32 CRC32PartEntry;
- UInt8 Reserved2[kSectorAlignGPT_Part];
+ UInt8 Reserved2[kSectorAlignGPT_PartTbl];
};
struct PACKED GPT_PARTITION_ENTRY
diff --git a/dev/kernel/FirmwareKit/Handover.h b/dev/kernel/FirmwareKit/Handover.h
index dd529a9e..4ff04e6d 100644
--- a/dev/kernel/FirmwareKit/Handover.h
+++ b/dev/kernel/FirmwareKit/Handover.h
@@ -71,11 +71,6 @@ namespace Kernel::HEL
WideChar f_FirmwareVendorName[32];
SizeT f_FirmwareVendorLen;
-#ifdef __NE_AMD64__
- UInt32 f_EFIImageKey;
- EfiHandlePtr f_EFIImage;
-#endif
-
VoidPtr f_FirmwareCustomTables[2]; // On EFI 0: BS 1: ST
struct
@@ -84,6 +79,8 @@ namespace Kernel::HEL
VoidPtr f_VendorPtr;
VoidPtr f_MpPtr;
Bool f_MultiProcessingEnabled;
+ UInt32 f_ImageKey;
+ EfiHandlePtr f_ImageHandle;
} f_HardwareTables;
struct
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index 94c1ae73..3b98e9e8 100644
--- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -191,7 +191,7 @@ namespace Kernel::HAL
/// @brief Fetch and enable SMP scheduler.
/// @param vendor_ptr SMP containing structure.
/***********************************************************************************/
- Void mp_get_cores(VoidPtr vendor_ptr) noexcept
+ Void mp_init_cores(VoidPtr vendor_ptr) noexcept
{
if (!vendor_ptr)
return;
diff --git a/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc b/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc
index ddfc49b6..c0c7dfcf 100644
--- a/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc
+++ b/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc
@@ -109,8 +109,6 @@ namespace Kernel::HAL
hal_load_idt(idt);
- NeFS::fs_init_nefs();
-
Detail::hal_enable_pit(kPITTickForScheduler);
rt_sti();
diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
index 60df6a12..b716279d 100644
--- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
@@ -43,14 +43,14 @@ EXTERN_C Int32 hal_init_platform(
return kEfiFail;
}
+ kHandoverHeader = handover_hdr;
+
FB::fb_clear_video();
(Void)(Kernel::kout << "Welcome to NeKernel.\r");
fw_init_efi((EfiSystemTable*)handover_hdr->f_FirmwareCustomTables[1]);
- Boot::ExitBootServices(handover_hdr->f_EFIImageKey, handover_hdr->f_EFIImage);
-
- kHandoverHeader = handover_hdr;
+ Boot::ExitBootServices(handover_hdr->f_HardwareTables.f_ImageKey, handover_hdr->f_HardwareTables.f_ImageHandle);
hal_init_scheduler_team();
@@ -83,10 +83,6 @@ EXTERN_C Int32 hal_init_platform(
gdt_reg.Base = reinterpret_cast<Kernel::UIntPtr>(kGDTArray);
gdt_reg.Limit = (sizeof(Kernel::HAL::Detail::NE_GDT_ENTRY) * kGDTEntriesCount) - 1;
- Kernel::NeFS::fs_init_nefs();
-
- Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
-
//! GDT will load hal_read_init after it successfully loads the segments.
Kernel::HAL::GDTLoader gdt_loader;
gdt_loader.Load(gdt_reg);
@@ -96,6 +92,10 @@ EXTERN_C Int32 hal_init_platform(
EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
+ Kernel::NeFS::fs_init_nefs();
+
+ Kernel::HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
+
Kernel::HAL::Register64 idt_reg;
idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable;
diff --git a/dev/kernel/HALKit/AMD64/Processor.h b/dev/kernel/HALKit/AMD64/Processor.h
index a5bc82c7..b813e1d9 100644
--- a/dev/kernel/HALKit/AMD64/Processor.h
+++ b/dev/kernel/HALKit/AMD64/Processor.h
@@ -181,7 +181,7 @@ namespace Kernel::HAL
/// @brief Fetch and enable SMP scheduler.
/// @param vendor_ptr SMP containing structure.
/***********************************************************************************/
- Void mp_get_cores(VoidPtr vendor_ptr) noexcept;
+ Void mp_init_cores(VoidPtr vendor_ptr) noexcept;
/***********************************************************************************/
/// @brief Do a cpuid to check if MSR exists on CPU.