summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/HALKit/ARM64
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel/HALKit/ARM64')
-rw-r--r--dev/Kernel/HALKit/ARM64/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/ARM64/APM/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/ARM64/HalHart.cxx29
-rw-r--r--dev/Kernel/HALKit/ARM64/HalKernelMain.cxx181
-rw-r--r--dev/Kernel/HALKit/ARM64/HalPageAlloc.hxx108
-rw-r--r--dev/Kernel/HALKit/ARM64/HalPageInternal.S5
-rw-r--r--dev/Kernel/HALKit/ARM64/HalScheduler.cxx31
-rw-r--r--dev/Kernel/HALKit/ARM64/HalTimer.cxx16
-rw-r--r--dev/Kernel/HALKit/ARM64/MBCI/.keepme0
-rw-r--r--dev/Kernel/HALKit/ARM64/Processor.hxx56
-rw-r--r--dev/Kernel/HALKit/ARM64/ReadMe.md3
-rw-r--r--dev/Kernel/HALKit/ARM64/Storage/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/ARM64/Storage/HalFlash.cxx66
13 files changed, 0 insertions, 495 deletions
diff --git a/dev/Kernel/HALKit/ARM64/.gitkeep b/dev/Kernel/HALKit/ARM64/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/APM/.gitkeep b/dev/Kernel/HALKit/ARM64/APM/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/APM/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/HalHart.cxx b/dev/Kernel/HALKit/ARM64/HalHart.cxx
deleted file mode 100644
index d2a91bf3..00000000
--- a/dev/Kernel/HALKit/ARM64/HalHart.cxx
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-
-// bugs = 0
-
-namespace Kernel
-{
- /// @brief wakes up thread.
- /// wakes up thread from hang.
- void mp_wakeup_thread(HAL::StackFrame* stack)
- {
- rt_do_context_switch(stack);
- }
-
- /// @brief makes the thread sleep on a loop.
- /// hooks and hangs thread to prevent code from executing.
- void mp_hang_thread(HAL::StackFrame* stack)
- {
- while (true)
- {
- /* nohing, code is spinning */
- }
- }
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/ARM64/HalKernelMain.cxx b/dev/Kernel/HALKit/ARM64/HalKernelMain.cxx
deleted file mode 100644
index ef955ba7..00000000
--- a/dev/Kernel/HALKit/ARM64/HalKernelMain.cxx
+++ /dev/null
@@ -1,181 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <Modules/CoreCG/FbRenderer.hxx>
-#include <FirmwareKit/Handover.hxx>
-#include <KernelKit/FileManager.hxx>
-#include <KernelKit/Framebuffer.hxx>
-#include <KernelKit/Heap.hxx>
-#include <KernelKit/PEFCodeManager.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/ProcessHeap.hxx>
-#include <NewKit/Json.hxx>
-#include <Modules/CoreCG/Accessibility.hxx>
-#include <KernelKit/CodeManager.hxx>
-#include <Modules/ACPI/ACPIFactoryInterface.hxx>
-#include <NetworkKit/IPC.hxx>
-
-#define KERNEL_INIT(X) \
- X; \
- Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP);
-
-/// @brief This symbol is the kernel main symbol.
-EXTERN_C void KeMain();
-
-EXTERN_C Kernel::VoidPtr kInterruptVectorTable[];
-
-struct PACKED HeapAllocInfo final
-{
- Kernel::VoidPtr fThe;
- Kernel::Size fTheSz;
-};
-
-struct PACKED ProcessBlockInfo final
-{
- THREAD_INFORMATION_BLOCK* fTIB;
- THREAD_INFORMATION_BLOCK* fPIB;
-};
-
-struct PACKED ProcessExitInfo final
-{
- STATIC constexpr auto cReasonLen = 512;
-
- Kernel::Int64 fCode;
- Kernel::Char fReason[cReasonLen];
-};
-
-EXTERN_C void hal_init_platform(
- Kernel::HEL::HandoverInformationHeader* HandoverHeader)
-{
- /* Setup globals. */
-
- kHandoverHeader = HandoverHeader;
-
- if (kHandoverHeader->f_Magic != kHandoverMagic &&
- kHandoverHeader->f_Version != kHandoverVersion)
- {
- return;
- }
-
- kKernelVirtualSize = HandoverHeader->f_VirtualSize;
- kKernelVirtualStart = reinterpret_cast<Kernel::VoidPtr>(
- reinterpret_cast<Kernel::UIntPtr>(HandoverHeader->f_VirtualStart) + cHeapStartOffset);
-
- kKernelPhysicalStart = HandoverHeader->f_PhysicalStart;
-
- // Register the basic SCI functions.
-
- constexpr auto cSerialAlertInterrupt = 0x10;
- constexpr auto cTlsInterrupt = 0x11;
- constexpr auto cTlsInstallInterrupt = 0x12;
- constexpr auto cNewInterrupt = 0x13;
- constexpr auto cDeleteInterrupt = 0x14;
- constexpr auto cExitInterrupt = 0x15;
- constexpr auto cLastExitInterrupt = 0x16;
- constexpr auto cCatalogOpen = 0x17;
- constexpr auto cForkRead = 0x18;
- constexpr auto cForkWrite = 0x19;
- constexpr auto cCatalogClose = 0x20;
- constexpr auto cCatalogRemove = 0x21;
- constexpr auto cCatalogCreate = 0x22;
- constexpr auto cRebootInterrupt = 0x23;
- constexpr auto cShutdownInterrupt = 0x24;
- constexpr auto cLPCSendMsg = 0x25;
- constexpr auto cLPCOpenMsg = 0x26;
- constexpr auto cLPCCloseMsg = 0x27;
- constexpr auto cLPCSanitizeMsg = 0x28;
-
- kSyscalls[cSerialAlertInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- const char* msg = (const char*)rdx;
- Kernel::kcout << "Kernel: " << msg << "\r";
- };
-
- kSyscalls[cTlsInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- if (tls_check_syscall_impl(rdx) == false)
- {
- Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().Crash();
- }
- };
-
- kSyscalls[cLPCSanitizeMsg].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- Kernel::ipc_sanitize_packet(reinterpret_cast<Kernel::IPC_MESSAGE_STRUCT*>(rdx));
- };
-
- kSyscalls[cNewInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- // get HAC struct.
- HeapAllocInfo* rdxInf = reinterpret_cast<HeapAllocInfo*>(rdx);
-
- if (!rdxInf)
- return;
-
- // assign the fThe field with the pointer.
- rdxInf->fThe = Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().New(rdxInf->fTheSz);
- };
-
- kSyscalls[cDeleteInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- // get HAC struct.
- HeapAllocInfo* rdxInf = reinterpret_cast<HeapAllocInfo*>(rdx);
-
- if (!rdxInf)
- return;
-
- // delete ptr with sz in mind.
- Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().Delete(rdxInf->fThe, rdxInf->fTheSz);
- };
-
- kSyscalls[cTlsInstallInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- ProcessBlockInfo* rdxPb = reinterpret_cast<ProcessBlockInfo*>(rdx);
-
- if (!rdxPb)
- return;
-
- // install the fTIB and fPIB.
- rt_install_tib(rdxPb->fTIB, rdxPb->fPIB);
- };
-
- kSyscalls[cExitInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- ProcessExitInfo* rdxEi = reinterpret_cast<ProcessExitInfo*>(rdx);
-
- if (!rdxEi)
- return;
-
- Kernel::kcout << "newoskrnl: " << rdxEi->fReason << "\r";
- Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().Exit(rdxEi->fCode);
- };
-
- kSyscalls[cLastExitInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- ProcessExitInfo* rdxEi = reinterpret_cast<ProcessExitInfo*>(rdx);
-
- if (!rdxEi)
- return;
-
- rdxEi->fCode = Kernel::sched_get_exit_code();
- };
-
- kSyscalls[cRebootInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- Kernel::ACPIFactoryInterface acpi(kHandoverHeader->f_HardwareTables.f_VendorPtr);
- acpi.Reboot();
- };
-
- kSyscalls[cShutdownInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- Kernel::ACPIFactoryInterface acpi(kHandoverHeader->f_HardwareTables.f_VendorPtr);
- acpi.Shutdown();
- };
-
- kSyscalls[cSerialAlertInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cTlsInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cTlsInstallInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cDeleteInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cNewInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cExitInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cLastExitInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cShutdownInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cRebootInterrupt].Leak().Leak()->fHooked = true;
- kSyscalls[cLPCSanitizeMsg].Leak().Leak()->fHooked = true;
-
- KERNEL_INIT(KeMain());
-}
diff --git a/dev/Kernel/HALKit/ARM64/HalPageAlloc.hxx b/dev/Kernel/HALKit/ARM64/HalPageAlloc.hxx
deleted file mode 100644
index ef3b6db1..00000000
--- a/dev/Kernel/HALKit/ARM64/HalPageAlloc.hxx
+++ /dev/null
@@ -1,108 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-/** ---------------------------------------------------
-
- * THIS FILE CONTAINS CODE FOR ARMV8 PAGING.
-
-------------------------------------------------------- */
-
-#include <NewKit/Defines.hxx>
-
-#ifndef kPTEMax
-#define kPTEMax (0x200)
-#endif //! kPTEMax
-
-#ifndef kPTEAlign
-#define kPTEAlign (0x1000)
-#endif //! kPTEAlign
-
-#ifndef kPTESize
-#define kPTESize (0x1000)
-#endif // !kPTESize
-
-//! short format address range
-
-#define c16KBPage 0b000
-#define c8KBPage 0b001
-#define c4KBPage 0b010
-#define c2KBPage 0b011
-#define c1KBPage 0b100
-#define c512BPage 0b101
-#define c256BPage 0b110
-#define c128BPage 0b111
-
-/// Long format address range
-
-#define cPageMAll \
- { \
- 0b000, 0b000 \
- }
-#define cPageMToMax(M) \
- { \
- M, 0b000 \
- }
-#define cPageMaxToM(M) \
- { \
- 0b000, M \
- }
-#define cPageMToN(M, N) \
- { \
- M, N \
- }
-
-namespace Kernel::HAL
-{
- struct PACKED LongDescLevel3 final
- {
- Boolean Present : 1;
- Boolean Rw : 1;
- UInt16 Lpat : 9;
- UInt32 Address : 27;
- UInt32 Sbzp : 12;
- UInt32 UPat : 11;
- };
-
- namespace Detail
- {
- enum class ControlRegisterBits
- {
- ProtectedModeEnable = 0,
- MonitorCoProcessor = 1,
- Emulation = 2,
- TaskSwitched = 3,
- ExtensionType = 4,
- NumericError = 5,
- WriteProtect = 16,
- AlignementMask = 18,
- NotWriteThrough = 29,
- CacheDisable = 30,
- PageEnable = 31,
- };
-
- inline UInt8 control_register_cast(ControlRegisterBits reg)
- {
- return static_cast<UInt8>(reg);
- }
- } // namespace Detail
-
- struct PageDirectory64 final
- {
- LongDescLevel3 ALIGN(kPTEAlign) Pte[kPTEMax];
- };
-
- VoidPtr hal_alloc_page(Boolean rw, Boolean user, SizeT size);
-} // namespace Kernel::HAL
-
-namespace Kernel
-{
- typedef HAL::LongDescLevel3 PTE;
- typedef HAL::PageDirectory64 PDE;
-} // namespace Kernel
-
-EXTERN_C void hal_flush_tlb();
diff --git a/dev/Kernel/HALKit/ARM64/HalPageInternal.S b/dev/Kernel/HALKit/ARM64/HalPageInternal.S
deleted file mode 100644
index 8fcf40ff..00000000
--- a/dev/Kernel/HALKit/ARM64/HalPageInternal.S
+++ /dev/null
@@ -1,5 +0,0 @@
-.text
-
-hal_flush_tlb:
- tlbi
- ret
diff --git a/dev/Kernel/HALKit/ARM64/HalScheduler.cxx b/dev/Kernel/HALKit/ARM64/HalScheduler.cxx
deleted file mode 100644
index 51cbfe4b..00000000
--- a/dev/Kernel/HALKit/ARM64/HalScheduler.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/ProcessScheduler.hxx>
-
-using namespace Kernel;
-
-Void PROCESS_HEADER_BLOCK::SetEntrypoint(UIntPtr& imageStart) noexcept
-{
- if (imageStart == 0)
- this->Crash();
-
- this->StackFrame->BP = imageStart;
- this->StackFrame->SP = this->StackFrame->BP;
-}
-
-namespace Kernel
-{
- bool rt_check_stack(HAL::StackFramePtr stackPtr)
- {
- if (!stackPtr)
- return false;
- if (stackPtr->BP == 0 || stackPtr->SP == 0)
- return false;
-
- return true;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/ARM64/HalTimer.cxx b/dev/Kernel/HALKit/ARM64/HalTimer.cxx
deleted file mode 100644
index ef907e4f..00000000
--- a/dev/Kernel/HALKit/ARM64/HalTimer.cxx
+++ /dev/null
@@ -1,16 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: HalTimer.cxx
- Purpose: HAL timer
-
- Revision History:
-
- 07/07/24: Added file (amlel)
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-
-struct TimerInfoStruct;
diff --git a/dev/Kernel/HALKit/ARM64/MBCI/.keepme b/dev/Kernel/HALKit/ARM64/MBCI/.keepme
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/MBCI/.keepme
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/Processor.hxx b/dev/Kernel/HALKit/ARM64/Processor.hxx
deleted file mode 100644
index 16e9ec8c..00000000
--- a/dev/Kernel/HALKit/ARM64/Processor.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Utils.hxx>
-#include <FirmwareKit/Handover.hxx>
-
-#ifdef kCPUBackendName
-#undef kCPUBackendName
-#endif // ifdef kCPUBackendName
-
-#define kPTESize 512 /* 64-bit PT */
-
-#define kCPUBackendName "ARMv8"
-
-#ifdef __ZETA_MACHINE__
-#define cHeapStartOffset (0x10000000)
-#else
-#error !!! please provide that macro. !!!
-#endif
-
-namespace Kernel::HAL
-{
- struct PACKED Register64 final
- {
- UShort Limit;
- UIntPtr Base;
- };
-
- typedef UIntPtr Reg;
- typedef Register64 Register;
-
- /// @note let's keep the same name as AMD64 HAL.
- struct PACKED StackFrame final
- {
- Reg IntNum, Exception;
- Reg A0, A2, BP, SP, A3, A4, A5, A6;
- Reg R8, R9, R10, R11, R12, R13, R14, R15;
- Reg Gs, Fs;
- };
-
- typedef StackFrame* StackFramePtr;
-} // namespace Kernel::HAL
-
-inline Kernel::VoidPtr kKernelVirtualStart = (Kernel::VoidPtr)cHeapStartOffset;
-inline Kernel::UIntPtr kKernelVirtualSize = 0UL;
-
-inline Kernel::VoidPtr kKernelPhysicalStart = nullptr;
-
-#include <HALKit/ARM64/HalPageAlloc.hxx>
diff --git a/dev/Kernel/HALKit/ARM64/ReadMe.md b/dev/Kernel/HALKit/ARM64/ReadMe.md
deleted file mode 100644
index c51229f2..00000000
--- a/dev/Kernel/HALKit/ARM64/ReadMe.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# ARM64 Hardware Abstraction Layer
-
-- Supported Firmware: CoreBoot/EDK/OpenMobileBoot
diff --git a/dev/Kernel/HALKit/ARM64/Storage/.gitkeep b/dev/Kernel/HALKit/ARM64/Storage/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/Storage/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/Storage/HalFlash.cxx b/dev/Kernel/HALKit/ARM64/Storage/HalFlash.cxx
deleted file mode 100644
index cc7802cb..00000000
--- a/dev/Kernel/HALKit/ARM64/Storage/HalFlash.cxx
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Defines.hxx>
-#include <ArchKit/ArchKit.hxx>
-
-/// @file Flash.cxx
-/// @brief Flash memory builtin.
-
-#ifdef __FLASH_MEM__
-
-#define cMaxFlash (4U)
-
-namespace Kernel
-{
- /// /:\\BRIDGE\\FLSH\\1
- constexpr auto cFlashBridgeMagic = "FLSH";
- constexpr auto cFlashBridgeRevision = 1;
-
- STATIC const Boolean kFlashEnabled = No;
- STATIC SizeT kFlashSize[cMaxFlash] = {};
- STATIC SizeT kFlashSectorSz[cMaxFlash] = {};
-
- /// @brief Enable flash memory builtin.
- STATIC Void drv_enable_flash(Int32 slot);
-
- /// @brief Disable flash memory builtin.
- STATIC Void drv_disable_flash(Int32 slot);
-
- /// @brief get sector count.
- /// @return drive sector count.
- SizeT drv_std_get_sector_count(Int32 slot)
- {
- if (slot > cMaxFlash)
- return 0;
-
- return kFlashSectorSz[slot];
- }
-
- /// @brief get device size.
- /// @return drive size
- SizeT drv_std_get_drv_size(Int32 slot)
- {
- if (slot > cMaxFlash)
- return 0;
-
- return kFlashSize[slot];
- }
-
- /// @brief Enable flash memory at slot.
- STATIC Void drv_enable_flash(Int32 arg)
- {
- kcout << "newoskrnl: enabled hardware.\r";
- }
-
- /// @brief Disable flash memory at slot.
- STATIC Void drv_disable_flash(Int32 arg)
- {
- kcout << "newoskrnl: disabled hardware.\r";
- }
-} // namespace Kernel
-
-#endif // if __FLASH_MEM__ (Bridge)