diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-27 08:55:09 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-27 08:55:09 +0100 |
| commit | e159d3895e29f38ec1345d396a593a04b7475b92 (patch) | |
| tree | 5be83ae6f069465780504a642f00955aa3e7b509 /src/kernel/HALKit | |
| parent | 9e746d42d2e3faa526f12ba222f5ee6924dd30f9 (diff) | |
kernel! giant source code refactor.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/HALKit')
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 |
