summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-27 08:55:09 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-27 08:55:09 +0100
commite159d3895e29f38ec1345d396a593a04b7475b92 (patch)
tree5be83ae6f069465780504a642f00955aa3e7b509 /src/kernel/HALKit
parent9e746d42d2e3faa526f12ba222f5ee6924dd30f9 (diff)
kernel! giant source code refactor.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/HALKit')
-rw-r--r--src/kernel/HALKit/AMD64/CPUID.h15
-rw-r--r--src/kernel/HALKit/AMD64/CxxAbi.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalAPICDmaWrapper.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalApplicationProcessor.cc9
-rw-r--r--src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalDebugOutput.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalDebugProtocol.cc11
-rw-r--r--src/kernel/HALKit/AMD64/HalDescriptorLoader.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelMain.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelPanic.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalPagingMgr.cc11
-rw-r--r--src/kernel/HALKit/AMD64/HalProcessor.cc11
-rw-r--r--src/kernel/HALKit/AMD64/HalSchedulerCorePrimitives.cc8
-rw-r--r--src/kernel/HALKit/AMD64/HalTimer.cc193
-rw-r--r--src/kernel/HALKit/AMD64/Hypervisor.h8
-rw-r--r--src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/DMA.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/Database.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/Device.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/Express.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/IO.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/Iterator.cc8
-rw-r--r--src/kernel/HALKit/AMD64/PCI/PCI.cc8
-rw-r--r--src/kernel/HALKit/AMD64/Paging.h8
-rw-r--r--src/kernel/HALKit/AMD64/Processor.h15
-rw-r--r--src/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc19
-rw-r--r--src/kernel/HALKit/AMD64/Storage/DMA+Generic.cc19
-rw-r--r--src/kernel/HALKit/AMD64/Storage/NVME+Generic.cc8
-rw-r--r--src/kernel/HALKit/AMD64/Storage/PIO+Generic.cc19
-rw-r--r--src/kernel/HALKit/AMD64/Storage/SCSI+Generic.cc8
-rw-r--r--src/kernel/HALKit/ARM64/APM/APM+IO.cc8
-rw-r--r--src/kernel/HALKit/ARM64/ApplicationProcessor.h8
-rw-r--r--src/kernel/HALKit/ARM64/CxxAbi.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalACPIFactoryInterface.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalApplicationProcessor.cc276
-rw-r--r--src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalDebugOutput.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalKernelMain.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalKernelPanic.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalPagingMgr.cc11
-rw-r--r--src/kernel/HALKit/ARM64/HalSchedulerCore.cc8
-rw-r--r--src/kernel/HALKit/ARM64/HalSchedulerCorePrimitives.cc58
-rw-r--r--src/kernel/HALKit/ARM64/HalTimer.cc15
-rw-r--r--src/kernel/HALKit/ARM64/Paging.h8
-rw-r--r--src/kernel/HALKit/ARM64/Processor.h8
-rw-r--r--src/kernel/HALKit/ARM64/Storage/SCSI+Generic.cc8
-rw-r--r--src/kernel/HALKit/ARM64/Storage/UFS+Generic.cc11
-rw-r--r--src/kernel/HALKit/POWER/AP.h15
-rw-r--r--src/kernel/HALKit/POWER/HalApplicationProcessor.cc8
-rw-r--r--src/kernel/HALKit/POWER/HalDebugOutput.cc8
-rw-r--r--src/kernel/HALKit/POWER/HalHardwareThread.cc8
-rw-r--r--src/kernel/HALKit/POWER/HalVirtualMemory.cc8
-rw-r--r--src/kernel/HALKit/POWER/Processor.h10
-rw-r--r--src/kernel/HALKit/RISCV/AP.h15
-rw-r--r--src/kernel/HALKit/RISCV/HalApplicationProcessor.cc76
57 files changed, 453 insertions, 660 deletions
diff --git a/src/kernel/HALKit/AMD64/CPUID.h b/src/kernel/HALKit/AMD64/CPUID.h
index c8d26a2f..fadf2da5 100644
--- a/src/kernel/HALKit/AMD64/CPUID.h
+++ b/src/kernel/HALKit/AMD64/CPUID.h
@@ -1,15 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: CPUID.h
- Purpose: CPUID flags.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_CPUID_H
#define HALKIT_CPUID_H
diff --git a/src/kernel/HALKit/AMD64/CxxAbi.cc b/src/kernel/HALKit/AMD64/CxxAbi.cc
index 9049457b..f0f18266 100644
--- a/src/kernel/HALKit/AMD64/CxxAbi.cc
+++ b/src/kernel/HALKit/AMD64/CxxAbi.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/DebugOutput.h>
#include <KernelKit/KPC.h>
diff --git a/src/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc b/src/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc
index 83545df8..7368ea10 100644
--- a/src/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc
+++ b/src/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <HALKit/AMD64/Processor.h>
diff --git a/src/kernel/HALKit/AMD64/HalAPICDmaWrapper.cc b/src/kernel/HALKit/AMD64/HalAPICDmaWrapper.cc
index 79013b26..b262f2b3 100644
--- a/src/kernel/HALKit/AMD64/HalAPICDmaWrapper.cc
+++ b/src/kernel/HALKit/AMD64/HalAPICDmaWrapper.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/AMD64/Processor.h>
#include <modules/ACPI/ACPIFactoryInterface.h>
diff --git a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index 9b352dcc..9286af57 100644
--- a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -1,10 +1,7 @@
-/* ========================================
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/// Different than the MADT, might be confusing to some.
#define APIC_MAG "APIC"
#define APIC_ICR_LOW 0x300
diff --git a/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc b/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc
index 02931daf..c4209870 100644
--- a/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc
+++ b/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/ProcessScheduler.h>
diff --git a/src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc b/src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc
index f50e4abd..4e089de0 100644
--- a/src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc
+++ b/src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- ======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
diff --git a/src/kernel/HALKit/AMD64/HalDebugOutput.cc b/src/kernel/HALKit/AMD64/HalDebugOutput.cc
index 71e20ce6..dbddd092 100644
--- a/src/kernel/HALKit/AMD64/HalDebugOutput.cc
+++ b/src/kernel/HALKit/AMD64/HalDebugOutput.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/DebugOutput.h>
diff --git a/src/kernel/HALKit/AMD64/HalDebugProtocol.cc b/src/kernel/HALKit/AMD64/HalDebugProtocol.cc
index 1adfff3e..e7a2881b 100644
--- a/src/kernel/HALKit/AMD64/HalDebugProtocol.cc
+++ b/src/kernel/HALKit/AMD64/HalDebugProtocol.cc
@@ -1,11 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-//! @file DebuggerPort.cc
-//! @brief UART debug via packets.
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/DebugOutput.h>
diff --git a/src/kernel/HALKit/AMD64/HalDescriptorLoader.cc b/src/kernel/HALKit/AMD64/HalDescriptorLoader.cc
index 65bf0b1e..e803f7a8 100644
--- a/src/kernel/HALKit/AMD64/HalDescriptorLoader.cc
+++ b/src/kernel/HALKit/AMD64/HalDescriptorLoader.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <FSKit/NeFS.h>
diff --git a/src/kernel/HALKit/AMD64/HalKernelMain.cc b/src/kernel/HALKit/AMD64/HalKernelMain.cc
index 3a30bb04..2e2cca44 100644
--- a/src/kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/src/kernel/HALKit/AMD64/HalKernelMain.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <CFKit/Property.h>
diff --git a/src/kernel/HALKit/AMD64/HalKernelPanic.cc b/src/kernel/HALKit/AMD64/HalKernelPanic.cc
index 73121cbc..ed6a190b 100644
--- a/src/kernel/HALKit/AMD64/HalKernelPanic.cc
+++ b/src/kernel/HALKit/AMD64/HalKernelPanic.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <FirmwareKit/Handover.h>
diff --git a/src/kernel/HALKit/AMD64/HalPagingMgr.cc b/src/kernel/HALKit/AMD64/HalPagingMgr.cc
index 4043da96..52561b5c 100644
--- a/src/kernel/HALKit/AMD64/HalPagingMgr.cc
+++ b/src/kernel/HALKit/AMD64/HalPagingMgr.cc
@@ -1,11 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: HalPagingMgr.cc
- Purpose: Platform Paging Manager.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/AMD64/Paging.h>
#include <HALKit/AMD64/Processor.h>
diff --git a/src/kernel/HALKit/AMD64/HalProcessor.cc b/src/kernel/HALKit/AMD64/HalProcessor.cc
index cebf5e38..50c2ca53 100644
--- a/src/kernel/HALKit/AMD64/HalProcessor.cc
+++ b/src/kernel/HALKit/AMD64/HalProcessor.cc
@@ -1,11 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: HalCPU.cc
- Purpose: Platform processor routines.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/AMD64/Paging.h>
#include <HALKit/AMD64/Processor.h>
diff --git a/src/kernel/HALKit/AMD64/HalSchedulerCorePrimitives.cc b/src/kernel/HALKit/AMD64/HalSchedulerCorePrimitives.cc
index f120bd39..3571d2af 100644
--- a/src/kernel/HALKit/AMD64/HalSchedulerCorePrimitives.cc
+++ b/src/kernel/HALKit/AMD64/HalSchedulerCorePrimitives.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/AMD64/Processor.h>
#include <KernelKit/ProcessScheduler.h>
diff --git a/src/kernel/HALKit/AMD64/HalTimer.cc b/src/kernel/HALKit/AMD64/HalTimer.cc
index 8d5c0737..275c1ece 100644
--- a/src/kernel/HALKit/AMD64/HalTimer.cc
+++ b/src/kernel/HALKit/AMD64/HalTimer.cc
@@ -1,101 +1,92 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: HalTimer.cc
- Purpose: HAL timer
-
- Revision History:
-
- 07/07/24: Added file (amlel)
-
-======================================== */
-
-#include <ArchKit/ArchKit.h>
-#include <KernelKit/Timer.h>
-#include <modules/ACPI/ACPIFactoryInterface.h>
-
-/// ================================================================================
-/// @note timer slot 0
-/// ================================================================================
-
-#define kHPETSignature ("HPET")
-
-#define kHPETCounterRegValue (0x00)
-#define kHPETConfigRegValue (0x20)
-#define kHPETCompRegValue (0x24)
-#define kHPETInterruptRegValue (0x2C)
-
-/// ================================================================================
-///! BUGS: 0
-///! @file HalTimer.cc
-///! @brief Hardware Timer (HPET)
-/// ================================================================================
-
-namespace Kernel::Detail {
-struct HPET_BLOCK : public Kernel::SDT {
- Kernel::UInt8 hardware_rev_id;
- Kernel::UInt8 comparator_count : 5;
- Kernel::UInt8 counter_size : 1;
- Kernel::UInt8 reserved : 1;
- Kernel::UInt8 legacy_replacement : 1;
- Kernel::UInt16 pci_vendor_id;
- ACPI_ADDRESS address;
- Kernel::UInt8 hpet_number;
- Kernel::UInt16 minimum_tick;
- Kernel::UInt8 page_protection;
-} PACKED;
-} // namespace Kernel::Detail
-
-using namespace Kernel;
-
-HardwareTimer::HardwareTimer(UInt64 ms) : fWaitFor(ms) {
- auto power = PowerFactoryInterface(kHandoverHeader->f_HardwareTables.f_VendorPtr);
-
- auto hpet = (Detail::HPET_BLOCK*) power.Find(kHPETSignature).Leak().Leak();
- MUST_PASS(hpet);
-
- fDigitalTimer = (UInt8*) hpet->address.Address;
-
- if (hpet->page_protection) {
- HAL::mm_map_page((VoidPtr) fDigitalTimer, (VoidPtr) fDigitalTimer,
- HAL::kMMFlagsWr | HAL::kMMFlagsPCD | HAL::kMMFlagsPwt);
- }
-
- // if not enabled yet.
- if (!(*((volatile UInt64*) ((UInt8*) fDigitalTimer + kHPETConfigRegValue)) & (1 << 0))) {
- *((volatile UInt64*) ((UInt8*) fDigitalTimer + kHPETConfigRegValue)) =
- *((volatile UInt64*) ((UInt8*) fDigitalTimer + kHPETConfigRegValue)) | (1 << 0) |
- (1 << 3); // enable timer & one shot conf
- }
-}
-
-HardwareTimer::~HardwareTimer() {
- fDigitalTimer = nullptr;
- fWaitFor = 0;
-}
-
-/***********************************************************************************/
-/// @brief Wait for the timer to stop spinning.
-/***********************************************************************************/
-
-BOOL HardwareTimer::Wait() {
- if (fWaitFor < 1) return NO;
- if (fWaitFor > 1'000'000) return NO; // max 1000s = 16 minutes
-
- UInt64 hpet_cap = *((volatile UInt64*) (fDigitalTimer));
- UInt64 femtoseconds_per_tick = (hpet_cap >> 32);
-
- if (femtoseconds_per_tick == 0) return NO;
-
- volatile UInt64* timer = (volatile UInt64*) (fDigitalTimer + kHPETCounterRegValue);
-
- UInt64 now = *timer;
-
- UInt64 fs_wait = fWaitFor * 1'000'000'000'000ULL;
- UInt64 stop_at = now + (fs_wait / femtoseconds_per_tick);
-
- while (*timer < (stop_at)) asm volatile("pause");
-
- return YES;
-}
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#include <ArchKit/ArchKit.h>
+#include <KernelKit/Timer.h>
+#include <modules/ACPI/ACPIFactoryInterface.h>
+
+/// ================================================================================
+/// @note timer slot 0
+/// ================================================================================
+
+#define kHPETSignature ("HPET")
+
+#define kHPETCounterRegValue (0x00)
+#define kHPETConfigRegValue (0x20)
+#define kHPETCompRegValue (0x24)
+#define kHPETInterruptRegValue (0x2C)
+
+/// ================================================================================
+///! BUGS: 0
+///! @file HalTimer.cc
+///! @brief Hardware Timer (HPET)
+/// ================================================================================
+
+namespace Kernel::Detail {
+struct HPET_BLOCK : public Kernel::SDT {
+ Kernel::UInt8 hardware_rev_id;
+ Kernel::UInt8 comparator_count : 5;
+ Kernel::UInt8 counter_size : 1;
+ Kernel::UInt8 reserved : 1;
+ Kernel::UInt8 legacy_replacement : 1;
+ Kernel::UInt16 pci_vendor_id;
+ ACPI_ADDRESS address;
+ Kernel::UInt8 hpet_number;
+ Kernel::UInt16 minimum_tick;
+ Kernel::UInt8 page_protection;
+} PACKED;
+} // namespace Kernel::Detail
+
+using namespace Kernel;
+
+HardwareTimer::HardwareTimer(UInt64 ms) : fWaitFor(ms) {
+ auto power = PowerFactoryInterface(kHandoverHeader->f_HardwareTables.f_VendorPtr);
+
+ auto hpet = (Detail::HPET_BLOCK*) power.Find(kHPETSignature).Leak().Leak();
+ MUST_PASS(hpet);
+
+ fDigitalTimer = (UInt8*) hpet->address.Address;
+
+ if (hpet->page_protection) {
+ HAL::mm_map_page((VoidPtr) fDigitalTimer, (VoidPtr) fDigitalTimer,
+ HAL::kMMFlagsWr | HAL::kMMFlagsPCD | HAL::kMMFlagsPwt);
+ }
+
+ // if not enabled yet.
+ if (!(*((volatile UInt64*) ((UInt8*) fDigitalTimer + kHPETConfigRegValue)) & (1 << 0))) {
+ *((volatile UInt64*) ((UInt8*) fDigitalTimer + kHPETConfigRegValue)) =
+ *((volatile UInt64*) ((UInt8*) fDigitalTimer + kHPETConfigRegValue)) | (1 << 0) |
+ (1 << 3); // enable timer & one shot conf
+ }
+}
+
+HardwareTimer::~HardwareTimer() {
+ fDigitalTimer = nullptr;
+ fWaitFor = 0;
+}
+
+/***********************************************************************************/
+/// @brief Wait for the timer to stop spinning.
+/***********************************************************************************/
+
+BOOL HardwareTimer::Wait() {
+ if (fWaitFor < 1) return NO;
+ if (fWaitFor > 1'000'000) return NO; // max 1000s = 16 minutes
+
+ UInt64 hpet_cap = *((volatile UInt64*) (fDigitalTimer));
+ UInt64 femtoseconds_per_tick = (hpet_cap >> 32);
+
+ if (femtoseconds_per_tick == 0) return NO;
+
+ volatile UInt64* timer = (volatile UInt64*) (fDigitalTimer + kHPETCounterRegValue);
+
+ UInt64 now = *timer;
+
+ UInt64 fs_wait = fWaitFor * 1'000'000'000'000ULL;
+ UInt64 stop_at = now + (fs_wait / femtoseconds_per_tick);
+
+ while (*timer < (stop_at)) asm volatile("pause");
+
+ return YES;
+}
diff --git a/src/kernel/HALKit/AMD64/Hypervisor.h b/src/kernel/HALKit/AMD64/Hypervisor.h
index 70b2111a..6bb0b058 100644
--- a/src/kernel/HALKit/AMD64/Hypervisor.h
+++ b/src/kernel/HALKit/AMD64/Hypervisor.h
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_HYPERVISOR_H
#define HALKIT_HYPERVISOR_H
diff --git a/src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc b/src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc
index db839994..2f6cc6da 100644
--- a/src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc
+++ b/src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
-Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <DmaKit/DmaPool.h>
#include <HALKit/AMD64/Processor.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/DMA.cc b/src/kernel/HALKit/AMD64/PCI/DMA.cc
index dfbc1f68..73e5e401 100644
--- a/src/kernel/HALKit/AMD64/PCI/DMA.cc
+++ b/src/kernel/HALKit/AMD64/PCI/DMA.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/PCI/DMA.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/Database.cc b/src/kernel/HALKit/AMD64/PCI/Database.cc
index ba3e946c..7eb098da 100644
--- a/src/kernel/HALKit/AMD64/PCI/Database.cc
+++ b/src/kernel/HALKit/AMD64/PCI/Database.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/PCI/Database.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/Device.cc b/src/kernel/HALKit/AMD64/PCI/Device.cc
index 65af2f25..dcc16e6a 100644
--- a/src/kernel/HALKit/AMD64/PCI/Device.cc
+++ b/src/kernel/HALKit/AMD64/PCI/Device.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/PCI/Device.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/Express.cc b/src/kernel/HALKit/AMD64/PCI/Express.cc
index 2b6ba8d3..e0264d9e 100644
--- a/src/kernel/HALKit/AMD64/PCI/Express.cc
+++ b/src/kernel/HALKit/AMD64/PCI/Express.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/PCI/Express.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/IO.cc b/src/kernel/HALKit/AMD64/PCI/IO.cc
index 233c8ef2..8cc9c83a 100644
--- a/src/kernel/HALKit/AMD64/PCI/IO.cc
+++ b/src/kernel/HALKit/AMD64/PCI/IO.cc
@@ -1,7 +1,5 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/PCI/IO.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/Iterator.cc b/src/kernel/HALKit/AMD64/PCI/Iterator.cc
index 103ddb2c..8216befa 100644
--- a/src/kernel/HALKit/AMD64/PCI/Iterator.cc
+++ b/src/kernel/HALKit/AMD64/PCI/Iterator.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/PCI/Iterator.h>
diff --git a/src/kernel/HALKit/AMD64/PCI/PCI.cc b/src/kernel/HALKit/AMD64/PCI/PCI.cc
index a8c48fb9..b8a1302d 100644
--- a/src/kernel/HALKit/AMD64/PCI/PCI.cc
+++ b/src/kernel/HALKit/AMD64/PCI/PCI.cc
@@ -1,7 +1,5 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/PCI/PCI.h>
diff --git a/src/kernel/HALKit/AMD64/Paging.h b/src/kernel/HALKit/AMD64/Paging.h
index 162e5fd3..41543f5d 100644
--- a/src/kernel/HALKit/AMD64/Paging.h
+++ b/src/kernel/HALKit/AMD64/Paging.h
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_PAGING_H
#define HALKIT_PAGING_H
diff --git a/src/kernel/HALKit/AMD64/Processor.h b/src/kernel/HALKit/AMD64/Processor.h
index 352af95f..7501ec63 100644
--- a/src/kernel/HALKit/AMD64/Processor.h
+++ b/src/kernel/HALKit/AMD64/Processor.h
@@ -1,15 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: Prcoessor.h
- Purpose: AMD64 processor abstraction.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_PROCESSOR_H
#define HALKIT_PROCESSOR_H
diff --git a/src/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/src/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
index 561b03cb..28969475 100644
--- a/src/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
+++ b/src/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
@@ -1,19 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/**
- * @file AHCI+Generic.cc
- * @author Amlal El Mahrouss (amlal@nekernel.org)
- * @brief AHCI Generic driver.
- * @version 0.1
- * @date 2024-02-02
- *
- * @copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
- *
- */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <DmaKit/DmaPool.h>
#include <FirmwareKit/EPM.h>
diff --git a/src/kernel/HALKit/AMD64/Storage/DMA+Generic.cc b/src/kernel/HALKit/AMD64/Storage/DMA+Generic.cc
index 5a51d685..8bf7b161 100644
--- a/src/kernel/HALKit/AMD64/Storage/DMA+Generic.cc
+++ b/src/kernel/HALKit/AMD64/Storage/DMA+Generic.cc
@@ -1,19 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/**
- * @file DMA+Generic.cc
- * @author Amlal El Mahrouss (amlal@nekernel.org)
- * @brief ATA driver (DMA mode).
- * @version 0.1
- * @date 2024-02-02
- *
- * @copyright Copyright (c) Amlal El Mahrouss
- *
- */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/PCI/Iterator.h>
diff --git a/src/kernel/HALKit/AMD64/Storage/NVME+Generic.cc b/src/kernel/HALKit/AMD64/Storage/NVME+Generic.cc
index 88f95a86..7b0726e7 100644
--- a/src/kernel/HALKit/AMD64/Storage/NVME+Generic.cc
+++ b/src/kernel/HALKit/AMD64/Storage/NVME+Generic.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <modules/NVME/NVME.h>
diff --git a/src/kernel/HALKit/AMD64/Storage/PIO+Generic.cc b/src/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
index a62884f9..19497b5f 100644
--- a/src/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
+++ b/src/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
@@ -1,19 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/**
- * @file PIO+Generic.cc
- * @author Amlal El Mahrouss (amlal@nekernel.org)
- * @brief ATA driver (PIO mode).
- * @version 0.1
- * @date 2024-02-02
- *
- * @copyright Copyright (c) Amlal El Mahrouss
- *
- */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/DriveMgr.h>
diff --git a/src/kernel/HALKit/AMD64/Storage/SCSI+Generic.cc b/src/kernel/HALKit/AMD64/Storage/SCSI+Generic.cc
index 0200ec5a..f73946d7 100644
--- a/src/kernel/HALKit/AMD64/Storage/SCSI+Generic.cc
+++ b/src/kernel/HALKit/AMD64/Storage/SCSI+Generic.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <modules/SCSI/SCSI.h>
diff --git a/src/kernel/HALKit/ARM64/APM/APM+IO.cc b/src/kernel/HALKit/ARM64/APM/APM+IO.cc
index c4d0154b..91b8255e 100644
--- a/src/kernel/HALKit/ARM64/APM/APM+IO.cc
+++ b/src/kernel/HALKit/ARM64/APM/APM+IO.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/KPC.h>
#include <modules/APM/APM.h>
diff --git a/src/kernel/HALKit/ARM64/ApplicationProcessor.h b/src/kernel/HALKit/ARM64/ApplicationProcessor.h
index 2ce60dd1..11903786 100644
--- a/src/kernel/HALKit/ARM64/ApplicationProcessor.h
+++ b/src/kernel/HALKit/ARM64/ApplicationProcessor.h
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_APPLICATIONPROCESSOR_H
#define HALKIT_APPLICATIONPROCESSOR_H
diff --git a/src/kernel/HALKit/ARM64/CxxAbi.cc b/src/kernel/HALKit/ARM64/CxxAbi.cc
index 7b4eca20..7b19aa71 100644
--- a/src/kernel/HALKit/ARM64/CxxAbi.cc
+++ b/src/kernel/HALKit/ARM64/CxxAbi.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/DebugOutput.h>
#include <KernelKit/KPC.h>
diff --git a/src/kernel/HALKit/ARM64/HalACPIFactoryInterface.cc b/src/kernel/HALKit/ARM64/HalACPIFactoryInterface.cc
index 9a8661cd..544d1ee1 100644
--- a/src/kernel/HALKit/ARM64/HalACPIFactoryInterface.cc
+++ b/src/kernel/HALKit/ARM64/HalACPIFactoryInterface.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/HeapMgr.h>
diff --git a/src/kernel/HALKit/ARM64/HalApplicationProcessor.cc b/src/kernel/HALKit/ARM64/HalApplicationProcessor.cc
index fff4282f..33921a56 100644
--- a/src/kernel/HALKit/ARM64/HalApplicationProcessor.cc
+++ b/src/kernel/HALKit/ARM64/HalApplicationProcessor.cc
@@ -1,140 +1,138 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#define GICD_BASE 0x08000000
-#define GICC_BASE 0x08010000
-
-#define GICD_CTLR 0x000
-#define GICD_ISENABLER 0x100
-#define GICD_ICENABLER 0x180
-#define GICD_ISPENDR 0x200
-#define GICD_ICPENDR 0x280
-#define GICD_IPRIORITYR 0x400
-#define GICD_ITARGETSR 0x800
-#define GICD_ICFGR 0xC00
-
-#define GICC_CTLR 0x000
-#define GICC_PMR 0x004
-#define GICC_IAR 0x00C
-#define GICC_EOIR 0x010
-
-#include <HALKit/ARM64/ApplicationProcessor.h>
-#include <HALKit/ARM64/Processor.h>
-#include <KernelKit/DebugOutput.h>
-#include <KernelKit/HardwareThreadScheduler.h>
-#include <KernelKit/ProcessScheduler.h>
-#include <KernelKit/Timer.h>
-
-// ================================================================= //
-
-namespace Kernel {
-struct HAL_HARDWARE_THREAD final {
- HAL::StackFramePtr mFramePtr;
- ProcessID mThreadID{0};
-};
-
-STATIC HAL_HARDWARE_THREAD kHWThread[kMaxAPInsideSched] = {{nullptr}};
-
-namespace Detail {
- STATIC BOOL kGICEnabled = NO;
-
- /***********************************************************************************/
- /// @brief Enables the GIC with EL0 configuration.
- /// @internal
- /***********************************************************************************/
- STATIC Void mp_setup_gic_el0(Void) {
- ke_dma_write<UInt32>(GICD_BASE, GICD_CTLR, YES);
-
- UInt32 gicc_ctlr = ke_dma_read<UInt32>(GICC_BASE, GICC_CTLR);
-
- const UInt8 kEnableSignalInt = 0x1;
-
- gicc_ctlr |= kEnableSignalInt;
- gicc_ctlr |= (kEnableSignalInt << 0x1);
-
- ke_dma_write<UInt32>(GICC_BASE, GICC_CTLR, gicc_ctlr);
-
- ke_dma_write<UInt32>(GICC_BASE, GICC_PMR, 0xFF);
-
- UInt32 icfgr = ke_dma_read<UInt32>(GICD_BASE, GICD_ICFGR + (0x20 / 0x10) * 4);
-
- icfgr |= (0x2 << ((32 % 16) * 2));
-
- ke_dma_write<UInt32>(GICD_BASE, GICD_ICFGR + (0x20 / 0x10) * 4, icfgr);
- ke_dma_write<UInt32>(GICD_BASE, GICD_ITARGETSR + (0x20 / 0x04) * 4, 0x2 << ((32 % 4) * 8));
- ke_dma_write<UInt32>(GICD_BASE, GICD_IPRIORITYR + (0x20 / 0x04) * 4, 0xFF << ((32 % 4) * 8));
- ke_dma_write<UInt32>(GICD_BASE, GICD_ISENABLER + 4, 0x01);
- }
-
- EXTERN_C BOOL mp_handle_gic_interrupt_el0(Void) {
- UInt32 interrupt_id = ke_dma_read<UInt32>(GICC_BASE, GICC_IAR);
-
- if ((interrupt_id & 0x3FF) < 1020) {
- auto interrupt = interrupt_id & 0x3FF;
-
- const UInt16 kInterruptScheduler = 0x20;
-
- (Void)(kout << "SMP: AP: " << hex_number(interrupt) << kendl);
-
- switch (interrupt) {
- case kInterruptScheduler: {
- ke_dma_write<UInt32>(GICC_BASE, GICC_EOIR, interrupt_id);
- UserProcessHelper::StartScheduling();
- break;
- }
- default: {
- ke_dma_write<UInt32>(GICC_BASE, GICC_EOIR, interrupt_id);
- break;
- }
- }
-
- return YES;
- }
-
- return NO;
- }
-} // namespace Detail
-
-/***********************************************************************************/
-/// @brief Get current stack frame for a thread.
-/// @param thrdid The thread ID.
-/***********************************************************************************/
-
-EXTERN_C HAL::StackFramePtr mp_get_current_task(ProcessID thrdid) {
- return kHWThread[thrdid].mFramePtr;
-}
-
-/***********************************************************************************/
-/// @brief Register current stack frame for a thread.
-/// @param stack_frame The current stack frame.
-/// @param thrdid The thread ID.
-/***********************************************************************************/
-
-EXTERN_C Bool mp_register_task(HAL::StackFramePtr stack_frame, ProcessID thrdid) {
- MUST_PASS(Detail::kGICEnabled);
-
- if (!stack_frame) return NO;
- if (thrdid > kMaxAPInsideSched) return NO;
-
- const auto process_index = thrdid;
-
- kHWThread[process_index].mFramePtr = stack_frame;
- kHWThread[process_index].mThreadID = thrdid;
-
- return YES;
-}
-
-/***********************************************************************************/
-/// @brief Initialize the Global Interrupt Controller.
-/// @internal
-/***********************************************************************************/
-Void mp_init_cores(Void) {
- if (!Detail::kGICEnabled) {
- Detail::kGICEnabled = YES;
- Detail::mp_setup_gic_el0();
- }
-}
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#define GICD_BASE 0x08000000
+#define GICC_BASE 0x08010000
+
+#define GICD_CTLR 0x000
+#define GICD_ISENABLER 0x100
+#define GICD_ICENABLER 0x180
+#define GICD_ISPENDR 0x200
+#define GICD_ICPENDR 0x280
+#define GICD_IPRIORITYR 0x400
+#define GICD_ITARGETSR 0x800
+#define GICD_ICFGR 0xC00
+
+#define GICC_CTLR 0x000
+#define GICC_PMR 0x004
+#define GICC_IAR 0x00C
+#define GICC_EOIR 0x010
+
+#include <HALKit/ARM64/ApplicationProcessor.h>
+#include <HALKit/ARM64/Processor.h>
+#include <KernelKit/DebugOutput.h>
+#include <KernelKit/HardwareThreadScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
+#include <KernelKit/Timer.h>
+
+// ================================================================= //
+
+namespace Kernel {
+struct HAL_HARDWARE_THREAD final {
+ HAL::StackFramePtr mFramePtr;
+ ProcessID mThreadID{0};
+};
+
+STATIC HAL_HARDWARE_THREAD kHWThread[kMaxAPInsideSched] = {{nullptr}};
+
+namespace Detail {
+ STATIC BOOL kGICEnabled = NO;
+
+ /***********************************************************************************/
+ /// @brief Enables the GIC with EL0 configuration.
+ /// @internal
+ /***********************************************************************************/
+ STATIC Void mp_setup_gic_el0(Void) {
+ ke_dma_write<UInt32>(GICD_BASE, GICD_CTLR, YES);
+
+ UInt32 gicc_ctlr = ke_dma_read<UInt32>(GICC_BASE, GICC_CTLR);
+
+ const UInt8 kEnableSignalInt = 0x1;
+
+ gicc_ctlr |= kEnableSignalInt;
+ gicc_ctlr |= (kEnableSignalInt << 0x1);
+
+ ke_dma_write<UInt32>(GICC_BASE, GICC_CTLR, gicc_ctlr);
+
+ ke_dma_write<UInt32>(GICC_BASE, GICC_PMR, 0xFF);
+
+ UInt32 icfgr = ke_dma_read<UInt32>(GICD_BASE, GICD_ICFGR + (0x20 / 0x10) * 4);
+
+ icfgr |= (0x2 << ((32 % 16) * 2));
+
+ ke_dma_write<UInt32>(GICD_BASE, GICD_ICFGR + (0x20 / 0x10) * 4, icfgr);
+ ke_dma_write<UInt32>(GICD_BASE, GICD_ITARGETSR + (0x20 / 0x04) * 4, 0x2 << ((32 % 4) * 8));
+ ke_dma_write<UInt32>(GICD_BASE, GICD_IPRIORITYR + (0x20 / 0x04) * 4, 0xFF << ((32 % 4) * 8));
+ ke_dma_write<UInt32>(GICD_BASE, GICD_ISENABLER + 4, 0x01);
+ }
+
+ EXTERN_C BOOL mp_handle_gic_interrupt_el0(Void) {
+ UInt32 interrupt_id = ke_dma_read<UInt32>(GICC_BASE, GICC_IAR);
+
+ if ((interrupt_id & 0x3FF) < 1020) {
+ auto interrupt = interrupt_id & 0x3FF;
+
+ const UInt16 kInterruptScheduler = 0x20;
+
+ (Void)(kout << "SMP: AP: " << hex_number(interrupt) << kendl);
+
+ switch (interrupt) {
+ case kInterruptScheduler: {
+ ke_dma_write<UInt32>(GICC_BASE, GICC_EOIR, interrupt_id);
+ UserProcessHelper::StartScheduling();
+ break;
+ }
+ default: {
+ ke_dma_write<UInt32>(GICC_BASE, GICC_EOIR, interrupt_id);
+ break;
+ }
+ }
+
+ return YES;
+ }
+
+ return NO;
+ }
+} // namespace Detail
+
+/***********************************************************************************/
+/// @brief Get current stack frame for a thread.
+/// @param thrdid The thread ID.
+/***********************************************************************************/
+
+EXTERN_C HAL::StackFramePtr mp_get_current_task(ProcessID thrdid) {
+ return kHWThread[thrdid].mFramePtr;
+}
+
+/***********************************************************************************/
+/// @brief Register current stack frame for a thread.
+/// @param stack_frame The current stack frame.
+/// @param thrdid The thread ID.
+/***********************************************************************************/
+
+EXTERN_C Bool mp_register_task(HAL::StackFramePtr stack_frame, ProcessID thrdid) {
+ MUST_PASS(Detail::kGICEnabled);
+
+ if (!stack_frame) return NO;
+ if (thrdid > kMaxAPInsideSched) return NO;
+
+ const auto process_index = thrdid;
+
+ kHWThread[process_index].mFramePtr = stack_frame;
+ kHWThread[process_index].mThreadID = thrdid;
+
+ return YES;
+}
+
+/***********************************************************************************/
+/// @brief Initialize the Global Interrupt Controller.
+/// @internal
+/***********************************************************************************/
+Void mp_init_cores(Void) {
+ if (!Detail::kGICEnabled) {
+ Detail::kGICEnabled = YES;
+ Detail::mp_setup_gic_el0();
+ }
+}
} // namespace Kernel \ No newline at end of file
diff --git a/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc b/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc
index a9bbb044..bb735ffb 100644
--- a/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc
+++ b/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/ProcessScheduler.h>
diff --git a/src/kernel/HALKit/ARM64/HalDebugOutput.cc b/src/kernel/HALKit/ARM64/HalDebugOutput.cc
index 2a49bb56..4e47d38e 100644
--- a/src/kernel/HALKit/ARM64/HalDebugOutput.cc
+++ b/src/kernel/HALKit/ARM64/HalDebugOutput.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/DebugOutput.h>
diff --git a/src/kernel/HALKit/ARM64/HalKernelMain.cc b/src/kernel/HALKit/ARM64/HalKernelMain.cc
index 1cd10838..3a6e4085 100644
--- a/src/kernel/HALKit/ARM64/HalKernelMain.cc
+++ b/src/kernel/HALKit/ARM64/HalKernelMain.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <CFKit/Property.h>
diff --git a/src/kernel/HALKit/ARM64/HalKernelPanic.cc b/src/kernel/HALKit/ARM64/HalKernelPanic.cc
index 6c3afe83..59397611 100644
--- a/src/kernel/HALKit/ARM64/HalKernelPanic.cc
+++ b/src/kernel/HALKit/ARM64/HalKernelPanic.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <FirmwareKit/Handover.h>
diff --git a/src/kernel/HALKit/ARM64/HalPagingMgr.cc b/src/kernel/HALKit/ARM64/HalPagingMgr.cc
index d597ccce..0fe4d759 100644
--- a/src/kernel/HALKit/ARM64/HalPagingMgr.cc
+++ b/src/kernel/HALKit/ARM64/HalPagingMgr.cc
@@ -1,11 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: HalPagingMgr.cc
- Purpose: Platform Paging Manager.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/ARM64/Paging.h>
#include <HALKit/ARM64/Processor.h>
diff --git a/src/kernel/HALKit/ARM64/HalSchedulerCore.cc b/src/kernel/HALKit/ARM64/HalSchedulerCore.cc
index 467547b0..ecf666e8 100644
--- a/src/kernel/HALKit/ARM64/HalSchedulerCore.cc
+++ b/src/kernel/HALKit/ARM64/HalSchedulerCore.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <KernelKit/ProcessScheduler.h>
diff --git a/src/kernel/HALKit/ARM64/HalSchedulerCorePrimitives.cc b/src/kernel/HALKit/ARM64/HalSchedulerCorePrimitives.cc
index 87fa1ab6..960dbc6d 100644
--- a/src/kernel/HALKit/ARM64/HalSchedulerCorePrimitives.cc
+++ b/src/kernel/HALKit/ARM64/HalSchedulerCorePrimitives.cc
@@ -1,30 +1,28 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <HALKit/ARM64/Processor.h>
-#include <KernelKit/ProcessScheduler.h>
-
-namespace Kernel {
-/***********************************************************************************/
-/// @brief Unimplemented function (crashes by default)
-/// @param process The process handle.
-/***********************************************************************************/
-
-EXTERN_C Void __ne_pure_call(UserProcess* process) {
- if (process) process->Crash();
-}
-
-/***********************************************************************************/
-/// @brief Validate user stack.
-/// @param stack_ptr the frame pointer.
-/***********************************************************************************/
-
-EXTERN_C Bool hal_check_task(HAL::StackFramePtr stack_ptr) {
- if (!stack_ptr) return No;
-
- return stack_ptr->SP != 0 && stack_ptr->IP != 0;
-}
-} // namespace Kernel
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#include <HALKit/ARM64/Processor.h>
+#include <KernelKit/ProcessScheduler.h>
+
+namespace Kernel {
+/***********************************************************************************/
+/// @brief Unimplemented function (crashes by default)
+/// @param process The process handle.
+/***********************************************************************************/
+
+EXTERN_C Void __ne_pure_call(UserProcess* process) {
+ if (process) process->Crash();
+}
+
+/***********************************************************************************/
+/// @brief Validate user stack.
+/// @param stack_ptr the frame pointer.
+/***********************************************************************************/
+
+EXTERN_C Bool hal_check_task(HAL::StackFramePtr stack_ptr) {
+ if (!stack_ptr) return No;
+
+ return stack_ptr->SP != 0 && stack_ptr->IP != 0;
+}
+} // namespace Kernel
diff --git a/src/kernel/HALKit/ARM64/HalTimer.cc b/src/kernel/HALKit/ARM64/HalTimer.cc
index 2f524a1b..3084838d 100644
--- a/src/kernel/HALKit/ARM64/HalTimer.cc
+++ b/src/kernel/HALKit/ARM64/HalTimer.cc
@@ -1,15 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: HalTimer.cc
- Purpose: HAL timer
-
- Revision History:
-
- 07/07/24: Added file (amlel)
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
#include <KernelKit/Timer.h> \ No newline at end of file
diff --git a/src/kernel/HALKit/ARM64/Paging.h b/src/kernel/HALKit/ARM64/Paging.h
index 7526b640..8dedf65f 100644
--- a/src/kernel/HALKit/ARM64/Paging.h
+++ b/src/kernel/HALKit/ARM64/Paging.h
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_PAGING_H
#define HALKIT_PAGING_H
diff --git a/src/kernel/HALKit/ARM64/Processor.h b/src/kernel/HALKit/ARM64/Processor.h
index f4df9a92..ca69fc19 100644
--- a/src/kernel/HALKit/ARM64/Processor.h
+++ b/src/kernel/HALKit/ARM64/Processor.h
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_PROCESSOR_H
#define HALKIT_PROCESSOR_H
diff --git a/src/kernel/HALKit/ARM64/Storage/SCSI+Generic.cc b/src/kernel/HALKit/ARM64/Storage/SCSI+Generic.cc
index 0200ec5a..f73946d7 100644
--- a/src/kernel/HALKit/ARM64/Storage/SCSI+Generic.cc
+++ b/src/kernel/HALKit/ARM64/Storage/SCSI+Generic.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <modules/SCSI/SCSI.h>
diff --git a/src/kernel/HALKit/ARM64/Storage/UFS+Generic.cc b/src/kernel/HALKit/ARM64/Storage/UFS+Generic.cc
index 9971b2a8..ba8d285b 100644
--- a/src/kernel/HALKit/ARM64/Storage/UFS+Generic.cc
+++ b/src/kernel/HALKit/ARM64/Storage/UFS+Generic.cc
@@ -1,8 +1,3 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/// @file UFS.cc
-/// @brief UFS Flash Memory support.
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
diff --git a/src/kernel/HALKit/POWER/AP.h b/src/kernel/HALKit/POWER/AP.h
index 2699d9f0..f5af585c 100644
--- a/src/kernel/HALKit/POWER/AP.h
+++ b/src/kernel/HALKit/POWER/AP.h
@@ -1,15 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: AP.h
- Purpose: POWER hardware threads.
-
- Revision History:
-
- 14/04/24: Added file (amlel)
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_AP_H
#define HALKIT_AP_H
diff --git a/src/kernel/HALKit/POWER/HalApplicationProcessor.cc b/src/kernel/HALKit/POWER/HalApplicationProcessor.cc
index fa65deae..64333086 100644
--- a/src/kernel/HALKit/POWER/HalApplicationProcessor.cc
+++ b/src/kernel/HALKit/POWER/HalApplicationProcessor.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/POWER/AP.h>
#include <HALKit/POWER/Processor.h>
diff --git a/src/kernel/HALKit/POWER/HalDebugOutput.cc b/src/kernel/HALKit/POWER/HalDebugOutput.cc
index 0c4be809..c43e575d 100644
--- a/src/kernel/HALKit/POWER/HalDebugOutput.cc
+++ b/src/kernel/HALKit/POWER/HalDebugOutput.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/POWER/Processor.h>
#include <KernelKit/DebugOutput.h>
diff --git a/src/kernel/HALKit/POWER/HalHardwareThread.cc b/src/kernel/HALKit/POWER/HalHardwareThread.cc
index c77040f7..fff5b68b 100644
--- a/src/kernel/HALKit/POWER/HalHardwareThread.cc
+++ b/src/kernel/HALKit/POWER/HalHardwareThread.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/POWER/Processor.h>
#include <KernelKit/DebugOutput.h>
diff --git a/src/kernel/HALKit/POWER/HalVirtualMemory.cc b/src/kernel/HALKit/POWER/HalVirtualMemory.cc
index cd9511c9..0c954f29 100644
--- a/src/kernel/HALKit/POWER/HalVirtualMemory.cc
+++ b/src/kernel/HALKit/POWER/HalVirtualMemory.cc
@@ -1,8 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#include <HALKit/POWER/MMU.h>
#include <HALKit/POWER/Processor.h>
diff --git a/src/kernel/HALKit/POWER/Processor.h b/src/kernel/HALKit/POWER/Processor.h
index decdfc38..a02b99d1 100644
--- a/src/kernel/HALKit/POWER/Processor.h
+++ b/src/kernel/HALKit/POWER/Processor.h
@@ -1,10 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- Purpose: POWER processor header.
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_PROCESSOR_H
#define HALKIT_PROCESSOR_H
diff --git a/src/kernel/HALKit/RISCV/AP.h b/src/kernel/HALKit/RISCV/AP.h
index 0d8fbd94..4c9e17cb 100644
--- a/src/kernel/HALKit/RISCV/AP.h
+++ b/src/kernel/HALKit/RISCV/AP.h
@@ -1,15 +1,6 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- File: AP.h
- Purpose: RISC-V hardware threads.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-======================================== */
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
#ifndef HALKIT_AP_H
#define HALKIT_AP_H
diff --git a/src/kernel/HALKit/RISCV/HalApplicationProcessor.cc b/src/kernel/HALKit/RISCV/HalApplicationProcessor.cc
index 16c9e33f..68242f97 100644
--- a/src/kernel/HALKit/RISCV/HalApplicationProcessor.cc
+++ b/src/kernel/HALKit/RISCV/HalApplicationProcessor.cc
@@ -1,39 +1,37 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <HALKit/RISCV/AP.h>
-#include <HALKit/RISCV/Processor.h>
-#include <KernelKit/DebugOutput.h>
-
-using namespace Kernel;
-
-namespace Kernel {
-namespace Detail {
- STATIC void mp_hang_fn(void) {
- while (YES);
- }
-
-} // namespace Detail
-
-/// @brief wakes up thread.
-/// wakes up thread from hang.
-void mp_wakeup_thread(HAL::StackFramePtr stack) {
- if (!stack) return;
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15),
- reinterpret_cast<VoidPtr>(stack->IP));
-}
-
-/// @brief makes thread sleep.
-/// hooks and hangs thread to prevent code from executing.
-void mp_hang_thread(HAL::StackFramePtr stack) {
- if (!stack) return;
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15),
- reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
-}
-
-} // namespace Kernel
+// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#include <HALKit/RISCV/AP.h>
+#include <HALKit/RISCV/Processor.h>
+#include <KernelKit/DebugOutput.h>
+
+using namespace Kernel;
+
+namespace Kernel {
+namespace Detail {
+ STATIC void mp_hang_fn(void) {
+ while (YES);
+ }
+
+} // namespace Detail
+
+/// @brief wakes up thread.
+/// wakes up thread from hang.
+void mp_wakeup_thread(HAL::StackFramePtr stack) {
+ if (!stack) return;
+
+ hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15),
+ reinterpret_cast<VoidPtr>(stack->IP));
+}
+
+/// @brief makes thread sleep.
+/// hooks and hangs thread to prevent code from executing.
+void mp_hang_thread(HAL::StackFramePtr stack) {
+ if (!stack) return;
+
+ hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15),
+ reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
+}
+
+} // namespace Kernel