summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/HALKit/AMD64
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/HALKit/AMD64')
-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
4 files changed, 9 insertions, 11 deletions
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.