summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/HALKit/POWER
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
commit83d870e58457a1d335a1d9b9966a6a1887cc297b (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /dev/kernel/HALKit/POWER
parentab37adbacf0f33845804c788b39680cd754752a8 (diff)
feat! breaking changes on kernel sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/HALKit/POWER')
-rw-r--r--dev/kernel/HALKit/POWER/.gitkeep0
-rw-r--r--dev/kernel/HALKit/POWER/AP.h39
-rw-r--r--dev/kernel/HALKit/POWER/APM/.gitkeep0
-rw-r--r--dev/kernel/HALKit/POWER/HalApplicationProcessor.cc43
-rw-r--r--dev/kernel/HALKit/POWER/HalDebugOutput.cc24
-rw-r--r--dev/kernel/HALKit/POWER/HalHardwareThread.cc8
-rw-r--r--dev/kernel/HALKit/POWER/HalStartSequence.s14
-rw-r--r--dev/kernel/HALKit/POWER/HalVirtualMemory.cc46
-rw-r--r--dev/kernel/HALKit/POWER/Processor.h60
9 files changed, 0 insertions, 234 deletions
diff --git a/dev/kernel/HALKit/POWER/.gitkeep b/dev/kernel/HALKit/POWER/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/kernel/HALKit/POWER/.gitkeep
+++ /dev/null
diff --git a/dev/kernel/HALKit/POWER/AP.h b/dev/kernel/HALKit/POWER/AP.h
deleted file mode 100644
index efe4ceff..00000000
--- a/dev/kernel/HALKit/POWER/AP.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* ========================================
-
- 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)
-
-======================================== */
-
-#pragma once
-
-#include <NeKit/Defines.h>
-
-namespace Kernel {
-struct HAL_HARDWARE_THREAD;
-
-/// @brief hardware thread indentification type.
-typedef Kernel::Int32 hal_ap_kind;
-
-/// @brief Hardware thread information structure.
-typedef struct HAL_HARDWARE_THREAD {
- Kernel::UIntPtr fStartAddress;
- Kernel::UIntPtr fStackPtr;
- Kernel::UIntPtr fFramePtr;
- Kernel::UInt8 fPrivileged : 1;
- Kernel::UInt32 fPageMemoryFlags;
- hal_ap_kind fIdentNumber;
-} HAL_HARDWARE_THREAD;
-
-/// @brief Set PC to specific hart.
-/// @param hart the hart
-/// @param epc the pc.
-/// @return
-EXTERN_C Kernel::Void hal_set_pc_to_hart(HAL_HARDWARE_THREAD* hart, Kernel::VoidPtr epc);
-} // namespace Kernel
diff --git a/dev/kernel/HALKit/POWER/APM/.gitkeep b/dev/kernel/HALKit/POWER/APM/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/kernel/HALKit/POWER/APM/.gitkeep
+++ /dev/null
diff --git a/dev/kernel/HALKit/POWER/HalApplicationProcessor.cc b/dev/kernel/HALKit/POWER/HalApplicationProcessor.cc
deleted file mode 100644
index 84d9b1c1..00000000
--- a/dev/kernel/HALKit/POWER/HalApplicationProcessor.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <HALKit/POWER/AP.h>
-#include <HALKit/POWER/Processor.h>
-#include <KernelKit/DebugOutput.h>
-
-/// @note This part of the HAL needs an owner.
-
-namespace Kernel::Detail {
-STATIC void mp_hang_fn(void) {
- while (YES)
- ;
-}
-} // namespace Kernel::Detail
-
-namespace Kernel {
-/// @brief wakes up thread.
-/// wakes up thread from hang.
-void mp_wakeup_thread(HAL::StackFramePtr stack) {
- if (!stack) return;
-
- MUST_PASS(stack->R15 > 0);
- MUST_PASS(stack->IP > 0);
-
- 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;
-
- MUST_PASS(stack->R15 > 0);
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15),
- reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
-}
-} // namespace Kernel
diff --git a/dev/kernel/HALKit/POWER/HalDebugOutput.cc b/dev/kernel/HALKit/POWER/HalDebugOutput.cc
deleted file mode 100644
index 0c4be809..00000000
--- a/dev/kernel/HALKit/POWER/HalDebugOutput.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <HALKit/POWER/Processor.h>
-#include <KernelKit/DebugOutput.h>
-
-using namespace Kernel;
-
-/// @brief Writes to COM1.
-/// @param bytes
-void ke_io_write(const Char* bytes) {
- if (!bytes) return;
-
- SizeT index = 0;
- SizeT len = rt_string_len(bytes, 256U);
-
- while (index < len) {
- // TODO
- ++index;
- }
-}
diff --git a/dev/kernel/HALKit/POWER/HalHardwareThread.cc b/dev/kernel/HALKit/POWER/HalHardwareThread.cc
deleted file mode 100644
index c77040f7..00000000
--- a/dev/kernel/HALKit/POWER/HalHardwareThread.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <HALKit/POWER/Processor.h>
-#include <KernelKit/DebugOutput.h>
diff --git a/dev/kernel/HALKit/POWER/HalStartSequence.s b/dev/kernel/HALKit/POWER/HalStartSequence.s
deleted file mode 100644
index 194e220e..00000000
--- a/dev/kernel/HALKit/POWER/HalStartSequence.s
+++ /dev/null
@@ -1,14 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-.globl __ImageStart
-.extern hal_init_platform
-.align 4
-.text
-
-__ImageStart:
- bl hal_init_platform
- blr
diff --git a/dev/kernel/HALKit/POWER/HalVirtualMemory.cc b/dev/kernel/HALKit/POWER/HalVirtualMemory.cc
deleted file mode 100644
index cd9511c9..00000000
--- a/dev/kernel/HALKit/POWER/HalVirtualMemory.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <HALKit/POWER/MMU.h>
-#include <HALKit/POWER/Processor.h>
-#include <KernelKit/DebugOutput.h>
-
-/// @note Refer to SoC documentation.
-
-using namespace Kernel;
-
-EXTERN_C Void hal_write_tlb(UInt32 mas0, UInt32 mas1, UInt32 mas2, UInt32 mas3, UInt32 mas7) {
- hal_mtspr(MAS0, mas0);
- hal_mtspr(MAS1, mas1);
- hal_mtspr(MAS2, mas2);
- hal_mtspr(MAS3, mas3);
- hal_mtspr(MAS7, mas7);
-
- hal_flush_tlb();
-}
-
-EXTERN_C Bool hal_set_tlb(UInt8 tlb, UInt32 epn, UInt64 rpn, UInt8 perms, UInt8 wimge, UInt8 ts,
- UInt8 esel, UInt8 tsize, UInt8 iprot) {
- if ((hal_mfspr(SPRN_MMUCFG) & MMUCFG_MAVN) == MMUCFG_MAVN_V1 && (tsize & 1)) {
- // this MMU does not allow odd tsize values
- return false;
- }
-
- UInt32 mas0 = FSL_BOOKE_MAS0(tlb, esel, 0);
- UInt32 mas1 = FSL_BOOKE_MAS1(1, iprot, 0, ts, tsize);
- UInt32 mas2 = FSL_BOOKE_MAS2(epn, wimge);
- UInt32 mas3 = FSL_BOOKE_MAS3(rpn, 0, perms);
- UInt32 mas7 = FSL_BOOKE_MAS7(rpn);
-
- hal_write_tlb(mas0, mas1, mas2, mas3, mas7);
-
- return true;
-}
-
-/// @brief Flush TLB
-EXTERN_C void hal_flush_tlb() {
- asm volatile("isync;tlbwe;msync;isync");
-}
diff --git a/dev/kernel/HALKit/POWER/Processor.h b/dev/kernel/HALKit/POWER/Processor.h
deleted file mode 100644
index 46cda33e..00000000
--- a/dev/kernel/HALKit/POWER/Processor.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
- Purpose: POWER processor header.
-
-======================================== */
-
-#pragma once
-
-#include <NeKit/Defines.h>
-#include <NeKit/Utils.h>
-
-#define rtl_nop_op() asm volatile("mr 0, 0")
-#define kHalPPCAlignment __attribute__((aligned(4)))
-
-namespace Kernel::HAL {
-typedef UIntPtr Reg;
-
-/// @brief Stack frame (as retrieved from assembly.)
-struct PACKED StackFrame final {
- Reg R8{0};
- Reg R9{0};
- Reg R10{0};
- Reg R11{0};
- Reg R12{0};
- Reg R13{0};
- Reg R14{0};
- Reg R15{0};
- Reg SP{0};
- Reg IP{0};
-};
-
-typedef StackFrame* StackFramePtr;
-
-inline void rt_halt() {
- while (true) {
- NoOp(); // no oop.
- }
-}
-
-inline void rt_cli() {
- NoOp(); // no oop
-}
-} // namespace Kernel::HAL
-
-EXTERN_C Kernel::Void int_handle_math(Kernel::UIntPtr sp);
-EXTERN_C Kernel::Void int_handle_pf(Kernel::UIntPtr sp);
-
-/// @brief Set TLB.
-Kernel::Bool hal_set_tlb(Kernel::UInt8 tlb, Kernel::UInt32 epn, Kernel::UInt64 rpn,
- Kernel::UInt8 perms, Kernel::UInt8 wimge, Kernel::UInt8 ts,
- Kernel::UInt8 esel, Kernel::UInt8 tsize, Kernel::UInt8 iprot);
-
-/// @brief Write TLB.
-Kernel::Void hal_write_tlb(Kernel::UInt32 mas0, Kernel::UInt32 mas1, Kernel::UInt32 mas2,
- Kernel::UInt32 mas3, Kernel::UInt32 mas7);
-
-/// @brief Flush TLB.
-EXTERN_C Kernel::Void hal_flush_tlb();