summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel')
-rw-r--r--dev/Kernel/ArchKit/ArchKit.hxx105
-rw-r--r--dev/Kernel/ArchKit/compile_flags.txt8
-rw-r--r--dev/Kernel/CFKit/GUIDWizard.hxx22
-rw-r--r--dev/Kernel/CFKit/GUIDWrapper.hxx58
-rw-r--r--dev/Kernel/CFKit/LoaderUtils.hxx54
-rw-r--r--dev/Kernel/CFKit/Property.hxx47
-rw-r--r--dev/Kernel/CFKit/URL.hxx33
-rw-r--r--dev/Kernel/CFKit/compile_flags.txt5
-rw-r--r--dev/Kernel/CompilerKit/CompilerKit.hxx13
-rw-r--r--dev/Kernel/CompilerKit/Detail.hxx27
-rw-r--r--dev/Kernel/CompilerKit/Version.hxx4
-rw-r--r--dev/Kernel/Docs/Explicit Partition Map.pdfbin12326 -> 0 bytes
-rw-r--r--dev/Kernel/Docs/SPECIFICATION.md62
-rw-r--r--dev/Kernel/Docs/TODO-LIST.md25
-rw-r--r--dev/Kernel/FSKit/Defines.hxx11
-rw-r--r--dev/Kernel/FSKit/FAT32.hxx12
-rw-r--r--dev/Kernel/FSKit/IndexableProperty.hxx63
-rw-r--r--dev/Kernel/FSKit/NewFS.hxx323
-rw-r--r--dev/Kernel/FirmwareKit/.gitkeep0
-rw-r--r--dev/Kernel/FirmwareKit/CoreBoot/.gitkeep0
-rw-r--r--dev/Kernel/FirmwareKit/EFI.hxx9
-rw-r--r--dev/Kernel/FirmwareKit/EFI/API.hxx116
-rw-r--r--dev/Kernel/FirmwareKit/EFI/EFI.hxx784
-rw-r--r--dev/Kernel/FirmwareKit/EPM.hxx122
-rw-r--r--dev/Kernel/FirmwareKit/Handover.hxx101
-rw-r--r--dev/Kernel/HALKit/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/64x0/.hgkeep0
-rw-r--r--dev/Kernel/HALKit/64x0/APM/.hgkeep0
-rw-r--r--dev/Kernel/HALKit/64x0/HalVirtualMemory.cxx17
-rw-r--r--dev/Kernel/HALKit/64x0/MBCI/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/64x0/ReadMe.md4
-rw-r--r--dev/Kernel/HALKit/AMD64/CPUID.hxx81
-rw-r--r--dev/Kernel/HALKit/AMD64/HalACPIFactoryInterface.cxx142
-rw-r--r--dev/Kernel/HALKit/AMD64/HalAPIC.cxx36
-rw-r--r--dev/Kernel/HALKit/AMD64/HalBoot.asm22
-rw-r--r--dev/Kernel/HALKit/AMD64/HalControlRegister.s40
-rw-r--r--dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx76
-rw-r--r--dev/Kernel/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx198
-rw-r--r--dev/Kernel/HALKit/AMD64/HalDebugOutput.cxx145
-rw-r--r--dev/Kernel/HALKit/AMD64/HalDebugPort.cxx40
-rw-r--r--dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cxx91
-rw-r--r--dev/Kernel/HALKit/AMD64/HalHart.cxx33
-rw-r--r--dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm242
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMain.cxx251
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMouse.cxx190
-rw-r--r--dev/Kernel/HALKit/AMD64/HalPageAlloc.cxx120
-rw-r--r--dev/Kernel/HALKit/AMD64/HalPageAlloc.hxx92
-rw-r--r--dev/Kernel/HALKit/AMD64/HalProcessor.cxx97
-rw-r--r--dev/Kernel/HALKit/AMD64/HalRoutines.s9
-rw-r--r--dev/Kernel/HALKit/AMD64/HalSMPCoreManager.asm81
-rw-r--r--dev/Kernel/HALKit/AMD64/HalScheduler.cxx30
-rw-r--r--dev/Kernel/HALKit/AMD64/HalTimer.cxx14
-rw-r--r--dev/Kernel/HALKit/AMD64/HalUtils.asm33
-rw-r--r--dev/Kernel/HALKit/AMD64/Hypervisor.hxx25
-rw-r--r--dev/Kernel/HALKit/AMD64/MBCI/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/Database.cxx11
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/Device.cxx130
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/Dma.cxx82
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/Express.cxx11
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/IO.cxx7
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/Iterator.cxx44
-rw-r--r--dev/Kernel/HALKit/AMD64/PCI/PCI.cxx7
-rw-r--r--dev/Kernel/HALKit/AMD64/Processor.hxx348
-rw-r--r--dev/Kernel/HALKit/AMD64/ReadMe.md4
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/AHCI.cxx67
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/ATA-DMA.cxx38
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cxx199
-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
-rw-r--r--dev/Kernel/HALKit/AXP/CR.s11
-rw-r--r--dev/Kernel/HALKit/AXP/CoreInterruptHandlerDEC.cpp0
-rw-r--r--dev/Kernel/HALKit/AXP/CoreSyscallHandlerDEC.cpp24
-rw-r--r--dev/Kernel/HALKit/AXP/HAL.s13
-rw-r--r--dev/Kernel/HALKit/AXP/Processor.hpp7
-rw-r--r--dev/Kernel/HALKit/AXP/README1
-rw-r--r--dev/Kernel/HALKit/AXP/README.TXT1
-rw-r--r--dev/Kernel/HALKit/AXP/SYSCALL.s10
-rw-r--r--dev/Kernel/HALKit/AXP/VM.s5
-rw-r--r--dev/Kernel/HALKit/POWER/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/POWER/APM/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/POWER/HalContextSwitchPowerPC.s28
-rw-r--r--dev/Kernel/HALKit/POWER/HalHardware.cxx19
-rw-r--r--dev/Kernel/HALKit/POWER/HalHart.cxx25
-rw-r--r--dev/Kernel/HALKit/POWER/HalSerialPort.cxx27
-rw-r--r--dev/Kernel/HALKit/POWER/HalStartSequence.s14
-rw-r--r--dev/Kernel/HALKit/POWER/HalThread.cxx8
-rw-r--r--dev/Kernel/HALKit/POWER/HalVirtualMemory.cxx51
-rw-r--r--dev/Kernel/HALKit/POWER/Hart.hxx36
-rw-r--r--dev/Kernel/HALKit/POWER/MBCI/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/POWER/MBCI/HalMBCIHost.cxx8
-rw-r--r--dev/Kernel/HALKit/POWER/Processor.hxx56
-rw-r--r--dev/Kernel/HALKit/POWER/ReadMe.md4
-rw-r--r--dev/Kernel/HALKit/POWER/ppc-cpu.h1424
-rw-r--r--dev/Kernel/HALKit/POWER/ppc-mmu.h811
-rw-r--r--dev/Kernel/HALKit/RISCV/.keep0
-rw-r--r--dev/Kernel/HALKit/RISCV/APM/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/RISCV/Hart.hxx24
-rw-r--r--dev/Kernel/HALKit/RISCV/ReadMe.md4
-rw-r--r--dev/Kernel/HALKit/RISCV/Storage/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/X86S/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/X86S/ACPI/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/X86S/Storage/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/compile_flags.txt6
-rw-r--r--dev/Kernel/HintKit/CompilerHint.hxx23
-rw-r--r--dev/Kernel/KernelKit/CodeManager.hxx31
-rw-r--r--dev/Kernel/KernelKit/DebugOutput.hxx190
-rw-r--r--dev/Kernel/KernelKit/Defines.hxx11
-rw-r--r--dev/Kernel/KernelKit/DeviceManager.hxx129
-rw-r--r--dev/Kernel/KernelKit/DriveManager.hxx149
-rw-r--r--dev/Kernel/KernelKit/FileManager.hxx419
-rw-r--r--dev/Kernel/KernelKit/Framebuffer.hxx85
-rw-r--r--dev/Kernel/KernelKit/Heap.hxx51
-rw-r--r--dev/Kernel/KernelKit/LPC.hxx56
-rw-r--r--dev/Kernel/KernelKit/LoaderInterface.hxx33
-rw-r--r--dev/Kernel/KernelKit/LockDelegate.hxx67
-rw-r--r--dev/Kernel/KernelKit/MP.hxx130
-rw-r--r--dev/Kernel/KernelKit/MSDOS.hxx52
-rw-r--r--dev/Kernel/KernelKit/PCI/Database.hxx38
-rw-r--r--dev/Kernel/KernelKit/PCI/Device.hxx79
-rw-r--r--dev/Kernel/KernelKit/PCI/Dma.hxx81
-rw-r--r--dev/Kernel/KernelKit/PCI/Dma.inl20
-rw-r--r--dev/Kernel/KernelKit/PCI/Express.hxx11
-rw-r--r--dev/Kernel/KernelKit/PCI/IO-Impl-AMD64.inl54
-rw-r--r--dev/Kernel/KernelKit/PCI/IO.hxx59
-rw-r--r--dev/Kernel/KernelKit/PCI/Iterator.hxx43
-rw-r--r--dev/Kernel/KernelKit/PCI/PCI.hxx59
-rw-r--r--dev/Kernel/KernelKit/PE.hxx137
-rw-r--r--dev/Kernel/KernelKit/PECodeManager.hxx24
-rw-r--r--dev/Kernel/KernelKit/PEF.hxx115
-rw-r--r--dev/Kernel/KernelKit/PEFCodeManager.hxx62
-rw-r--r--dev/Kernel/KernelKit/PEFSharedObject.hxx118
-rw-r--r--dev/Kernel/KernelKit/ProcessHeap.hxx44
-rw-r--r--dev/Kernel/KernelKit/ProcessScheduler.hxx302
-rw-r--r--dev/Kernel/KernelKit/RLE.hxx15
-rw-r--r--dev/Kernel/KernelKit/Semaphore.hxx43
-rw-r--r--dev/Kernel/KernelKit/ThreadLocalStorage.hxx59
-rw-r--r--dev/Kernel/KernelKit/ThreadLocalStorage.inl74
-rw-r--r--dev/Kernel/KernelKit/Timer.hxx64
-rw-r--r--dev/Kernel/KernelKit/User.hxx101
-rw-r--r--dev/Kernel/KernelKit/XCOFF.hxx51
-rw-r--r--dev/Kernel/KernelKit/compile_flags.txt6
-rw-r--r--dev/Kernel/KernelRsrc.rsrc25
-rw-r--r--dev/Kernel/Linker/16x0.json8
-rw-r--r--dev/Kernel/Linker/32x0.json8
-rw-r--r--dev/Kernel/Linker/64x0.json8
-rw-r--r--dev/Kernel/Linker/arm64.json8
-rw-r--r--dev/Kernel/Modules/.gitkeep0
-rw-r--r--dev/Kernel/Modules/ACPI/.gitkeep0
-rw-r--r--dev/Kernel/Modules/ACPI/ACPI.hxx88
-rw-r--r--dev/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx60
-rw-r--r--dev/Kernel/Modules/ACPI/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/AHCI/.gitkeep0
-rw-r--r--dev/Kernel/Modules/AHCI/AHCI.hxx368
-rw-r--r--dev/Kernel/Modules/AHCI/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/APM/.gitkeep0
-rw-r--r--dev/Kernel/Modules/ATA/ATA.hxx156
-rw-r--r--dev/Kernel/Modules/ATA/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/CoreCG/Accessibility.hxx49
-rw-r--r--dev/Kernel/Modules/CoreCG/FbRenderer.hxx79
-rw-r--r--dev/Kernel/Modules/CoreCG/Lerp.hxx22
-rw-r--r--dev/Kernel/Modules/CoreCG/Rsrc/Cursor.rsrc64
-rw-r--r--dev/Kernel/Modules/CoreCG/TextRenderer.hxx177
-rw-r--r--dev/Kernel/Modules/Flash/Flash.hxx19
-rw-r--r--dev/Kernel/Modules/GL/.keepme0
-rw-r--r--dev/Kernel/Modules/GPRS/.keepme0
-rw-r--r--dev/Kernel/Modules/HPET/.gitkeep0
-rw-r--r--dev/Kernel/Modules/HPET/Defines.hxx42
-rw-r--r--dev/Kernel/Modules/IEEE802/.gitkeep0
-rw-r--r--dev/Kernel/Modules/IEEE802/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/LTE/.keepme0
-rw-r--r--dev/Kernel/Modules/LTE/IO.hxx28
-rw-r--r--dev/Kernel/Modules/MBCI/Interface.hxx10
-rw-r--r--dev/Kernel/Modules/MBCI/MBCI.hxx99
-rw-r--r--dev/Kernel/Modules/MBCI/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/NVME/.gitkeep0
-rw-r--r--dev/Kernel/Modules/NVME/Defines.hxx116
-rw-r--r--dev/Kernel/Modules/NVME/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/OHCI/.gitkeep0
-rw-r--r--dev/Kernel/Modules/PS2/PS2MouseInterface.hxx112
-rw-r--r--dev/Kernel/Modules/ReadMe.md12
-rw-r--r--dev/Kernel/Modules/SCSI/.gitkeep0
-rw-r--r--dev/Kernel/Modules/SCSI/SCSI.hxx14
-rw-r--r--dev/Kernel/Modules/WiFi/.gitkeep0
-rw-r--r--dev/Kernel/Modules/WiFi/compile_flags.txt4
-rw-r--r--dev/Kernel/Modules/XHCI/.gitkeep0
-rw-r--r--dev/Kernel/Modules/XHCI/Defines.hxx70
-rw-r--r--dev/Kernel/Modules/XHCI/compile_flags.txt4
-rw-r--r--dev/Kernel/MoveAll.ARM64.sh7
-rw-r--r--dev/Kernel/MoveAll.X64.sh7
-rw-r--r--dev/Kernel/NetworkKit/IP.hxx83
-rw-r--r--dev/Kernel/NetworkKit/IPC.hxx80
-rw-r--r--dev/Kernel/NetworkKit/LTE.hxx16
-rw-r--r--dev/Kernel/NetworkKit/MAC.hxx29
-rw-r--r--dev/Kernel/NetworkKit/NetworkDevice.hxx80
-rw-r--r--dev/Kernel/NetworkKit/NetworkDevice.inl32
-rw-r--r--dev/Kernel/NetworkKit/compile_flags.txt6
-rw-r--r--dev/Kernel/NewKit/Array.hxx61
-rw-r--r--dev/Kernel/NewKit/ArrayList.hxx58
-rw-r--r--dev/Kernel/NewKit/Atom.hxx46
-rw-r--r--dev/Kernel/NewKit/Crc32.hxx22
-rw-r--r--dev/Kernel/NewKit/CxxAbi.hxx28
-rw-r--r--dev/Kernel/NewKit/Defines.hxx153
-rw-r--r--dev/Kernel/NewKit/ErrorOr.hxx72
-rw-r--r--dev/Kernel/NewKit/Function.hxx53
-rw-r--r--dev/Kernel/NewKit/Json.hxx134
-rw-r--r--dev/Kernel/NewKit/KernelCheck.hxx61
-rw-r--r--dev/Kernel/NewKit/Macros.hxx114
-rw-r--r--dev/Kernel/NewKit/MutableArray.hxx239
-rw-r--r--dev/Kernel/NewKit/New.hxx18
-rw-r--r--dev/Kernel/NewKit/NewKit.hxx22
-rw-r--r--dev/Kernel/NewKit/OwnPtr.hxx94
-rw-r--r--dev/Kernel/NewKit/PageAllocator.hxx20
-rw-r--r--dev/Kernel/NewKit/PageManager.hxx81
-rw-r--r--dev/Kernel/NewKit/Pair.hxx14
-rw-r--r--dev/Kernel/NewKit/Pmm.hxx44
-rw-r--r--dev/Kernel/NewKit/Ref.hxx106
-rw-r--r--dev/Kernel/NewKit/Stream.hxx58
-rw-r--r--dev/Kernel/NewKit/String.hxx87
-rw-r--r--dev/Kernel/NewKit/Utils.hxx29
-rw-r--r--dev/Kernel/NewKit/Variant.hxx64
-rw-r--r--dev/Kernel/NewKit/compile_flags.txt6
-rw-r--r--dev/Kernel/Objects/.hgkeep0
-rw-r--r--dev/Kernel/ReadMe.md3
-rw-r--r--dev/Kernel/Sources/Array.cxx7
-rw-r--r--dev/Kernel/Sources/ArrayList.cxx7
-rw-r--r--dev/Kernel/Sources/Atom.cxx10
-rw-r--r--dev/Kernel/Sources/CodeManager.cxx30
-rw-r--r--dev/Kernel/Sources/Crc32.cxx74
-rw-r--r--dev/Kernel/Sources/CxxAbi-AMD64.cxx91
-rw-r--r--dev/Kernel/Sources/CxxAbi-ARM64.cxx74
-rw-r--r--dev/Kernel/Sources/Defines.cxx7
-rw-r--r--dev/Kernel/Sources/DeviceManager.cxx7
-rw-r--r--dev/Kernel/Sources/DriveManager.cxx151
-rw-r--r--dev/Kernel/Sources/ErrorOr.cxx12
-rw-r--r--dev/Kernel/Sources/FS/NewFS.cxx1054
-rw-r--r--dev/Kernel/Sources/FS/compile_flags.txt6
-rw-r--r--dev/Kernel/Sources/FileManager.cxx196
-rw-r--r--dev/Kernel/Sources/Framebuffer.cxx113
-rw-r--r--dev/Kernel/Sources/GUIDWizard.cxx72
-rw-r--r--dev/Kernel/Sources/GUIDWrapper.cxx11
-rw-r--r--dev/Kernel/Sources/HError.cxx34
-rw-r--r--dev/Kernel/Sources/Heap.cxx246
-rw-r--r--dev/Kernel/Sources/IndexableProperty.cxx59
-rw-r--r--dev/Kernel/Sources/Json.cxx12
-rw-r--r--dev/Kernel/Sources/KernelCheck.cxx136
-rw-r--r--dev/Kernel/Sources/LockDelegate.cxx12
-rw-r--r--dev/Kernel/Sources/MP.cxx256
-rw-r--r--dev/Kernel/Sources/MutableArray.cxx7
-rw-r--r--dev/Kernel/Sources/Network/IP.cxx126
-rw-r--r--dev/Kernel/Sources/Network/IPC.cxx68
-rw-r--r--dev/Kernel/Sources/Network/NetworkDevice.cxx35
-rw-r--r--dev/Kernel/Sources/New+Delete.cxx50
-rw-r--r--dev/Kernel/Sources/NewFS+FileManager.cxx100
-rw-r--r--dev/Kernel/Sources/NewFS+IO.cxx101
-rw-r--r--dev/Kernel/Sources/NewFS+Journal.cxx22
-rw-r--r--dev/Kernel/Sources/OwnPtr.cxx7
-rw-r--r--dev/Kernel/Sources/PEFCodeManager.cxx241
-rw-r--r--dev/Kernel/Sources/PEFSharedObject.cxx110
-rw-r--r--dev/Kernel/Sources/PRDT.cxx22
-rw-r--r--dev/Kernel/Sources/PageAllocator.cxx55
-rw-r--r--dev/Kernel/Sources/PageManager.cxx126
-rw-r--r--dev/Kernel/Sources/Pmm.cxx96
-rw-r--r--dev/Kernel/Sources/ProcessHeap.cxx277
-rw-r--r--dev/Kernel/Sources/ProcessScheduler.cxx464
-rw-r--r--dev/Kernel/Sources/ProcessTeam.cxx38
-rw-r--r--dev/Kernel/Sources/Property.cxx27
-rw-r--r--dev/Kernel/Sources/Ref.cxx7
-rw-r--r--dev/Kernel/Sources/Semaphore.cxx62
-rw-r--r--dev/Kernel/Sources/Storage/AHCIDeviceInterface.cxx35
-rw-r--r--dev/Kernel/Sources/Storage/ATADeviceInterface.cxx88
-rw-r--r--dev/Kernel/Sources/Storage/NVMEDeviceInterface.cxx28
-rw-r--r--dev/Kernel/Sources/Storage/SCSIDeviceInterface.cxx11
-rw-r--r--dev/Kernel/Sources/Stream.cxx12
-rw-r--r--dev/Kernel/Sources/String.cxx246
-rw-r--r--dev/Kernel/Sources/ThreadLocalStorage.cxx76
-rw-r--r--dev/Kernel/Sources/ThreadScheduler.cxx8
-rw-r--r--dev/Kernel/Sources/Timer.cxx44
-rw-r--r--dev/Kernel/Sources/URL.cxx98
-rw-r--r--dev/Kernel/Sources/User.cxx240
-rw-r--r--dev/Kernel/Sources/Utils.cxx257
-rw-r--r--dev/Kernel/Sources/Variant.cxx28
-rw-r--r--dev/Kernel/Sources/compile_flags.txt7
-rw-r--r--dev/Kernel/StorageKit/AHCI.hxx33
-rw-r--r--dev/Kernel/StorageKit/ATA.hxx39
-rw-r--r--dev/Kernel/StorageKit/NVME.hxx36
-rw-r--r--dev/Kernel/StorageKit/PRDT.hxx36
-rw-r--r--dev/Kernel/StorageKit/SCSI.hxx11
-rw-r--r--dev/Kernel/StorageKit/Storage.hxx22
-rw-r--r--dev/Kernel/amd64-efi.make85
-rw-r--r--dev/Kernel/arm64-efi.make68
-rw-r--r--dev/Kernel/compile_flags.txt9
-rw-r--r--dev/Kernel/power64-cb.make4
-rw-r--r--dev/Kernel/riscv64-cb.make0
304 files changed, 0 insertions, 21198 deletions
diff --git a/dev/Kernel/ArchKit/ArchKit.hxx b/dev/Kernel/ArchKit/ArchKit.hxx
deleted file mode 100644
index a3fd81a6..00000000
--- a/dev/Kernel/ArchKit/ArchKit.hxx
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Function.hxx>
-
-#include <FirmwareKit/Handover.hxx>
-
-#ifdef __NEWOS_AMD64__
-#include <HALKit/AMD64/HalPageAlloc.hxx>
-#include <HALKit/AMD64/Hypervisor.hxx>
-#include <HALKit/AMD64/Processor.hxx>
-#elif defined(__NEWOS_POWER64__)
-#include <HALKit/POWER/Processor.hxx>
-#elif defined(__NEWOS_ARM64__)
-#include <HALKit/ARM64/Processor.hxx>
-#else
-#error !!! unknown architecture !!!
-#endif
-
-namespace Kernel
-{
- inline SSizeT rt_hash_seed(const char* seed, int mul)
- {
- SSizeT hash = 0;
-
- for (SSizeT idx = 0; seed[idx] != 0; ++idx)
- {
- hash += seed[idx];
- hash ^= mul;
- }
-
- return hash;
- }
-
- /// @brief write to mapped memory register
- /// @param base the base address.
- /// @param reg the register.
- /// @param value the write to write on it.
- inline Void ke_dma_write(UInt32 base, UInt32 reg, UInt32 value) noexcept
- {
- *(volatile UInt32*)((UInt64)base + reg) = value;
- }
-
- /// @brief read from mapped memory register.
- /// @param base base address
- /// @param reg the register.
- /// @return the value inside the register.
- inline UInt32 ke_dma_read(UInt32 base, UInt32 reg) noexcept
- {
- return *(volatile UInt32*)((UInt64)base + reg);
- }
-
- /// @brief Print a region of memory.
- /// @param start
- /// @param length
- inline Void ke_print_raw_memory(const void* start, Size length)
- {
- const UInt8* ptr = (const UInt8*)start;
-
- for (Size i = 0; i < length; i++)
- {
- if (i % 16 == 0)
- {
- kcout << hex_number((UIntPtr)ptr + i);
- }
- else
- {
- kcout << hex_number(ptr[i]);
- }
-
- kcout << " ";
- }
-
- kcout << "\r";
- }
-} // namespace Kernel
-
-#define kKernelMaxSystemCalls (256)
-
-typedef Kernel::Void (*rt_syscall_proc)(Kernel::VoidPtr);
-
-struct HAL_SYSCALL_RECORD final
-{
- Kernel::Int64 fHash;
- Kernel::Bool fHooked;
- rt_syscall_proc fProc;
-};
-
-inline Kernel::Array<HAL_SYSCALL_RECORD,
- kKernelMaxSystemCalls>
- kSyscalls;
-
-inline Kernel::Array<HAL_SYSCALL_RECORD,
- kKernelMaxSystemCalls>
- kKerncalls;
-
-EXTERN_C Kernel::HAL::StackFramePtr rt_get_current_context();
-EXTERN_C Kernel::Void rt_do_context_switch(Kernel::HAL::StackFramePtr stack_frame);
diff --git a/dev/Kernel/ArchKit/compile_flags.txt b/dev/Kernel/ArchKit/compile_flags.txt
deleted file mode 100644
index c15efc77..00000000
--- a/dev/Kernel/ArchKit/compile_flags.txt
+++ /dev/null
@@ -1,8 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--I$(HOME)/
--D__NEWOS_AMD64__
--D__ED__
diff --git a/dev/Kernel/CFKit/GUIDWizard.hxx b/dev/Kernel/CFKit/GUIDWizard.hxx
deleted file mode 100644
index 034aceea..00000000
--- a/dev/Kernel/CFKit/GUIDWizard.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <CFKit/GUIDWrapper.hxx>
-#include <NewKit/Array.hxx>
-#include <NewKit/ArrayList.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Ref.hxx>
-#include <NewKit/Stream.hxx>
-#include <NewKit/String.hxx>
-
-namespace Kernel::XRN::Version1
-{
- Ref<GUIDSequence*> cf_make_sequence(const ArrayList<UInt32>& seq);
- ErrorOr<Ref<Kernel::StringView>> cf_try_guid_to_string(Ref<GUIDSequence*>& guid);
-} // namespace Kernel::XRN::Version1
diff --git a/dev/Kernel/CFKit/GUIDWrapper.hxx b/dev/Kernel/CFKit/GUIDWrapper.hxx
deleted file mode 100644
index 8810f303..00000000
--- a/dev/Kernel/CFKit/GUIDWrapper.hxx
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-#include <NewKit/Stream.hxx>
-
-/* GUID for C++ Components */
-
-#define kXRNNil "@{........-....-M...-N...-............}"
-
-// eXtensible Resource Information
-namespace Kernel::XRN
-{
- union GUIDSequence {
- alignas(8) UShort u8[16];
- alignas(8) UShort u16[8];
- alignas(8) UInt u32[4];
- alignas(8) ULong u64[2];
-
- struct
- {
- alignas(8) UInt fMs1;
- UShort fMs2;
- UShort fMs3;
- UChar fMs4[8];
- };
- };
-
- class GUID final
- {
- public:
- explicit GUID() = default;
- ~GUID() = default;
-
- public:
- GUID& operator=(const GUID&) = default;
- GUID(const GUID&) = default;
-
- public:
- GUIDSequence& operator->() noexcept
- {
- return fUUID;
- }
- GUIDSequence& Leak() noexcept
- {
- return fUUID;
- }
-
- private:
- GUIDSequence fUUID;
- };
-} // namespace Kernel::XRN
diff --git a/dev/Kernel/CFKit/LoaderUtils.hxx b/dev/Kernel/CFKit/LoaderUtils.hxx
deleted file mode 100644
index 3edacc67..00000000
--- a/dev/Kernel/CFKit/LoaderUtils.hxx
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef __CFKIT_LOADER_UTILS_HXX__
-#define __CFKIT_LOADER_UTILS_HXX__
-
-#include <KernelKit/PE.hxx>
-#include <KernelKit/MSDOS.hxx>
-
-namespace Kernel
-{
- /// @brief Find the PE header inside the blob.
- inline auto ldr_find_exec_header(DosHeaderPtr ptrDos) -> ExecHeaderPtr
- {
- if (!ptrDos)
- return nullptr;
-
- if (ptrDos->eMagic[0] != kMagMz0)
- return nullptr;
-
- if (ptrDos->eMagic[1] != kMagMz1)
- return nullptr;
-
- return (ExecHeaderPtr)(VoidPtr)(&ptrDos->eLfanew + 1);
- }
-
- /// @brief Find the PE optional header inside the blob.
- inline auto ldr_find_opt_exec_header(DosHeaderPtr ptrDos) -> ExecOptionalHeaderPtr
- {
- if (!ptrDos)
- return nullptr;
-
- auto exec = ldr_find_exec_header(ptrDos);
-
- if (!exec)
- return nullptr;
-
- return (ExecOptionalHeaderPtr)(VoidPtr)(&exec->mCharacteristics + 1);
- }
-
- /// @brief Find the PE header inside the blob.
- /// @note overloaded function.
- inline auto ldr_find_exec_header(const Char* ptrDos) -> ExecHeaderPtr
- {
- return ldr_find_exec_header((DosHeaderPtr)ptrDos);
- }
-
-
- /// @brief Find the PE header inside the blob.
- /// @note overloaded function.
- inline auto ldr_find_opt_exec_header(const Char* ptrDos) -> ExecOptionalHeaderPtr
- {
- return ldr_find_opt_exec_header((DosHeaderPtr)ptrDos);
- }
-} // namespace Kernel
-
-#endif // ifndef __CFKIT_LOADER_UTILS_HXX__
diff --git a/dev/Kernel/CFKit/Property.hxx b/dev/Kernel/CFKit/Property.hxx
deleted file mode 100644
index 602c061f..00000000
--- a/dev/Kernel/CFKit/Property.hxx
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __INC_PROPS_HPP__
-#define __INC_PROPS_HPP__
-
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Function.hxx>
-#include <NewKit/String.hxx>
-
-#define cMaxPropLen 4096
-
-namespace Kernel
-{
- /// @brief handle to anything (number, ptr, string...)
- using PropertyId = UIntPtr;
-
- /// @brief Kernel property class.
- /// @example \Properties\SmpCores or \Properties\KernelVersion
- class Property
- {
- public:
- Property() = default;
- virtual ~Property();
-
- public:
- Property& operator=(const Property&) = default;
- Property(const Property&) = default;
-
- bool StringEquals(StringView& name);
- PropertyId& GetValue();
- StringView& GetKey();
-
- private:
- StringView fName{cMaxPropLen};
- PropertyId fAction{No};
- };
-
- template <SizeT N>
- using PropertyArray = Array<Property, N>;
-} // namespace Kernel
-
-#endif // !__INC_PROPS_HPP__
diff --git a/dev/Kernel/CFKit/URL.hxx b/dev/Kernel/CFKit/URL.hxx
deleted file mode 100644
index 02cced28..00000000
--- a/dev/Kernel/CFKit/URL.hxx
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_URL_HPP_
-#define _INC_URL_HPP_
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-
-namespace Kernel
-{
- class URL final
- {
- public:
- explicit URL(StringView& strUrl);
- ~URL();
-
- public:
- Ref<ErrorOr<StringView>> Location() noexcept;
- Ref<ErrorOr<StringView>> Protocol() noexcept;
-
- private:
- Ref<StringView> fUrlView;
- };
-
- ErrorOr<StringView> url_extract_location(const Char* url);
- ErrorOr<StringView> url_extract_protocol(const Char* url);
-} // namespace Kernel
-
-#endif /* ifndef _INC_URL_HPP_ */
diff --git a/dev/Kernel/CFKit/compile_flags.txt b/dev/Kernel/CFKit/compile_flags.txt
deleted file mode 100644
index a37ae6bf..00000000
--- a/dev/Kernel/CFKit/compile_flags.txt
+++ /dev/null
@@ -1,5 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
diff --git a/dev/Kernel/CompilerKit/CompilerKit.hxx b/dev/Kernel/CompilerKit/CompilerKit.hxx
deleted file mode 100644
index f2ec4db2..00000000
--- a/dev/Kernel/CompilerKit/CompilerKit.hxx
+++ /dev/null
@@ -1,13 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_CL_HPP
-#define _INC_CL_HPP
-
-#include <CompilerKit/Detail.hxx>
-#include <CompilerKit/Version.hxx>
-
-#endif /* ifndef _INC_CL_HPP */
diff --git a/dev/Kernel/CompilerKit/Detail.hxx b/dev/Kernel/CompilerKit/Detail.hxx
deleted file mode 100644
index 4cc25dae..00000000
--- a/dev/Kernel/CompilerKit/Detail.hxx
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#ifdef __NEWOSKRNL__
-#include <NewKit/Defines.hxx>
-#endif // ifdef __NEWOSKRNL__
-
-#define NEWOS_COPY_DELETE(KLASS) \
- KLASS& operator=(const KLASS&) = delete; \
- KLASS(const KLASS&) = delete;
-
-#define NEWOS_COPY_DEFAULT(KLASS) \
- KLASS& operator=(const KLASS&) = default; \
- KLASS(const KLASS&) = default;
-
-#define NEWOS_MOVE_DELETE(KLASS) \
- KLASS& operator=(KLASS&&) = delete; \
- KLASS(KLASS&&) = delete;
-
-#define NEWOS_MOVE_DEFAULT(KLASS) \
- KLASS& operator=(KLASS&&) = default; \
- KLASS(KLASS&&) = default;
diff --git a/dev/Kernel/CompilerKit/Version.hxx b/dev/Kernel/CompilerKit/Version.hxx
deleted file mode 100644
index c0d42603..00000000
--- a/dev/Kernel/CompilerKit/Version.hxx
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#define BOOTLOADER_VERSION L"v1.14.2"
-#define KERNEL_VERSION "v1.14.2"
diff --git a/dev/Kernel/Docs/Explicit Partition Map.pdf b/dev/Kernel/Docs/Explicit Partition Map.pdf
deleted file mode 100644
index 1e2f5318..00000000
--- a/dev/Kernel/Docs/Explicit Partition Map.pdf
+++ /dev/null
Binary files differ
diff --git a/dev/Kernel/Docs/SPECIFICATION.md b/dev/Kernel/Docs/SPECIFICATION.md
deleted file mode 100644
index e58d63ee..00000000
--- a/dev/Kernel/Docs/SPECIFICATION.md
+++ /dev/null
@@ -1,62 +0,0 @@
-===================================
-
-# 0: General Information
-
-===================================
-
-- ABI and Format: PEF/PE32+.
-- Kernel architecture: Portable hybrid kernel.
-- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, POWER, RISCV))
-
-===================================
-
-# 1: The NewKernel
-
-===================================
-
-- Drive/Device Abstraction.
-- SMP, Preemptive Multi Threading.
-- Separation of Files/Devices.
-- Networking.
-- Hardware Abstraction Layer.
-- Native Filesystem support (NewFS, FAT32 and ffs2).
-- Program Loaders.
-- Thread Local Storage.
-- Semaphore, Locks, Timers.
-- Canary mechanisms.
-- Dynamic Sys.
-- Cross Platform.
-- Permission Selectors.
-
-===================================
-
-# 2: The Filesystem
-
-===================================
-
-- Catalog object with associated forks.
-- Large storage support.
-- Long file names.
-- UNIX path style.
-
-==================================
-
-# 3: Common naming conventions:
-
-==================================
-
-- Kernel -> ke_init_x
-- RunTime -> rt_copy_mem
-- Hal -> hal_foo_bar
-
-===================================
-
-# 4: The newosldr
-
-===================================
-
-- Capable of booting from a network drive.
-- Loads a PE file which is the kernel.
-- Sanity checks, based on the number of sections.
-- Handover compliant.
-- Does check for a valid partition (useful in the case of recovering)
diff --git a/dev/Kernel/Docs/TODO-LIST.md b/dev/Kernel/Docs/TODO-LIST.md
deleted file mode 100644
index 62cc886c..00000000
--- a/dev/Kernel/Docs/TODO-LIST.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# TODO list
-
-- We need preemptive multi-threading. [ X ]
-- We then need sync primitives. [ X ]
-- We also need a system library for the OS. [ X ]
-- We need a bootloader for AMD64 [ X ]
- - Implement Boot Services [ X ]
- - Design Handover [ X ]
- - Load kernel into memory [ X ]
- - Fix bug in kernel loader, which causes a 06 #UD. [ X ]
- - Load Kernel [ X ]
- - Add IDT [ X ]
- - AHCI driver [ WiP ]
-- Context switch x87/SSE/AVX registers [ X ]
-- Framebuffer [ X ]
-- ATA support [ X ]
-- Make installer [ X ]
-
-Status:
-
-newosldr: Need to boot from EPM partition. [ X ]
-<br>
-NewKernel: New Filesystem is done. [ X ]
-
-**Refer to Jira!**
diff --git a/dev/Kernel/FSKit/Defines.hxx b/dev/Kernel/FSKit/Defines.hxx
deleted file mode 100644
index de33dd3a..00000000
--- a/dev/Kernel/FSKit/Defines.hxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-#define FSKIT_VERSION "1.00"
diff --git a/dev/Kernel/FSKit/FAT32.hxx b/dev/Kernel/FSKit/FAT32.hxx
deleted file mode 100644
index 04fa0c6d..00000000
--- a/dev/Kernel/FSKit/FAT32.hxx
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-/// @file FAT32.hxx
-/// @brief FAT32 support. \ No newline at end of file
diff --git a/dev/Kernel/FSKit/IndexableProperty.hxx b/dev/Kernel/FSKit/IndexableProperty.hxx
deleted file mode 100644
index 89d90ddc..00000000
--- a/dev/Kernel/FSKit/IndexableProperty.hxx
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <CFKit/Property.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-#include <KernelKit/DriveManager.hxx>
-
-#define kIndexerNodeNameLength 255
-#define kIndexerClaimed 0xCF
-
-namespace Kernel
-{
- namespace Indexer
- {
- struct IndexProperty final
- {
- public:
- Char Drive[kDriveNameLen];
- Char Path[kIndexerNodeNameLength];
- };
-
- class IndexableProperty final : public Property
- {
- public:
- explicit IndexableProperty()
- : Property()
- {
- Kernel::StringView strProp(cMaxPropLen);
- strProp += "\\Properties\\Indexable";
-
- this->GetKey() = strProp;
- }
-
- ~IndexableProperty() override = default;
-
- NEWOS_COPY_DEFAULT(IndexableProperty);
-
- public:
- IndexProperty& Leak() noexcept;
-
- public:
- void AddFlag(Int16 flag);
- void RemoveFlag(Int16 flag);
- Int16 HasFlag(Int16 flag);
-
- private:
- IndexProperty fIndex;
- UInt32 fFlags;
- };
-
- /// @brief Index a file into the indexer instance.
- /// @param filename path
- /// @param filenameLen used bytes in path.
- /// @param indexer the filesystem indexer.
- /// @return none.
- Void fs_index_file(const Char* filename, SizeT filenameLen, IndexableProperty& indexer);
- } // namespace Indexer
-} // namespace Kernel
diff --git a/dev/Kernel/FSKit/NewFS.hxx b/dev/Kernel/FSKit/NewFS.hxx
deleted file mode 100644
index 54b11e38..00000000
--- a/dev/Kernel/FSKit/NewFS.hxx
+++ /dev/null
@@ -1,323 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: NewFS.hxx
- Purpose:
-
- Revision History:
-
- ?/?/?: Added file (amlel)
- 12/02/24: Add UUID macro for EPM and GPT partition schemes.
- 3/16/24: Add mandatory sector size, kNewFSSectorSz is set to 2048 by
-default.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <HintKit/CompilerHint.hxx>
-#include <KernelKit/DriveManager.hxx>
-#include <NewKit/Defines.hxx>
-
-/**
- @brief New File System specification.
- @author Amlal EL Mahrouss
-*/
-
-#define kNewFSInvalidFork (-1)
-#define kNewFSInvalidCatalog (-1)
-#define kNewFSNodeNameLen (256)
-
-#define kNewFSSectorSz (512)
-
-#define kNewFSIdentLen (8)
-#define kNewFSIdent " NewFS"
-#define kNewFSPadLen (400)
-
-#define kNewFSMetaFilePrefix '$'
-
-#define kNewFSVersionInteger (0x0127)
-#define kNewFSVerionString "1.27"
-
-/// @brief Standard fork types.
-#define kNewFSDataFork "main_data"
-#define kNewFSResourceFork "main_rsrc"
-
-#define kNewFSCatalogKindFile (1)
-#define kNewFSCatalogKindDir (2)
-#define kNewFSCatalogKindAlias (3)
-
-#define kNewFSForkSize (8192)
-
-//! shared between network or
-//! other filesystems. Export forks as .zip when copying.
-#define kNewFSCatalogKindShared (4)
-
-#define kNewFSCatalogKindResource (5)
-#define kNewFSCatalogKindExecutable (6)
-
-#define kNewFSCatalogKindPage (8)
-
-#define kNewFSPartitionTypeStandard (7)
-#define kNewFSPartitionTypePage (8)
-#define kNewFSPartitionTypeBoot (9)
-
-#define kNewFSCatalogKindDevice (9)
-#define kNewFSCatalogKindLock (10)
-
-#define kNewFSCatalogKindRLE (11)
-
-#define kNewFSCatalogKindMetaFile (12)
-
-#define kNewFSSeparator '\\'
-#define kNewFSSeparatorAlt '/'
-
-#define kNewFSUpDir ".."
-#define kNewFSRoot "\\"
-#define kNewFSRootAlt "/"
-
-#define kNewFSLF '\r'
-#define kNewFSEOF (-1)
-
-#define kNewFSBitWidth (sizeof(Kernel::Char))
-#define kNewFSLbaType (Kernel::Lba)
-
-/// Start After the PM headers, pad 1024 bytes.
-#define kNewFSStartLba (1024)
-#define kNewFSCatalogStartAddress ((2048) + sizeof(NFS_ROOT_PARTITION_BLOCK) + sizeof(NFS_CATALOG_STRUCT))
-
-#define kResourceTypeDialog (10)
-#define kResourceTypeString (11)
-#define kResourceTypeMenu (12)
-
-#define kConfigLen (64)
-#define kPartLen (32)
-
-#define kNewFSFlagDeleted (70)
-#define kNewFSFlagUnallocated (0)
-#define kNewFSFlagCreated (71)
-
-#define kNewFSMimeNameLen (200)
-
-#define kNewFSForkNameLen (200U)
-
-struct NFS_CATALOG_STRUCT;
-struct NFS_FORK_STRUCT;
-struct NFS_ROOT_PARTITION_BLOCK;
-
-enum
-{
- kNewFSHardDrive = 0xC0, // Hard Drive
- kNewFSSolidStateDrive = 0xC1, // Solid State Drive
- kNewFSOpticalDrive = 0x0C, // Blu-Ray/DVD
- kNewFSMassStorageDevice = 0xCC, // USB
- kNewFSScsi = 0xC4, // SCSI Hard Drive
- kNewFSFlashDrive = 0xC6,
- kNewFSUnknown = 0xFF, // Unknown device.
- kNewFSDriveCount = 7,
-};
-
-/// @brief Catalog type.
-struct PACKED NFS_CATALOG_STRUCT final
-{
- Kernel::Char Name[kNewFSNodeNameLen];
- Kernel::Char Mime[kNewFSMimeNameLen];
-
- /// Catalog status flag.
- Kernel::UInt16 Flags;
- /// Custom catalog flags.
- Kernel::UInt16 FileFlags;
- /// Catalog kind.
- Kernel::Int32 Kind;
-
- /// Size of the data fork.
- Kernel::Lba DataForkSize;
-
- /// Size of all resource forks.
- Kernel::Lba ResourceForkSize;
-
- Kernel::Lba DataFork;
- Kernel::Lba ResourceFork;
-
- Kernel::Lba NextSibling;
- Kernel::Lba PrevSibling;
-};
-
-/// @brief Fork type, contains a data page.
-/// @note The way we store is way different than how other filesystems do, specific chunk of code are
-/// written into either the data fork or resource fork, the resource fork is reserved for file metadata.
-/// whereas the data fork is reserved for file data.
-struct PACKED NFS_FORK_STRUCT final
-{
- Kernel::Char ForkName[kNewFSForkNameLen];
- Kernel::Char CatalogName[kNewFSNodeNameLen];
-
- Kernel::Int32 Flags;
- Kernel::Int32 Kind;
-
- Kernel::Int64 ResourceId;
- Kernel::Int32 ResourceKind;
- Kernel::Int32 ResourceFlags;
-
- Kernel::Lba DataOffset; // 8 Where to look for this data?
- Kernel::SizeT DataSize; /// Data size according using sector count.
-
- Kernel::Lba NextSibling;
- Kernel::Lba PreviousSibling;
-};
-
-/// @brief Partition block type
-struct PACKED NFS_ROOT_PARTITION_BLOCK final
-{
- Kernel::Char Ident[kNewFSIdentLen];
- Kernel::Char PartitionName[kPartLen];
-
- Kernel::Int32 Flags;
- Kernel::Int32 Kind;
-
- Kernel::Lba StartCatalog;
- Kernel::SizeT CatalogCount;
-
- Kernel::SizeT DiskSize;
-
- Kernel::SizeT FreeCatalog;
- Kernel::SizeT FreeSectors;
-
- Kernel::SizeT SectorCount;
- Kernel::SizeT SectorSize;
-
- Kernel::UInt64 Version;
-
- Kernel::Lba EpmBlock;
-
- Kernel::Char Pad[kNewFSPadLen-sizeof(Kernel::Lba)];
-};
-
-namespace Kernel
-{
- enum
- {
- kNewFSSubDriveA,
- kNewFSSubDriveB,
- kNewFSSubDriveC,
- kNewFSSubDriveD,
- kNewFSSubDriveInvalid,
- kNewFSSubDriveCount,
- };
-
- /// \brief Resource fork kind.
- enum
- {
- kNewFSRsrcForkKind = 0,
- kNewFSDataForkKind = 1
- };
-
- ///
- /// \name NewFSParser
- /// \brief NewFS parser class. (catalog creation, remove removal, root,
- /// forks...) Designed like the DOM, detects the filesystem automatically.
- ///
- class NewFSParser final
- {
- public:
- explicit NewFSParser() = default;
- ~NewFSParser() = default;
-
- public:
- NEWOS_COPY_DEFAULT(NewFSParser);
-
- public:
- /// @brief Creates a new fork inside the New filesystem partition.
- /// @param catalog it's catalog
- /// @param theFork the fork itself.
- /// @return the fork
- _Output NFS_FORK_STRUCT* CreateFork(_Input NFS_CATALOG_STRUCT* catalog,
- _Input NFS_FORK_STRUCT& theFork);
-
- /// @brief Find fork inside New filesystem.
- /// @param catalog the catalog.
- /// @param name the fork name.
- /// @return the fork.
- _Output NFS_FORK_STRUCT* FindFork(_Input NFS_CATALOG_STRUCT* catalog,
- _Input const Char* name,
- Boolean dataOrRsrc);
-
- _Output Void RemoveFork(_Input NFS_FORK_STRUCT* fork);
-
- _Output Void CloseFork(_Input NFS_FORK_STRUCT* fork);
-
- _Output NFS_CATALOG_STRUCT* FindCatalog(_Input const char* catalogName, Lba& outLba);
-
- _Output NFS_CATALOG_STRUCT* GetCatalog(_Input const char* name);
-
- _Output NFS_CATALOG_STRUCT* CreateCatalog(_Input const char* name,
- _Input const Int32& flags,
- _Input const Int32& kind);
-
- _Output NFS_CATALOG_STRUCT* CreateCatalog(_Input const char* name);
-
- Bool WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog,
- voidPtr data,
- SizeT sizeOfData,
- _Input const char* forkName);
-
- VoidPtr ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog,
- SizeT dataSz,
- _Input const char* forkName);
-
- bool Seek(_Input _Output NFS_CATALOG_STRUCT* catalog, SizeT off);
-
- SizeT Tell(_Input _Output NFS_CATALOG_STRUCT* catalog);
-
- bool RemoveCatalog(_Input const Char* catalog);
-
- bool CloseCatalog(_InOut NFS_CATALOG_STRUCT* catalog);
-
- /// @brief Make a EPM+NewFS drive out of the disk.
- /// @param drive The drive to write on.
- /// @return If it was sucessful, see ErrLocal().
- bool Format(_Input _Output DriveTrait* drive, _Input const Lba endLba, _Input const Int32 flags, const Char* part_name);
-
- public:
- Int32 fDriveIndex{kNewFSSubDriveA};
- };
-
- ///
- /// \name NewFilesystemHelper
- /// \brief Filesystem helper and utils.
- ///
-
- class NewFilesystemHelper final
- {
- public:
- STATIC const char* Root();
- STATIC const char* UpDir();
- STATIC const char Separator();
- STATIC const char MetaFile();
- };
-
- namespace Detail
- {
- Boolean fs_init_newfs(Void) noexcept;
- } // namespace Detail
-} // namespace Kernel
-
-/// @brief Write to newfs disk.
-/// @param Mnt mounted interface.
-/// @param DrvTrait drive info
-/// @param DrvIndex drive index.
-/// @return
-Kernel::Int32 fs_newfs_write(Kernel::MountpointInterface* Mnt,
- Kernel::DriveTrait& DrvTrait,
- Kernel::Int32 DrvIndex);
-
-/// @brief Read from newfs disk.
-/// @param Mnt mounted interface.
-/// @param DrvTrait drive info
-/// @param DrvIndex drive index.
-/// @return
-Kernel::Int32 fs_newfs_read(Kernel::MountpointInterface* Mnt,
- Kernel::DriveTrait& DrvTrait,
- Kernel::Int32 DrvIndex);
diff --git a/dev/Kernel/FirmwareKit/.gitkeep b/dev/Kernel/FirmwareKit/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/FirmwareKit/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/FirmwareKit/CoreBoot/.gitkeep b/dev/Kernel/FirmwareKit/CoreBoot/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/FirmwareKit/CoreBoot/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/FirmwareKit/EFI.hxx b/dev/Kernel/FirmwareKit/EFI.hxx
deleted file mode 100644
index a6c4616f..00000000
--- a/dev/Kernel/FirmwareKit/EFI.hxx
+++ /dev/null
@@ -1,9 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <FirmwareKit/EFI/EFI.hxx>
-
-/// @note this header is used to reference the EFI/EFI.hxx \ No newline at end of file
diff --git a/dev/Kernel/FirmwareKit/EFI/API.hxx b/dev/Kernel/FirmwareKit/EFI/API.hxx
deleted file mode 100644
index d666bbf2..00000000
--- a/dev/Kernel/FirmwareKit/EFI/API.hxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __EFI_API__
-#define __EFI_API__
-
-#include <FirmwareKit/EFI/EFI.hxx>
-#include <FirmwareKit/Handover.hxx>
-#include <KernelKit/MSDOS.hxx>
-#include <KernelKit/PE.hxx>
-
-#define kNewOSSubsystem 17
-
-#ifdef __NEWOSLDR__
-// forward decl.
-class BTextWriter;
-
-#define __BOOTKIT_NO_INCLUDE__ 1
-
-#include <BootKit/BootKit.hxx>
-#include <BootKit/Rsrc/NewBootFatal.rsrc>
-#include <BootKit/Vendor/Qr.hxx>
-#include <Modules/CoreCG/FbRenderer.hxx>
-#endif // ifdef __NEWOSLDR__
-
-inline EfiSystemTable* ST = nullptr;
-inline EfiBootServices* BS = nullptr;
-
-EXTERN_C void rt_cli();
-EXTERN_C void rt_hlt();
-
-namespace EFI
-{
- /// @brief Halt and clear interrupts.
- /// @return
- inline Void Stop() noexcept
- {
- while (1)
- {
- rt_hlt();
- rt_cli();
- }
- }
-
- /**
-@brief Exit EFI API to let the OS load correctly.
-Bascially frees everything we have in the EFI side.
-*/
- inline void ExitBootServices(UInt64 MapKey, EfiHandlePtr ImageHandle) noexcept
- {
- if (!ST)
- return;
-
- ST->BootServices->ExitBootServices(ImageHandle, MapKey);
- }
-
- enum
- {
- kPartEPM,
- kPartGPT,
- kPartMBR,
- kPartCnt,
- };
-
- inline UInt32 Platform() noexcept
- {
- return kPeMachineAMD64;
- }
-
- /***
- * @brief Throw an error, stop execution as well.
- * @param ErrorCode error code to be print.
- * @param Reason reason to be print.
- */
- inline void ThrowError(const EfiCharType* ErrorCode,
- const EfiCharType* Reason) noexcept
- {
- ST->ConOut->OutputString(ST->ConOut, L"\r*** STOP ***\r");
-
- ST->ConOut->OutputString(ST->ConOut, L"*** Error: ");
- ST->ConOut->OutputString(ST->ConOut, ErrorCode);
-
- ST->ConOut->OutputString(ST->ConOut, L", Reason: ");
- ST->ConOut->OutputString(ST->ConOut, Reason);
-
- ST->ConOut->OutputString(ST->ConOut, L" ***\r");
-
- EFI::Stop();
- }
-} // namespace EFI
-
-inline void InitEFI(EfiSystemTable* SystemTable) noexcept
-{
- if (!SystemTable)
- return;
-
- ST = SystemTable;
- BS = ST->BootServices;
-
- ST->ConOut->ClearScreen(SystemTable->ConOut);
- ST->ConOut->SetAttribute(SystemTable->ConOut, kEFIYellow);
-
- ST->BootServices->SetWatchdogTimer(0, 0, 0, nullptr);
- ST->ConOut->EnableCursor(ST->ConOut, false);
-}
-
-#ifdef __NEWOSLDR__
-
-#include <BootKit/Platform.hxx>
-
-#endif // ifdef __NEWOSLDR__
-
-#endif /* ifndef __EFI_API__ */
diff --git a/dev/Kernel/FirmwareKit/EFI/EFI.hxx b/dev/Kernel/FirmwareKit/EFI/EFI.hxx
deleted file mode 100644
index 2237ce36..00000000
--- a/dev/Kernel/FirmwareKit/EFI/EFI.hxx
+++ /dev/null
@@ -1,784 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __EFI__
-#define __EFI__
-
-/**
-@brief Kernel Implementation of EFI.
-@note This API is in WiP, so it's not 'pretty', just deal with it. We'll be
-improving that later.
-@author Amlal El Mahrouss
-*/
-
-#include <NewKit/Defines.hxx>
-
-using namespace Kernel;
-
-/* we always use stdcall in EFI, the pascal way of calling functions. */
-
-#ifndef EPI_API
-#define EFI_API __attribute__((ms_abi))
-#endif // ifndef EPI_API
-
-// Forward decls
-
-struct EfiTableHeader;
-struct EfiLoadFileProtocol;
-struct EfiSimpleTextOutputProtocol;
-struct EfiDevicePathProtocol;
-struct EfiBootServices;
-struct EfiMemoryDescriptor;
-struct EfiSystemTable;
-struct EfiGUID;
-struct EfiFileDevicePathProtocol;
-struct EfiHandle;
-struct EfiGraphicsOutputProtocol;
-struct EfiBitmask;
-struct EfiFileProtocol;
-
-typedef UInt64 EfiStatusType;
-
-/// @brief Core Handle Kind
-/// This is like NT's Win32 HANDLE type.
-typedef struct EfiHandle
-{
-}* EfiHandlePtr;
-
-/* UEFI uses wide characters by default. */
-typedef WideChar EfiCharType;
-
-typedef UInt64 EfiPhysicalAddress;
-typedef UIntPtr EfiVirtualAddress;
-
-/// What's BootBolicy?
-/// If TRUE, indicates that the request originates from the boot manager, and
-/// that the boot manager is attempting to load FilePath as a boot selection. If
-/// FALSE, then FilePath must match an exact file to be loaded.
-
-typedef UInt64(EFI_API* EfiTextString)(struct EfiSimpleTextOutputProtocol* This,
- const WideChar* OutputString);
-
-typedef UInt64(EFI_API* EfiTextAttrib)(struct EfiSimpleTextOutputProtocol* This,
- const WideChar Attribute);
-
-typedef UInt64(EFI_API* EfiTextClear)(struct EfiSimpleTextOutputProtocol* This);
-
-typedef UInt64(EFI_API* EfiLoadFile)(EfiLoadFileProtocol* This,
- EfiFileDevicePathProtocol* FilePath,
- Boolean BootPolicy,
- UInt32* BufferSize,
- VoidPtr Buffer);
-
-typedef UInt64(EFI_API* EfiCopyMem)(VoidPtr DstBuf, VoidPtr SrcBuf, SizeT Length);
-typedef UInt64(EFI_API* EfiSetMem)(VoidPtr DstBuf, Char Byte, SizeT Length);
-
-typedef UInt64(EFI_API* EfiHandleProtocol)(EfiHandlePtr Handle, EfiGUID* Guid, VoidPtr* Device);
-
-typedef UInt64(EFI_API* EfiLocateDevicePath)(EfiGUID* Protocol,
- EfiDevicePathProtocol** DevicePath,
- EfiHandlePtr Device);
-
-typedef UInt64(EFI_API* EfiStartImage)(EfiHandlePtr Handle, VoidPtr ArgsSize, VoidPtr ArgsPtr);
-
-typedef UInt64(EFI_API* EfiLoadImage)(Boolean BootPolicy,
- EfiHandlePtr ParentHandle,
- EfiFileDevicePathProtocol* DeviceFile,
- VoidPtr buffer,
- SizeT size,
- EfiHandlePtr* ppHandle);
-
-/// EFI pool helpers, taken from iPXE.
-
-typedef enum EfiMemoryType
-{
- ///
- /// Not used.
- ///
- EfiReservedMemoryType,
- ///
- /// The code portions of a loaded application.
- /// (Note that UEFI OS loaders are UEFI applications.)
- ///
- EfiLoaderCode,
- ///
- /// The data portions of a loaded application and the default data allocation
- /// type used by an application to allocate pool memory.
- ///
- EfiLoaderData,
- ///
- /// The code portions of a loaded Boot Services Driver.
- ///
- EfiBootServicesCode,
- ///
- /// The data portions of a loaded Boot Serves Driver, and the default data
- /// allocation type used by a Boot Services Driver to allocate pool memory.
- ///
- EfiBootServicesData,
- ///
- /// The code portions of a loaded Runtime Services Driver.
- ///
- EfiRuntimeServicesCode,
- ///
- /// The data portions of a loaded Runtime Services Driver and the default
- /// data allocation type used by a Runtime Services Driver to allocate pool
- /// memory.
- ///
- EfiRuntimeServicesData,
- ///
- /// Free (unallocated) memory.
- ///
- EfiConventionalMemory,
- ///
- /// Memory in which errors have been detected.
- ///
- EfiUnusableMemory,
- ///
- /// Memory that holds the ACPI tables.
- ///
- EfiACPIReclaimMemory,
- ///
- /// Address space reserved for use by the firmware.
- ///
- EfiACPIMemoryNVS,
- ///
- /// Used by system firmware to request that a memory-mapped IO region
- /// be mapped by the OS to a virtual address so it can be accessed by EFI
- /// runtime services.
- ///
- EfiMemoryMappedIO,
- ///
- /// System memory-mapped IO region that is used to translate memory
- /// cycles to IO cycles by the processor.
- ///
- EfiMemoryMappedIOPortSpace,
- ///
- /// Address space reserved by the firmware for code that is part of the
- /// processor.
- ///
- EfiPalCode,
- ///
- /// A memory region that operates as EfiConventionalMemory,
- /// however it happens to also support byte-addressable non-volatility.
- ///
- EfiPersistentMemory,
- ///
- /// A memory region that describes system memory that has not been accepted
- /// by a corresponding call to the underlying isolation architecture.
- ///
- EfiUnacceptedMemoryType,
- ///
- /// The last type of memory.
- /// Not a real type.
- ///
- EfiMaxMemoryType,
-} EfiMemoryType;
-
-typedef enum EfiAllocateType
-{
- /// Anything that satisfy the request.
- AllocateAnyPages,
- AllocateMaxAddress,
- ///
- /// Allocate pages at a specified address.
- ///
- AllocateAddress,
- ///
- /// Maximum enumeration value that may be used for bounds checking.
- ///
- MaxAllocateType
-} EfiAllocateType;
-
-typedef struct EfiMemoryDescriptor
-{
- ///
- /// Kind of the memory region.
- /// Kind EFI_MEMORY_TYPE is defined in the
- /// AllocatePages() function description.
- ///
- UInt32 Kind;
- ///
- /// Physical address of the first byte in the memory region. PhysicalStart
- /// must be aligned on a 4 KiB boundary, and must not be above
- /// 0xfffffffffffff000. Kind EFI_PHYSICAL_ADDRESS is defined in the
- /// AllocatePages() function description
- ///
- EfiPhysicalAddress PhysicalStart;
- ///
- /// Virtual address of the first byte in the memory region.
- /// VirtualStart must be aligned on a 4 KiB boundary,
- /// and must not be above 0xfffffffffffff000.
- ///
- EfiVirtualAddress VirtualStart;
- ///
- /// NumberOfPagesNumber of 4 KiB pages in the memory region.
- /// NumberOfPages must not be 0, and must not be any value
- /// that would represent a memory page with a start address,
- /// either physical or virtual, above 0xfffffffffffff000.
- ///
- UInt64 NumberOfPages;
- ///
- /// Attributes of the memory region that describe the bit mask of capabilities
- /// for that memory region, and not necessarily the current settings for that
- /// memory region.
- ///
- UInt64 Attribute;
-} EfiMemoryDescriptor;
-
-typedef UInt64(EFI_API* EfiAllocatePool)(EfiMemoryType PoolType, UInt32 Size, VoidPtr* Buffer);
-
-typedef UInt64(EFI_API* EfiFreePool)(VoidPtr Buffer);
-
-typedef UInt64(EFI_API* EfiCalculateCrc32)(VoidPtr Data, UInt32 DataSize, UInt32* CrcOut);
-
-/**
-@brief Present in every header, used to identify a UEFI structure.
-*/
-typedef struct EfiTableHeader
-{
- UInt64 Signature;
- UInt32 Revision;
- UInt32 HeaderSize;
- UInt32 Crc32;
- UInt32 Reserved;
-} EfiTableHeader;
-
-#define EFI_ACPI_TABLE_PROTOCOL_GUID \
- { \
- 0xffe06bdd, 0x6107, 0x46a6, \
- { \
- 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c \
- } \
- }
-
-#define EFI_LOAD_FILE_PROTOCOL_GUID \
- { \
- 0x56EC3091, 0x954C, 0x11d2, \
- { \
- 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
- } \
- }
-
-#define EFI_LOAD_FILE2_PROTOCOL_GUID \
- { \
- 0x4006c0c1, 0xfcb3, 0x403e, \
- { \
- 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d \
- } \
- }
-
-#define EFI_LOADED_IMAGE_PROTOCOL_GUID \
- { \
- 0x5B1B31A1, 0x9562, 0x11d2, \
- { \
- 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B \
- } \
- }
-
-#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
- { \
- 0x9042a9de, 0x23dc, 0x4a38, \
- { \
- 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a \
- } \
- }
-
-#define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
-
-#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
- { \
- 0x0964e5b22, 0x6459, 0x11d2, \
- { \
- 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
- } \
- }
-
-#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
- { \
- 0xbc62157e, 0x3e33, 0x4fec, \
- { \
- 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf \
- } \
- }
-
-#define EFI_DEVICE_PATH_PROTOCOL_GUID \
- { \
- 0x9576e91, 0x6d3f, 0x11d2, \
- { \
- 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
- } \
- }
-
-#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
- { \
- 0x0964e5b22, 0x6459, 0x11d2, \
- { \
- 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
- } \
- }
-
-typedef UInt64(EfiImageUnload)(EfiHandlePtr ImageHandle);
-
-enum
-{
- kPixelRedGreenBlueReserved8BitPerColor,
- kPixelBlueGreenRedReserved8BitPerColor,
- kPixelBitMask,
- kPixelBltOnly,
- kPixelFormatMax
-};
-
-typedef struct EfiBitmask
-{
- UInt32 RedMask;
- UInt32 GreenMask;
- UInt32 BlueMask;
- UInt32 ReservedMask;
-} EfiBitmask;
-
-typedef struct
-{
- UInt8 Blue;
- UInt8 Green;
- UInt8 Red;
- UInt8 Reserved;
-} EfiGraphicsOutputBltPixel;
-
-typedef enum EfiGraphicsOutputProtocolBltOperation
-{
- EfiBltVideoFill,
- EfiBltVideoToBltBuffer,
- EfiBltBufferToVideo,
- EfiBltVideoToVideo,
- EfiGraphicsOutputBltOperationMax
-} EfiGraphicsOutputProtocolBltOperation;
-
-typedef struct EfiGraphicsOutputProtocolModeInformation
-{
- UInt32 Version;
- UInt32 HorizontalResolution;
- UInt32 VerticalResolution;
- UInt32 PixelFormat;
- EfiBitmask PixelInformation;
- UInt32 PixelsPerScanLine;
-} EfiGraphicsOutputProtocolModeInformation;
-
-typedef UInt64(EFI_API* EfiGraphicsOutputProtocolQueryMode)(
- EfiGraphicsOutputProtocol* This, UInt32 ModeNumber, UInt32* SizeOfInfo, EfiGraphicsOutputProtocolModeInformation** Info);
-
-typedef UInt64(EFI_API* EfiGraphicsOutputProtocolSetMode)(
- EfiGraphicsOutputProtocol* This, UInt32 ModeNumber);
-
-typedef UInt64(EFI_API* EfiGraphicsOutputProtocolBlt)(
- EfiGraphicsOutputProtocol* This, EfiGraphicsOutputBltPixel* BltBuffer, EfiGraphicsOutputProtocolBltOperation BltOperation, UInt32 SourceX, UInt32 SourceY, UInt32 DestinationX, UInt32 DestinationY, UInt32 Width, UInt32 Height, UInt32 Delta);
-
-typedef struct
-{
- UInt32 MaxMode;
- UInt32 Mode;
- EfiGraphicsOutputProtocolModeInformation* Info;
- UInt32 SizeOfInfo;
- UIntPtr FrameBufferBase;
- UInt32 FrameBufferSize;
-} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
-
-typedef struct EfiGraphicsOutputProtocol
-{
- EfiGraphicsOutputProtocolQueryMode QueryMode;
- EfiGraphicsOutputProtocolSetMode SetMode;
- EfiGraphicsOutputProtocolBlt Blt;
- EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE* Mode;
-} EfiGraphicsOutputProtocol;
-
-typedef struct EfiLoadImageProtocol
-{
- UInt32 Revision;
- EfiHandlePtr ParentHandle;
- EfiSystemTable* SystemTable;
-
- // Source location of the image
- EfiHandlePtr DeviceHandle;
- EfiDevicePathProtocol* FilePath;
- Void* Reserved;
-
- // Image’s load options
- UInt32 LoadOptionsSize;
- Void* LoadOptions;
-
- // Location where image was loaded
- Void* ImageBase;
- UInt64 ImageSize;
- EfiMemoryType ImageCodeType;
- EfiMemoryType ImageDataType;
- EfiImageUnload Unload;
-} EfiLoadImageProtocol;
-
-typedef struct EfiLoadFileProtocol
-{
- EfiLoadFile LoadFile;
-} EfiLoadFileProtocol;
-
-typedef struct EfiDevicePathProtocol
-{
- UInt8 Kind;
- UInt8 SubType;
- UInt8 Length[2];
-} EfiDevicePathProtocol;
-
-typedef struct EfiFileDevicePathProtocol
-{
- EfiDevicePathProtocol Proto;
-
- ///
- /// File Path of this struct
- ///
- WideChar Path[kPathLen];
-} EfiFileDevicePathProtocol;
-
-typedef UInt64(EFI_API* EfiExitBootServices)(VoidPtr ImageHandle,
- UInt32 MapKey);
-
-typedef UInt64(EFI_API* EfiAllocatePages)(EfiAllocateType AllocType,
- EfiMemoryType MemType,
- UInt32 Count,
- EfiPhysicalAddress* Memory);
-
-typedef UInt64(EFI_API* EfiFreePages)(EfiPhysicalAddress* Memory, UInt32 Pages);
-
-typedef UInt64(EFI_API* EfiGetMemoryMap)(UInt32* MapSize,
- EfiMemoryDescriptor* DescPtr,
- UInt32* MapKey,
- UInt32* DescSize,
- UInt32* DescVersion);
-
-/**
- * @brief GUID type, something you can also find in CFKit.
- */
-typedef struct EfiGUID final
-{
- UInt32 Data1;
- UInt16 Data2;
- UInt16 Data3;
- UInt8 Data4[8];
-} EfiGUID;
-
-/***
- * Protocol stuff...
- */
-
-/** some helpers */
-#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
-#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
-#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
-#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
-#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
-#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
-
-typedef UInt64(EFI_API* EfiLocateProtocol)(EfiGUID* Protocol,
- VoidPtr Registration,
- VoidPtr* Interface);
-
-typedef UInt64(EFI_API* EfiOpenProtocol)(EfiHandlePtr Handle, EfiGUID* Guid, VoidPtr* Interface, EfiHandlePtr AgentHandle, EfiHandlePtr ControllerHandle, UInt32 Attributes);
-
-typedef UInt64(EFI_API* EfiEnableCursor)(EfiSimpleTextOutputProtocol* This, Boolean Visible);
-
-/**
-@name EfiBootServices
-@brief UEFI Boot Services record, it contains functions necessary to a
-firmware level application.
-*/
-typedef struct EfiBootServices
-{
- EfiTableHeader SystemTable;
- VoidPtr RaiseTPL;
- VoidPtr RestoreTPL;
- EfiAllocatePages AllocatePages;
- EfiFreePages FreePages;
- EfiGetMemoryMap GetMemoryMap;
- EfiAllocatePool AllocatePool;
- EfiFreePool FreePool;
- VoidPtr CreateEvent;
- VoidPtr SetTimer;
- VoidPtr WaitForEvent;
- VoidPtr SignalEvent;
- VoidPtr CloseEvent;
- VoidPtr CheckEvent;
- VoidPtr InstallProtocolInterface;
- VoidPtr ReinstallProtocolInterface;
- VoidPtr UninstallProtocolInterface;
- EfiHandleProtocol HandleProtocol;
- VoidPtr Reserved;
- VoidPtr RegisterProtocolNotify;
- VoidPtr LocateHandle;
- EfiLocateDevicePath LocateDevicePath;
- VoidPtr InstallConfigurationTable;
- EfiLoadImage LoadImage;
- EfiStartImage StartImage;
- VoidPtr Exit;
- VoidPtr UnloadImage;
- EfiExitBootServices ExitBootServices;
- VoidPtr GetNextMonotonicCount;
- VoidPtr Stall;
- EfiStatusType(EFI_API* SetWatchdogTimer)(UInt32 Timeout, UInt64 WatchdogCode, UInt32 DataSize, EfiCharType* Data);
- VoidPtr ConnectController;
- VoidPtr DisconnectController;
- EfiOpenProtocol OpenProtocol;
- VoidPtr CloseProtocol;
- VoidPtr OpenProtocolInformation;
- VoidPtr ProtocolsPerHandle;
- VoidPtr LocateHandleBuffer;
- EfiLocateProtocol LocateProtocol;
- VoidPtr InstallMultipleProtocolInterfaces;
- VoidPtr UninstallMultipleProtocolInterfaces;
- EfiCalculateCrc32 CalculateCrc32;
- EfiCopyMem CopyMem;
- EfiSetMem SetMem;
- VoidPtr CreateEventEx;
-} EfiBootServices;
-
-#define kEntireDevPath 0xFF
-#define kThisInstancePath 0x01
-
-/**
-@brief PrintF like protocol.
-*/
-typedef struct EfiSimpleTextOutputProtocol
-{
- VoidPtr Reset;
- EfiTextString OutputString;
- VoidPtr TestString;
- VoidPtr QueryMode;
- VoidPtr SetMode;
- EfiTextAttrib SetAttribute;
- EfiTextClear ClearScreen;
- VoidPtr SetCursorPosition;
- EfiEnableCursor EnableCursor;
- VoidPtr Mode;
-} EfiSimpleTextOutputProtocol;
-
-typedef UInt64(EFI_API* EfiOpenVolume)(struct EfiSimpleFilesystemProtocol*,
- struct EfiFileProtocol**);
-
-struct EfiSimpleFilesystemProtocol
-{
- UInt64 Revision;
- EfiOpenVolume OpenVolume;
-};
-
-/**
-@brief The Structure that they give you when booting.
-*/
-typedef struct EfiSystemTable
-{
- EfiTableHeader SystemHeader;
- WideChar* FirmwareVendor;
- UInt32 FirmwareRevision;
- EfiHandlePtr ConsoleInHandle;
- VoidPtr ConIn;
- EfiHandlePtr ConsoleOutHandle;
- EfiSimpleTextOutputProtocol* ConOut;
- EfiHandlePtr StandardErrorHandle;
- VoidPtr StdErr;
- VoidPtr RuntimeServices;
- EfiBootServices* BootServices;
- UInt64 NumberOfTableEntries;
- struct
- {
- EfiGUID VendorGUID;
- VoidPtr VendorTable;
- }* ConfigurationTable;
-} EfiSystemTable;
-
-#define kEfiOk 0
-#define kEfiFail -1
-#define kBufferTooSmall 5
-
-#define EFI_EXTERN_C extern "C"
-
-typedef struct EfiIPV4
-{
- UInt8 Addr[4];
-} EfiIPV4;
-
-///
-/// 16-byte buffer. An IPv6 internet protocol address.
-///
-typedef struct EfiIPV6
-{
- UInt8 Addr[16];
-} EfiIPV6;
-
-#define kEFIYellow (0x01 | 0x02 | 0x04 | 0x08)
-
-#ifdef __x86_64
-#define __EFI_x86_64__ 1
-#endif // __x86_64
-
-enum
-{
- kEFIHwDevicePath = 0x01,
- kEFIAcpiDevicePath = 0x02,
- kEFIMessaingDevicePath = 0x03,
- kEFIMediaDevicePath = 0x04,
- kEFIBiosBootPath = 0x05,
- kEFIEndOfPath = 0x06,
- kEFICount = 6,
-};
-
-#define END_DEVICE_PATH_TYPE 0x7f
-#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xFF
-#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
-
-#define kEfiOffsetOf(T, F) __builtin_offsetof(T, F)
-
-/// File I/O macros
-
-#define kEFIFileRead 0x0000000000000001
-#define kEFIFileWrite 0x0000000000000002
-#define kEFIFileCreate 0x0000000000000000
-
-#define kEFIReadOnly 0x01
-#define kEFIHidden 0x02
-#define kEFISystem 0x04
-#define kEFIReserved 0x08
-#define kEFIDirectory 0x10
-#define kEFIArchive 0x20
-
-typedef struct EfiIOToken
-{
- //
- // If Event is NULL, then blocking I/O is performed.
- // If Event is not NULL and non-blocking I/O is supported, then non-blocking
- // I/O is performed, and Event will be signaled when the read request is
- // completed. The caller must be prepared to handle the case where the
- // callback associated with Event occurs before the original asynchronous I/O
- // request call returns.
- //
- UInt64 Event;
-
- //
- // Defines whether or not the signaled event encountered an error.
- //
- UInt64 Status;
-
- //
- // For OpenEx(): Not Used, ignored.
- // For ReadEx(): On input, the size of the Buffer. On output, the amount of
- // data returned in Buffer.
- // In both cases, the size is measured in bytes.
- // For WriteEx(): On input, the size of the Buffer. On output, the amount of
- // data actually written.
- // In both cases, the size is measured in bytes.
- // For FlushEx(): Not used, ignored.
- //
- UInt32 BufferSize;
-
- //
- // For OpenEx(): Not Used, ignored.
- // For ReadEx(): The buffer into which the data is read.
- // For WriteEx(): The buffer of data to write.
- // For FlushEx(): Not Used, ignored.
- //
- Void* Buffer;
-} EfiIOToken;
-
-typedef struct EfiFileProtocol
-{
- UInt64 Revision;
-
- EfiStatusType(EFI_API* Open)(struct EfiFileProtocol* This,
- struct EfiFileProtocol** Out,
- EfiCharType* CharType,
- UInt64 OpenMode,
- UInt64 Attrib);
-
- EfiStatusType(EFI_API* Close)(struct EfiFileProtocol* This);
-
- EfiStatusType(EFI_API* Delete)(struct EfiFileProtocol* This);
-
- EfiStatusType(EFI_API* Read)(struct EfiFileProtocol* This, UInt64* BufSize, VoidPtr BufOut);
-
- EfiStatusType(EFI_API* Write)(struct EfiFileProtocol* This, UInt64* BufSize, VoidPtr BufOut);
-
- EfiStatusType(EFI_API* GetPosition)(EfiFileProtocol* This, UInt64* Position);
-
- EfiStatusType(EFI_API* SetPosition)(EfiFileProtocol* This, UInt64* Position);
-
- EfiStatusType(EFI_API* GetInfo)(struct EfiFileProtocol*, struct EfiGUID*, UInt32*, void*);
-
- EfiStatusType(EFI_API* SetInfo)(struct EfiFileProtocol*, struct EfiGUID*, UInt32*, void*);
-
- EfiStatusType(EFI_API* Flush)(EfiFileProtocol*);
-
- EfiStatusType(EFI_API* OpenEx)(EfiFileProtocol* This,
- EfiFileProtocol** OutHandle,
- EfiCharType* Path,
- UInt64 Mode,
- UInt64 Attrib,
- struct EfiIOToken* Token);
-
- EfiStatusType(EFI_API* ReadEx)(EfiFileProtocol* This,
- struct EfiIOToken* Token);
-
- EfiStatusType(EFI_API* WriteEx)(EfiFileProtocol* This,
- struct EfiIOToken* Token);
-
- EfiStatusType(EFI_API* FlushEx)(EfiFileProtocol* This,
- struct EfiIOToken* Token);
-} EfiFileProtocol, *EfiFileProtocolPtr;
-
-typedef UInt64 EfiCursorType;
-
-typedef struct EfiTime
-{
- UInt16 Year;
- UInt8 Month;
- UInt8 Day;
- UInt8 Hour;
- UInt8 Minute;
- UInt8 Second;
- UInt8 Pad1;
- UInt32 Nanosecond;
- Int16 TimeZone;
- UInt8 Daylight;
- UInt8 Pad2;
-} EfiTime;
-
-#define EFI_FILE_INFO_GUID \
- { \
- 0x09576e92, 0x6d3f, 0x11d2, \
- { \
- 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
- } \
- }
-
-struct EfiFileInfo final
-{
- /// @brief Structure size.
- UInt64 Size;
- /// @brief File size.
- UInt64 FileSize;
- /// @brief Physical size on disk.
- UInt64 PhysicalSize;
- /// @brief Create time.
- EfiTime CreateTime;
- /// @brief Last access time.
- EfiTime LastAccessTime;
- /// @brief Edit time.
- EfiTime EditTime;
- /// @brief Attributes.
- UInt64 Attribute;
- /// @brief VLA file name.
- WideChar FileName[1];
-};
-
-#define EFI_FILE_PROTOCOL_REVISION 0x00010000
-#define EFI_FILE_PROTOCOL_REVISION2 0x00020000
-#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
-
-#define EFI_EXTRA_DESCRIPTOR_SIZE 8
-
-#endif // ifndef __EFI__
diff --git a/dev/Kernel/FirmwareKit/EPM.hxx b/dev/Kernel/FirmwareKit/EPM.hxx
deleted file mode 100644
index 905e7f24..00000000
--- a/dev/Kernel/FirmwareKit/EPM.hxx
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/**
- @brief The Explicit Partition Map scheme.
-*/
-
-#ifndef __FIRMWARE_EPM_HXX__
-#define __FIRMWARE_EPM_HXX__
-
-#include <NewKit/Defines.hxx>
-
-#define kEPMNameLength (32)
-#define kEPMFilesystemLength (16)
-#define kEPMMagicLength (5)
-
-/* @brief AMD64 magic for EPM */
-#define kEPMMagic86 "EPMAM"
-
-/* @brief RISC-V magic for EPM */
-#define kEPMMagicRISCV "EPMRV"
-
-/* @brief ARM magic for EPM */
-#define kEPMMagicARM "EPMAR"
-
-/* @brief 64x0 magic for EPM */
-#define kEPMMagic64k "EPM64"
-
-/* @brief 32x0 magic for EPM */
-
-#define kEPMMagic32k "EPM32"
-
-/* @brief POWER magic for EPM */
-
-#define kEPMMagicPPC "EPMPC"
-
-/* @brief UEFI magic for EPM */
-
-#define kEPMMagicUEFI "EPMUE"
-
-/* @brief CoreBoot magic for EPM */
-
-#define kEPMMagicCoreBoot "EPMCB"
-
-/* @brief Invalid magic for EPM */
-
-#define kEPMMagicError "EPM??"
-
-#ifdef __NEWOS_AMD64__
-#define kEPMMagic kEPMMagic86
-#else
-#ifdef __NEWOS_ARM64__
-#define kEPMMagic kEPMMagicARM
-#else
-#define kEPMMagic kEPMMagicError
-#endif
-#endif
-
-///! @brief partition must start at this address.
-///! Anything below is reserved for Data backup by the Main OS.
-#define kEPMStartPartitionBlk (sizeof(_BOOT_BLOCK_STRUCT))
-
-///! @brief Current EPM revision.
-#define kEPMRevision (0xAD)
-
-///! @brief Current EPM revision.
-#define kEPMRevisionUEFI (0xAF)
-
-/// !@brief EPM base address.
-#define kEpmBase (0U)
-
-struct _BLOCK_GUID_STRUCT;
-struct _BOOT_BLOCK_STRUCT;
-
-/* The first 0 > 128 addresses of a disk contains these headers. */
-
-/// @brief EPM GUID structure.
-typedef struct _BLOCK_GUID_STRUCT
-{
- Kernel::UInt32 Data1;
- Kernel::UInt16 Data2;
- Kernel::UInt16 Data3;
- Kernel::UInt8 Data4[8];
-} BLOCK_GUID_STRUCT;
-
-/**
- * @brief The EPM boot block.
- * @note NumBlock and LbaStart are ignored on some platforms.
- */
-struct PACKED _BOOT_BLOCK_STRUCT
-{
- Kernel::Char Magic[kEPMMagicLength];
- Kernel::Char Name[kEPMNameLength];
- BLOCK_GUID_STRUCT Uuid;
- Kernel::Int32 Version;
- Kernel::Int64 NumBlocks;
- Kernel::Int64 SectorSz;
- Kernel::Int64 LbaStart; // base offset
- Kernel::Int64 LbaEnd; // addition of lba_start to get the end of partition.
- Kernel::Int16 Kind;
- Kernel::Int32 FsVersion;
- Kernel::Char Fs[kEPMFilesystemLength]; /* NewFS, ffs2... */
- Kernel::Char Reserved[401]; // to fill a full sector.
-};
-
-///! @brief Version kind enum.
-///! @brief Use in boot block version field.
-
-enum
-{
- kEPMMpUx = 0xcf, // Bridge or other embedded OS
- kEPMLinux = 0x8f,
- kEPMBSD = 0x9f,
- kEPMNewOS = 0x1f, // This kernel.
-};
-
-typedef struct _BOOT_BLOCK_STRUCT BOOT_BLOCK_STRUCT;
-
-#endif // ifndef __FIRMWARE_EPM_HXX__
diff --git a/dev/Kernel/FirmwareKit/Handover.hxx b/dev/Kernel/FirmwareKit/Handover.hxx
deleted file mode 100644
index a93ace39..00000000
--- a/dev/Kernel/FirmwareKit/Handover.hxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/**
- * @file Handover.hxx
- * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com)
- * @brief The handover boot protocol.
- * @version 0.3
- * @date 2024-02-23
- *
- * @copyright Copyright (c) 2024, ZKA Technologies
- *
- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-/* useful macros */
-
-#define kHandoverMagic 0xBADCC
-#define kHandoverVersion 0x113
-
-#define kHandoverMaxCmdLine 8
-
-#define kHandoverStructSz sizeof(HEL::HandoverHeader)
-
-namespace Kernel::HEL
-{
- /**
- @brief the kind of executable we're loading.
-*/
- enum
- {
- kTypeKernel = 100,
- kTypeKernelDriver = 101,
- kTypeRsrc = 102,
- kTypeCount = 3,
- };
-
- /**
- @brief The executable architecture.
-*/
-
- enum
- {
- kArchAmd64 = 122,
- kArchCount = 2,
- };
-
- struct HandoverInformationHeader
- {
- UInt64 f_Magic;
- UInt64 f_Version;
-
- voidPtr f_VirtualStart;
- SizeT f_VirtualSize;
- voidPtr f_PhysicalStart;
-
- WideChar f_FirmwareVendorName[32];
- SizeT f_FirmwareVendorLen;
-
- struct
- {
- VoidPtr f_SmBios;
- VoidPtr f_VendorPtr;
- } f_HardwareTables;
-
- struct
- {
- UIntPtr f_The;
- SizeT f_Size;
- UInt32 f_Width;
- UInt32 f_Height;
- UInt32 f_PixelFormat;
- UInt32 f_PixelPerLine;
- } f_GOP;
-
- UInt64 f_FirmwareSpecific[8];
- Char f_CommandLine[255][kHandoverMaxCmdLine];
- };
-
- enum
- {
- kHandoverSpecificKind,
- kHandoverSpecificAttrib,
- kHandoverSpecificMemoryEfi,
- };
-
- /// @brief Bootloader main type.
- typedef void (*BootMainKind)(HandoverInformationHeader* handoverInfo);
-
- /// @brief Alias of bootloader main type.
- typedef void (*HandoverProc)(HandoverInformationHeader* handoverInfo);
-} // namespace Kernel::HEL
-
-/// @brief Bootloader global header.
-inline Kernel::HEL::HandoverInformationHeader* kHandoverHeader = nullptr;
diff --git a/dev/Kernel/HALKit/.gitkeep b/dev/Kernel/HALKit/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/64x0/.hgkeep b/dev/Kernel/HALKit/64x0/.hgkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/64x0/.hgkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/64x0/APM/.hgkeep b/dev/Kernel/HALKit/64x0/APM/.hgkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/64x0/APM/.hgkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/64x0/HalVirtualMemory.cxx b/dev/Kernel/HALKit/64x0/HalVirtualMemory.cxx
deleted file mode 100644
index 1b0c9153..00000000
--- a/dev/Kernel/HALKit/64x0/HalVirtualMemory.cxx
+++ /dev/null
@@ -1,17 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-using namespace Kernel;
-
-/// @brief Flush system TLB, looks like the POWER version, as it acts the same, no specific instruction for that.
-/// @note The 88K MMU should be present as well.
-EXTERN_C void hal_flush_tlb()
-{
- asm volatile("invltlb");
-}
diff --git a/dev/Kernel/HALKit/64x0/MBCI/.gitkeep b/dev/Kernel/HALKit/64x0/MBCI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/64x0/MBCI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/64x0/ReadMe.md b/dev/Kernel/HALKit/64x0/ReadMe.md
deleted file mode 100644
index 2e72d5bf..00000000
--- a/dev/Kernel/HALKit/64x0/ReadMe.md
+++ /dev/null
@@ -1,4 +0,0 @@
-64x0 Hardware Abstraction Layer
-
-- Supported CPU: ZKA Technologies 64x0
-- Supported Firmware: CoreBoot \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AMD64/CPUID.hxx b/dev/Kernel/HALKit/AMD64/CPUID.hxx
deleted file mode 100644
index f5ae5bb5..00000000
--- a/dev/Kernel/HALKit/AMD64/CPUID.hxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: CPUID.hxx
- Purpose: CPUID flags.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-enum
-{
- eCPU_FEATURE_ECX_SSE3 = 1 << 0,
- eCPU_FEATURE_ECX_PCLMUL = 1 << 1,
- eCPU_FEATURE_ECX_DTES64 = 1 << 2,
- eCPU_FEATURE_ECX_MONITOR = 1 << 3,
- eCPU_FEATURE_ECX_DS_CPL = 1 << 4,
- eCPU_FEATURE_ECX_VMX = 1 << 5,
- eCPU_FEATURE_ECX_SMX = 1 << 6,
- eCPU_FEATURE_ECX_EST = 1 << 7,
- eCPU_FEATURE_ECX_TM2 = 1 << 8,
- eCPU_FEATURE_ECX_SSSE3 = 1 << 9,
- eCPU_FEATURE_ECX_CID = 1 << 10,
- eCPU_FEATURE_ECX_SDBG = 1 << 11,
- eCPU_FEATURE_ECX_FMA = 1 << 12,
- eCPU_FEATURE_ECX_CX16 = 1 << 13,
- eCPU_FEATURE_ECX_XTPR = 1 << 14,
- eCPU_FEATURE_ECX_PDCM = 1 << 15,
- eCPU_FEATURE_ECX_PCID = 1 << 17,
- eCPU_FEATURE_ECX_DCA = 1 << 18,
- eCPU_FEATURE_ECX_SSE4_1 = 1 << 19,
- eCPU_FEATURE_ECX_SSE4_2 = 1 << 20,
- eCPU_FEATURE_ECX_X2APIC = 1 << 21,
- eCPU_FEATURE_ECX_MOVBE = 1 << 22,
- eCPU_FEATURE_ECX_POP3C = 1 << 23,
- eCPU_FEATURE_ECX_TSC = 1 << 24,
- eCPU_FEATURE_ECX_AES = 1 << 25,
- eCPU_FEATURE_ECX_XSAVE = 1 << 26,
- eCPU_FEATURE_ECX_OSXSAVE = 1 << 27,
- eCPU_FEATURE_ECX_AVX = 1 << 28,
- eCPU_FEATURE_ECX_F16C = 1 << 29,
- eCPU_FEATURE_ECX_RDRAND = 1 << 30,
- eCPU_FEATURE_ECX_HYPERVISOR = 1 << 31,
- eCPU_FEATURE_EDX_FPU = 1 << 0,
- eCPU_FEATURE_EDX_VME = 1 << 1,
- eCPU_FEATURE_EDX_DE = 1 << 2,
- eCPU_FEATURE_EDX_PSE = 1 << 3,
- eCPU_FEATURE_EDX_TSC = 1 << 4,
- eCPU_FEATURE_EDX_MSR = 1 << 5,
- eCPU_FEATURE_EDX_PAE = 1 << 6,
- eCPU_FEATURE_EDX_MCE = 1 << 7,
- eCPU_FEATURE_EDX_CX8 = 1 << 8,
- eCPU_FEATURE_EDX_APIC = 1 << 9,
- eCPU_FEATURE_EDX_SEP = 1 << 11,
- eCPU_FEATURE_EDX_MTRR = 1 << 12,
- eCPU_FEATURE_EDX_PGE = 1 << 13,
- eCPU_FEATURE_EDX_MCA = 1 << 14,
- eCPU_FEATURE_EDX_CMOV = 1 << 15,
- eCPU_FEATURE_EDX_PAT = 1 << 16,
- eCPU_FEATURE_EDX_PSE36 = 1 << 17,
- eCPU_FEATURE_EDX_PSN = 1 << 18,
- eCPU_FEATURE_EDX_CLFLUSH = 1 << 19,
- eCPU_FEATURE_EDX_DS = 1 << 21,
- eCPU_FEATURE_EDX_ACPI = 1 << 22,
- eCPU_FEATURE_EDX_MMX = 1 << 23,
- eCPU_FEATURE_EDX_FXSR = 1 << 24,
- eCPU_FEATURE_EDX_SSE = 1 << 25,
- eCPU_FEATURE_EDX_SSE2 = 1 << 26,
- eCPU_FEATURE_EDX_SS = 1 << 27,
- eCPU_FEATURE_EDX_HTT = 1 << 28,
- eCPU_FEATURE_EDX_TM = 1 << 29,
- eCPU_FEATURE_EDX_IA64 = 1 << 30,
- eCPU_FEATURE_EDX_PBE = 1 << 31
-};
-
-typedef long long int hal_cpu_feature_type; \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AMD64/HalACPIFactoryInterface.cxx b/dev/Kernel/HALKit/AMD64/HalACPIFactoryInterface.cxx
deleted file mode 100644
index 4a9af53b..00000000
--- a/dev/Kernel/HALKit/AMD64/HalACPIFactoryInterface.cxx
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <Modules/ACPI/ACPIFactoryInterface.hxx>
-#include <HALKit/AMD64/Processor.hxx>
-#include <NewKit/String.hxx>
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/Heap.hxx>
-
-namespace Kernel
-{
- /// Custom to the virtual machine, you'll need to parse the MADT instead.
-
- void rt_shutdown_acpi_qemu_20(void)
- {
- HAL::Out16(0xb004, 0x2000);
- }
-
- void rt_shutdown_acpi_qemu_30_plus(void)
- {
- HAL::Out16(0x604, 0x2000);
- }
-
- void rt_shutdown_acpi_virtualbox(void)
- {
- HAL::Out16(0x4004, 0x3400);
- }
-
- /// You have to parse the MADT!
-
- ACPIFactoryInterface::ACPIFactoryInterface(VoidPtr rsdPtr)
- : fRsdp(rsdPtr), fEntries(0)
- {
-#ifdef __DEBUG__
- kcout << "newoskrnl: ACPI: init interface.\r";
-#else
-
-#endif
- }
-
- Void ACPIFactoryInterface::Shutdown()
- {
-#ifdef __DEBUG__
- rt_shutdown_acpi_qemu_30_plus();
-#else
-
-#endif
- }
-
- /// @brief Reboot (shutdowns on qemu.)
- /// @return
- Void ACPIFactoryInterface::Reboot()
- {
-#ifdef __DEBUG__
- rt_shutdown_acpi_qemu_30_plus();
-#else
-
-#endif
- }
-
- /// @brief Finds a descriptor table inside ACPI XSDT.
- ErrorOr<voidPtr> ACPIFactoryInterface::Find(const char* signature)
- {
- MUST_PASS(fRsdp);
-
- if (!signature)
- return ErrorOr<voidPtr>{-1};
-
- if (*signature == 0)
- return ErrorOr<voidPtr>{-1};
-
- RSDP* rsdPtr = reinterpret_cast<RSDP*>(this->fRsdp);
-
- if (rsdPtr->Revision <= 1)
- return ErrorOr<voidPtr>{-1};
-
- RSDT* xsdt = reinterpret_cast<RSDT*>(rsdPtr->RsdtAddress);
-
- Int64 num = (xsdt->Length - sizeof(SDT)) / sizeof(UInt32);
-
- /***
- crucial to avoid - overflows.
- */
- if (num < 1)
- {
- /// stop here, we should have entries...
- ke_stop(RUNTIME_CHECK_ACPI);
- return ErrorOr<voidPtr>{-1};
- }
-
- this->fEntries = num;
-
- kcout << "ACPI: Number of entries: " << number(this->fEntries) << endl;
- kcout << "ACPI: Revision: " << number(xsdt->Revision) << endl;
- kcout << "ACPI: Signature: " << xsdt->Signature << endl;
- kcout << "ACPI: Address of XSDT: " << hex_number((UIntPtr)xsdt) << endl;
-
- const short cAcpiSignatureLength = 4;
-
- for (Size index = 0; index < this->fEntries; ++index)
- {
- SDT* sdt = reinterpret_cast<SDT*>(xsdt->AddressArr[index]);
-
- kcout << "ACPI: Checksum: " << number(sdt->Checksum) << endl;
- kcout << "ACPI: Revision: " << number(sdt->Revision) << endl;
-
- for (short signature_index = 0; signature_index < cAcpiSignatureLength; ++signature_index)
- {
- if (sdt->Signature[signature_index] != signature[signature_index])
- break;
-
- if (signature_index == (cAcpiSignatureLength - 1))
- return ErrorOr<voidPtr>(reinterpret_cast<voidPtr>(xsdt->AddressArr[index]));
- }
- }
-
- return ErrorOr<voidPtr>{-1};
- }
-
- /***
- @brief check SDT header
- @param checksum the header to checksum
- @param len the length of it.
-*/
- bool ACPIFactoryInterface::Checksum(const char* checksum, SSizeT len)
- {
- if (len == 0)
- return -1;
-
- char chr = 0;
-
- for (int index = 0; index < len; ++index)
- {
- chr += checksum[index];
- }
-
- return chr == 0;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/HalAPIC.cxx b/dev/Kernel/HALKit/AMD64/HalAPIC.cxx
deleted file mode 100644
index caa2ce0b..00000000
--- a/dev/Kernel/HALKit/AMD64/HalAPIC.cxx
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <Modules/ACPI/ACPIFactoryInterface.hxx>
-#include <HALKit/AMD64/Processor.hxx>
-
-namespace Kernel::HAL
-{
- /// @brief Read from APIC controller.
- /// @param reg register.
- UInt32 APICController::Read(UInt32 reg) noexcept
- {
- MUST_PASS(this->fApic);
-
- UInt32 volatile* ioapic = (UInt32 volatile*)this->fApic;
- ioapic[0] = (reg & 0xff);
-
- return ioapic[4];
- }
-
- /// @brief Write to APIC controller.
- /// @param reg register.
- /// @param value value.
- Void APICController::Write(UInt32 reg, UInt32 value) noexcept
- {
- MUST_PASS(this->fApic);
-
- UInt32 volatile* ioapic = (UInt32 volatile*)this->fApic;
-
- ioapic[0] = (reg & 0xFF);
- ioapic[4] = value;
- }
-} // namespace Kernel::HAL
diff --git a/dev/Kernel/HALKit/AMD64/HalBoot.asm b/dev/Kernel/HALKit/AMD64/HalBoot.asm
deleted file mode 100644
index 8cc3c08f..00000000
--- a/dev/Kernel/HALKit/AMD64/HalBoot.asm
+++ /dev/null
@@ -1,22 +0,0 @@
-;; /*
-;; * ========================================================
-;; *
-;; * Kernel
-;; * Copyright ZKA Technologies., all rights reserved.
-;; *
-;; * ========================================================
-;; */
-
-[bits 64]
-
-;; Global symbol of this unit
-[extern hal_init_platform]
-
-%define kTypeKernel 100
-%define kArchAmd64 122
-%define kHandoverMagic 0xBADCC
-
-section .ldr
-
-HandoverMagic: dq kHandoverMagic
-HandoverType: dw kTypeKernel
diff --git a/dev/Kernel/HALKit/AMD64/HalControlRegister.s b/dev/Kernel/HALKit/AMD64/HalControlRegister.s
deleted file mode 100644
index 879d35c1..00000000
--- a/dev/Kernel/HALKit/AMD64/HalControlRegister.s
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-.globl hal_write_cr3
-.globl hal_write_cr0
-.globl hal_read_cr2
-.globl hal_read_cr3
-.globl hal_read_cr0
-.globl hal_flush_tlb
-
-.text
-
-hal_flush_tlb:
- call hal_read_cr3
- mov %rcx, %rax
- call hal_write_cr3
- ret
-
-hal_read_cr3:
- movq %cr3, %rax
- ret
-
-hal_read_cr0:
- movq %rax, %cr0
- ret
-
-hal_read_cr2:
- movq %rax, %cr2
- ret
-
-hal_write_cr3:
- movq %cr3, %rdi
- ret
-
-hal_write_cr0:
- movq %cr0, %rdi
- ret
diff --git a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx
deleted file mode 100644
index 88b5db36..00000000
--- a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <NewKit/String.hxx>
-
-/// @brief Handle GPF fault.
-/// @param rsp
-EXTERN_C void idt_handle_gpf(Kernel::UIntPtr rsp)
-{
- Kernel::ke_stop(RUNTIME_CHECK_BAD_BEHAVIOR);
-}
-
-/// @brief Handle page fault.
-/// @param rsp
-EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp)
-{
- Kernel::ke_stop(RUNTIME_CHECK_BAD_BEHAVIOR);
-}
-
-/// @brief Handle math fault.
-/// @param rsp
-EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp)
-{
- Kernel::ke_stop(RUNTIME_CHECK_BAD_BEHAVIOR);
-}
-
-/// @brief Handle any generic fault.
-/// @param rsp
-EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp)
-{
- Kernel::ke_stop(RUNTIME_CHECK_BAD_BEHAVIOR);
-}
-
-/// @brief Handle #UD fault.
-/// @param rsp
-EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp)
-{
- Kernel::ke_stop(RUNTIME_CHECK_BAD_BEHAVIOR);
-}
-
-/// @brief Enter syscall from assembly.
-/// @param stack the stack pushed from assembly routine.
-/// @return nothing.
-EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr rdx)
-{
- if (rcx <= (kSyscalls.Count() - 1))
- {
- Kernel::kcout << "newoskrnl: syscall: enter.\r";
-
- if (kSyscalls[rcx].Leak().Leak()->fHooked)
- (kSyscalls[rcx].Leak().Leak()->fProc)((Kernel::VoidPtr)rdx);
-
- Kernel::kcout << "newoskrnl: syscall: exit.\r";
- }
-}
-
-/// @brief Enter kernel call from assembly (DDK only).
-/// @param stack the stack pushed from assembly routine.
-/// @return nothing.
-EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr rdx, Kernel::UIntPtr r8, Kernel::UIntPtr r9)
-{
- if (rcx <= (kSyscalls.Count() - 1))
- {
- Kernel::kcout << "newoskrnl: kerncall: enter.\r";
-
- if (kKerncalls[rcx].Leak().Leak()->fHooked)
- (kKerncalls[rcx].Leak().Leak()->fProc)((Kernel::VoidPtr)rdx);
-
- Kernel::kcout << "newoskrnl: kerncall: exit.\r";
- }
-}
diff --git a/dev/Kernel/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx b/dev/Kernel/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx
deleted file mode 100644
index 6018d20f..00000000
--- a/dev/Kernel/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx
+++ /dev/null
@@ -1,198 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <Modules/ACPI/ACPIFactoryInterface.hxx>
-#include <HALKit/AMD64/Processor.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/Semaphore.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/Timer.hxx>
-
-// Needed for SMP. //
-
-#include <KernelKit/MP.hxx>
-
-#define kApicSignature "APIC"
-
-#define kAPIC_ICR_Low 0x300
-#define kAPIC_ICR_High 0x310
-#define kAPIC_SIPI_Vector 0x00500
-#define kAPIC_EIPI_Vector 0x00400
-
-#define kAPIC_BASE_MSR 0x1B
-#define kAPIC_BASE_MSR_BSP 0x100
-#define kAPIC_BASE_MSR_ENABLE 0x800
-
-/// @note: _hal_switch_context is internal
-
-///////////////////////////////////////////////////////////////////////////////////////
-
-//! NOTE: fGSI stands 'Field Global System Interrupt'
-
-///////////////////////////////////////////////////////////////////////////////////////
-
-namespace Kernel::HAL
-{
- struct MADT_TABLE;
-
- EXTERN_C Void _hal_spin_core(Void);
-
- STATIC Void hal_switch_context(HAL::StackFramePtr stack_frame);
-
- constexpr Int32 kThreadAPIC = 0;
- constexpr Int32 kThreadLAPIC = 1;
- constexpr Int32 kThreadIOAPIC = 2;
- constexpr Int32 kThreadAPIC64 = 3;
- constexpr Int32 kThreadBoot = 4;
-
- STATIC MADT_TABLE* kSMPBlock = nullptr;
- Bool kSMPAware = false;
-
- STATIC Int32 cSMPInterrupt = 34;
-
- STATIC VoidPtr kRawMADT = nullptr;
-
- /*
- *
- * this is used to store info about the current running thread
- * we use this struct to determine if we can use it, or mark it as used or on
- * sleep.
- *
- */
-
- struct ProcessorInfoAMD64 final
- {
- Int32 ThreadType;
- UIntPtr JumpAddress;
-
- struct
- {
- UInt32 Code;
- UInt32 Data;
- UInt32 BSS;
- } Selector;
- };
-
- /// @brief Multiple APIC Descriptor Table.
- struct MADT_TABLE final : public SDT
- {
- UInt32 Address; // Madt address
- UInt32 Flags; // Madt flags
-
- struct {
- UInt8 Type;
- UInt8 Len;
- } Records[]; // Records List
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
-
- /// @brief Send start IPI for CPU.
- /// @param apicId
- /// @param vector
- /// @param targetAddress
- /// @return
- Void hal_send_start_ipi(UInt32 apicId, UInt8 vector, UInt32 targetAddress)
- {
- Kernel::ke_dma_write(targetAddress, kAPIC_ICR_High, (apicId << 24));
- Kernel::ke_dma_write(targetAddress, kAPIC_ICR_Low, kAPIC_SIPI_Vector | vector);
- }
-
- /// @brief Send end IPI for CPU.
- /// @param apicId
- /// @param vector
- /// @param targetAddress
- /// @return
- Void hal_send_end_ipi(UInt32 apicId, UInt8 vector, UInt32 targetAddress)
- {
- Kernel::ke_dma_write(targetAddress, kAPIC_ICR_High, apicId << 24);
- Kernel::ke_dma_write(targetAddress, kAPIC_ICR_Low, kAPIC_EIPI_Vector | vector);
- }
-
- /// @internal
- EXTERN_C Void hal_ap_startup(Void)
- {
- ke_stop(RUNTIME_CHECK_BOOTSTRAP);
- }
-
- /// @internal
- EXTERN_C Void _hal_switch_context(HAL::StackFramePtr stack_frame)
- {
- hal_switch_context(stack_frame);
- }
-
- constexpr auto cMaxPCBBlocks = cMaxHWThreads;
-
- struct PROCESS_CONTROL_BLOCK final
- {
- PROCESS_HEADER_BLOCK* f_Header;
- HAL::StackFramePtr f_StackFrame;
- } fBlocks[cMaxPCBBlocks] = {0};
-
- EXTERN_C HAL::StackFramePtr _hal_leak_current_context(Void)
- {
- return fBlocks[ProcessScheduler::The().Leak().TheCurrent().Leak().ProcessId % cMaxPCBBlocks].f_StackFrame;
- }
-
- STATIC Void hal_switch_context(HAL::StackFramePtr stack_frame)
- {
- STATIC Semaphore sem;
-
- constexpr auto cSeconds = 1U;
-
- HardwareTimer timer(Seconds(cSeconds));
- sem.LockOrWait(&ProcessScheduler::The().Leak().TheCurrent().Leak(), &timer);
-
- fBlocks[ProcessScheduler::The().Leak().TheCurrent().Leak().ProcessId % cMaxPCBBlocks].f_Header = &ProcessScheduler::The().Leak().TheCurrent().Leak();
- fBlocks[ProcessScheduler::The().Leak().TheCurrent().Leak().ProcessId % cMaxPCBBlocks].f_StackFrame = stack_frame;
-
- sem.Unlock();
- }
-
- STATIC auto cAPICAddress = 0x0FEC00000;
-
- STATIC Void cpu_set_apic_base(UIntPtr apic)
- {
- UInt32 edx = 0;
- UInt32 eax = (apic & 0xfffff0000) | kAPIC_BASE_MSR_ENABLE;
-
- edx = (apic >> 32) & 0x0f;
-
- hal_set_msr(kAPIC_BASE_MSR, eax, edx);
- }
-
- STATIC UIntPtr cpu_get_apic_base(Void)
- {
- UInt32 eax, edx;
-
- hal_get_msr(kAPIC_BASE_MSR, &eax, &edx);
-
- return (eax & 0xfffff000) | ((UIntPtr)(edx & 0x0f) << 32);
- }
-
- EXTERN_C Void hal_ap_trampoline(Void);
-
- /// @brief Fetch and enable cores inside main CPU.
- /// @param rsdPtr RSD PTR structure.
- Void hal_system_get_cores(voidPtr rsdPtr)
- {
- auto acpi = ACPIFactoryInterface(rsdPtr);
- kRawMADT = acpi.Find(kApicSignature).Leak().Leak();
-
- kSMPBlock = reinterpret_cast<MADT_TABLE*>(kRawMADT);
-
- if (!kSMPBlock)
- kSMPAware = false;
-
- if (kSMPBlock)
- {
- kSMPAware = true;
- }
- }
-} // namespace Kernel::HAL
-
-///////////////////////////////////////////////////////////////////////////////////////
diff --git a/dev/Kernel/HALKit/AMD64/HalDebugOutput.cxx b/dev/Kernel/HALKit/AMD64/HalDebugOutput.cxx
deleted file mode 100644
index d4e2b435..00000000
--- a/dev/Kernel/HALKit/AMD64/HalDebugOutput.cxx
+++ /dev/null
@@ -1,145 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/Framebuffer.hxx>
-#include <NewKit/Utils.hxx>
-#include <NewKit/New.hxx>
-
-namespace Kernel
-{
- enum CommStatus
- {
- kStateInvalid,
- kStateReady = 0xCF,
- kStateTransmit = 0xFC,
- kStateCnt = 3
- };
-
- namespace Detail
- {
- constexpr short PORT = 0x3F8;
-
- static int kState = kStateInvalid;
-
- /// @brief Init COM1.
- /// @return
- bool hal_serial_init() noexcept
- {
-#ifdef __DEBUG__
- if (kState == kStateReady || kState == kStateTransmit)
- return true;
-
- HAL::Out8(PORT + 1, 0x00); // Disable all interrupts
- HAL::Out8(PORT + 3, 0x80); // Enable DLAB (set baud rate divisor)
- HAL::Out8(PORT + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud
- HAL::Out8(PORT + 1, 0x00); // (hi byte)
- HAL::Out8(PORT + 3, 0x03); // 8 bits, no parity, one stop bit
- HAL::Out8(PORT + 2, 0xC7); // Enable FIFO, clear them, with 14-byte threshold
- HAL::Out8(PORT + 4, 0x0B); // IRQs enabled, RTS/DSR set
- HAL::Out8(PORT + 4, 0x1E); // Set in loopback mode, test the serial chip
- HAL::Out8(PORT + 0, 0xAE); // Test serial chip (send byte 0xAE and check if
- // serial returns same byte)
-
- // Check if serial is faulty (i.e: not same byte as sent)
- if (HAL::In8(PORT) != 0xAE)
- {
- ke_stop(RUNTIME_CHECK_HANDSHAKE);
- }
-
- kState = kStateReady;
-
- // If serial is not faulty set it in normal operation mode
- // (not-loopback with IRQs enabled and OUT#1 and OUT#2 bits enabled)
- HAL::Out8(Detail::PORT + 4, 0x0F);
-#endif // __DEBUG__
-
- return true;
- }
- } // namespace Detail
-
- EXTERN_C void ke_io_write(const char* bytes)
- {
-#ifdef __DEBUG__
- Detail::hal_serial_init();
-
- if (!bytes || Detail::kState != kStateReady)
- return;
- if (*bytes == 0)
- return;
-
- Detail::kState = kStateTransmit;
-
- SizeT index = 0;
- SizeT len = 0;
-
- index = 0;
- len = rt_string_len(bytes, 255);
-
- while (index < len)
- {
- if (bytes[index] == '\r')
- HAL::Out8(Detail::PORT, '\r');
-
- HAL::Out8(Detail::PORT, bytes[index] == '\r' ? '\n' : bytes[index]);
- ++index;
- }
-
- Detail::kState = kStateReady;
-#endif // __DEBUG__
- }
-
- EXTERN_C void ke_io_read(const char* bytes)
- {
-#ifdef __DEBUG__
- Detail::hal_serial_init();
-
- if (!bytes || Detail::kState != kStateReady)
- return;
-
- Detail::kState = kStateTransmit;
-
- SizeT index = 0;
-
- ///! TODO: Look on how to wait for the UART to complete.
- while (true)
- {
- auto in = HAL::In8(Detail::PORT);
-
- ///! If enter pressed then break.
- if (in == 0xD)
- {
- break;
- }
-
- if (in < '0' || in < 'A' || in < 'a')
- {
- if (in != '@' || in != '!' || in != '?' || in != '.' || in != '/' ||
- in != ':')
- {
- continue;
- }
- }
-
- ((char*)bytes)[index] = in;
-
- ++index;
- }
-
- ((char*)bytes)[index] = 0;
-
- Detail::kState = kStateReady;
-#endif // __DEBUG__
- }
-
- TerminalDevice TerminalDevice::The() noexcept
- {
- TerminalDevice out(Kernel::ke_io_write, Kernel::ke_io_read);
- return out;
- }
-
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/HalDebugPort.cxx b/dev/Kernel/HALKit/AMD64/HalDebugPort.cxx
deleted file mode 100644
index 1ea52b8d..00000000
--- a/dev/Kernel/HALKit/AMD64/HalDebugPort.cxx
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-//! @file DebuggerPort.cxx
-//! @brief UART debug via packets.
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-// after that we have start of additional data.
-
-namespace Kernel
-{
- void rt_debug_listen(DebuggerPortHeader* theHook) noexcept
- {
- if (theHook == nullptr)
- return;
-
- for (UInt32 i = 0U; i < kDebugMaxPorts; ++i)
- {
- HAL::Out16(theHook->fPort[i], kDebugMag0);
- HAL::rt_wait_400ns();
-
- HAL::Out16(theHook->fPort[i], kDebugMag1);
- HAL::rt_wait_400ns();
-
- HAL::Out16(theHook->fPort[i], kDebugMag2);
- HAL::rt_wait_400ns();
-
- HAL::Out16(theHook->fPort[i], kDebugMag3);
- HAL::rt_wait_400ns();
-
- if (HAL::In16(theHook->fPort[i] != kDebugUnboundPort))
- theHook->fBoundCnt++;
- }
- }
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cxx b/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cxx
deleted file mode 100644
index 0339dd7f..00000000
--- a/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cxx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-
-namespace Kernel::HAL
-{
- namespace Detail
- {
- STATIC RegisterGDT kRegGdt;
- STATIC HAL::Register64 kRegIdt;
-
- STATIC ::Kernel::Detail::AMD64::InterruptDescriptorAMD64
- kInterruptVectorTable[kKernelIdtSize];
-
- STATIC Void RemapPIC(Void) noexcept
- {
- // Remap PIC.
- HAL::Out8(0x20, 0x10 | 0x01);
- HAL::Out8(0xA0, 0x10 | 0x01);
-
- HAL::Out8(0x21, 32);
- HAL::Out8(0xA1, 40);
-
- HAL::Out8(0x21, 4);
- HAL::Out8(0xA1, 2);
-
- HAL::Out8(0x21, 0x01);
- HAL::Out8(0xA1, 0x01);
-
- HAL::Out8(0x21, 0x00);
- HAL::Out8(0xA1, 0x00);
- }
- } // namespace Detail
-
- /// @brief Loads the provided Global Descriptor Table.
- /// @param gdt
- /// @return
- Void GDTLoader::Load(RegisterGDT& gdt)
- {
- MUST_PASS(gdt.Base != 0);
-
- Detail::kRegGdt.Base = gdt.Base;
- Detail::kRegGdt.Limit = gdt.Limit;
-
- hal_load_gdt(Detail::kRegGdt);
- }
-
- Void IDTLoader::Load(Register64& idt)
- {
- volatile ::Kernel::UIntPtr** baseIdt = (volatile ::Kernel::UIntPtr**)idt.Base;
-
- MUST_PASS(baseIdt);
-
- Detail::RemapPIC();
-
- for (UInt16 i = 0; i < kKernelIdtSize; ++i)
- {
- MUST_PASS(baseIdt[i]);
-
- Detail::kInterruptVectorTable[i].Selector = kGdtCodeSelector;
- Detail::kInterruptVectorTable[i].Ist = 0x0;
- Detail::kInterruptVectorTable[i].TypeAttributes = kInterruptGate;
- Detail::kInterruptVectorTable[i].OffsetLow = ((UIntPtr)baseIdt[i] & __INT16_MAX__);
- Detail::kInterruptVectorTable[i].OffsetMid = (((UIntPtr)baseIdt[i] >> 16) & __INT16_MAX__);
- Detail::kInterruptVectorTable[i].OffsetHigh =
- (((UIntPtr)baseIdt[i] >> 32) & __INT32_MAX__);
-
- Detail::kInterruptVectorTable[i].Zero = 0x0;
- }
-
- Detail::kRegIdt.Base = reinterpret_cast<UIntPtr>(Detail::kInterruptVectorTable);
- Detail::kRegIdt.Limit = sizeof(::Kernel::Detail::AMD64::InterruptDescriptorAMD64) *
- (kKernelIdtSize - 1);
-
- hal_load_idt(Detail::kRegIdt);
- }
-
- void GDTLoader::Load(Ref<RegisterGDT>& gdt)
- {
- GDTLoader::Load(gdt.Leak());
- }
-
- void IDTLoader::Load(Ref<Register64>& idt)
- {
- IDTLoader::Load(idt.Leak());
- }
-} // namespace Kernel::HAL
diff --git a/dev/Kernel/HALKit/AMD64/HalHart.cxx b/dev/Kernel/HALKit/AMD64/HalHart.cxx
deleted file mode 100644
index bc0a485e..00000000
--- a/dev/Kernel/HALKit/AMD64/HalHart.cxx
+++ /dev/null
@@ -1,33 +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)
- {
- HAL::rt_cli();
-
- rt_do_context_switch(stack);
-
- HAL::rt_sti();
- }
-
- /// @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/AMD64/HalInterruptAPI.asm b/dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm
deleted file mode 100644
index 093da0db..00000000
--- a/dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm
+++ /dev/null
@@ -1,242 +0,0 @@
-;; /*
-;; * ---------------------------------------------------
-;; *
-;; * Copyright ZKA Technologies., all rights reserved.
-;; *
-;; * File: HalInterruptAPI.asm
-;; * Purpose: Interrupt routing, redirect raw interrupts into their handlers.
-;; *
-;; * ---------------------------------------------------
-;; */
-
-[bits 64]
-
-%define kInterruptId 0x21
-
-%macro IntExp 1
-global __NEW_INT_%1
-__NEW_INT_%1:
- cld
-
- iretq
-%endmacro
-
-%macro IntNormal 1
-global __NEW_INT_%1
-__NEW_INT_%1:
- cld
-
- iretq
-%endmacro
-
-; This file handles the core interrupt table
-; Last edited 31/01/24
-
-global ke_handle_irq
-global kInterruptVectorTable
-
-extern _hal_handle_mouse
-extern idt_handle_gpf
-extern idt_handle_pf
-extern ke_io_write
-extern idt_handle_ud
-
-section .text
-
-IntNormal 0
-IntNormal 1
-
-IntNormal 2
-
-IntNormal 3
-IntNormal 4
-IntNormal 5
-
-;; Invalid opcode interrupt
-__NEW_INT_6:
- cli
-
- push rax
-
- mov rcx, rsp
- call idt_handle_ud
-
- pop rax
-
- sti
- iretq
-
-IntNormal 7
-IntExp 8
-IntNormal 9
-IntExp 10
-IntExp 11
-
-IntExp 12
-
-__NEW_INT_13:
- cli
-
- push rax
-
- mov rcx, rsp
- call idt_handle_gpf
-
- pop rax
-
- sti
- iretq
-
-__NEW_INT_14:
- cli
-
- push rax
-
- mov rcx, rsp
- call idt_handle_pf
-
- pop rax
-
- sti
- iretq
-
-IntNormal 15
-IntNormal 16
-IntExp 17
-IntNormal 18
-IntNormal 19
-IntNormal 20
-IntNormal 21
-IntNormal 22
-IntNormal 23
-IntNormal 24
-IntNormal 25
-IntNormal 26
-IntNormal 27
-IntNormal 28
-IntNormal 29
-IntExp 30
-
-IntNormal 31
-
-IntNormal 32
-IntNormal 34
-
-IntNormal 33
-IntNormal 35
-IntNormal 36
-IntNormal 37
-IntNormal 38
-IntNormal 39
-IntNormal 40
-IntNormal 41
-IntNormal 42
-IntNormal 43
-
-__NEW_INT_44:
- cli
-
- ;; TODO: CoreEvents dispatch routine.
-
- push rax
- call _hal_handle_mouse
- pop rax
-
- sti
- iretq
-
-IntNormal 45
-IntNormal 46
-IntNormal 47
-IntNormal 48
-IntNormal 49
-
-[extern hal_system_call_enter]
-[extern hal_kernel_call_enter]
-
-__NEW_INT_50:
- cli
-
- push rcx
- push rdx
- push rax
-
- call hal_system_call_enter
-
- pop rax
- pop rdx
- pop rcx
-
- sti
- iretq
-
-__NEW_INT_51:
- cli
-
- push rcx
- push rdx
- push r8
- push r9
- push rax
-
- call hal_kernel_call_enter
-
- pop rax
- pop r9
- pop r8
- pop rdx
- pop rcx
-
- sti
- iretq
-
-IntNormal 52
-IntNormal 53
-IntNormal 54
-IntNormal 55
-IntNormal 56
-IntNormal 57
-IntNormal 58
-IntNormal 59
-IntNormal 60
-
-%assign i 61
-%rep 195
- IntNormal i
-%assign i i+1
-%endrep
-
-section .text
-
-[global hal_load_gdt]
-
-hal_load_gdt:
- lgdt [rcx]
- push 0x08
- lea rax, [rel rt_reload_segments]
- push rax
- retfq
-rt_reload_segments:
- mov ax, 0x10
- mov ds, ax
- mov es, ax
- mov fs, ax
- mov gs, ax
- mov ss, ax
- ret
-
-global hal_load_idt
-
-hal_load_idt:
- lidt [rcx]
- sti
- ret
-
-section .data
-
-kInterruptVectorTable:
- %assign i 0
- %rep 256
- dq __NEW_INT_%+i
- %assign i i+1
- %endrep
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cxx b/dev/Kernel/HALKit/AMD64/HalKernelMain.cxx
deleted file mode 100644
index 49ddfa6c..00000000
--- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cxx
+++ /dev/null
@@ -1,251 +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>
-#include <CFKit/Property.hxx>
-#include <Modules/CoreCG/TextRenderer.hxx>
-
-Kernel::Property cKernelVersion;
-Kernel::Property cAutoFormatDisk;
-
-EXTERN Kernel::Boolean kAllocationInProgress;
-
-EXTERN_C Kernel::VoidPtr kInterruptVectorTable[];
-
-struct HEAP_ALLOC_INFO final
-{
- Kernel::VoidPtr fThe;
- Kernel::Size fTheSz;
-};
-
-struct PROCESS_BLOCK_INFO final
-{
- THREAD_INFORMATION_BLOCK* fTIB;
- THREAD_INFORMATION_BLOCK* fGIB;
-};
-
-struct PROCESS_EXIT_INFO final
-{
- STATIC constexpr auto cReasonLen = 512;
-
- Kernel::Int64 fCode;
- Kernel::Char fReason[cReasonLen];
-};
-
-namespace Kernel::HAL
-{
- /// @brief Gets the system cores using the MADT.
- /// @param rsdPtr The 'RSD PTR' data structure.
- EXTERN void hal_system_get_cores(Kernel::voidPtr rsdPtr);
-} // namespace Kernel::HAL
-
-/* GDT. */
-STATIC Kernel::HAL::Detail::NewOSGDT cGdt = {
- {0, 0, 0, 0x00, 0x00, 0}, // null entry
- {0, 0, 0, 0x9a, 0xaf, 0}, // kernel code
- {0, 0, 0, 0x92, 0xaf, 0}, // kernel data
- {0, 0, 0, 0x00, 0x00, 0}, // null entry
- {0, 0, 0, 0x9a, 0xaf, 0}, // user code
- {0, 0, 0, 0x92, 0xaf, 0}, // user data
-};
-
-Kernel::Void hal_real_init(Kernel::Void) noexcept;
-
-static Kernel::User* cRoot;
-
-EXTERN_C void hal_init_platform(
- Kernel::HEL::HandoverInformationHeader* HandoverHeader)
-{
- /* Setup globals. */
-
- kHandoverHeader = HandoverHeader;
-
- if (kHandoverHeader->f_Magic != kHandoverMagic &&
- kHandoverHeader->f_Version != kHandoverVersion)
- {
- return;
- }
-
- hal_real_init();
-}
-
-Kernel::Void hal_real_init(Kernel::Void) noexcept
-{
- // reset kAllocationInProgress field to zero.
- kAllocationInProgress = false;
-
- // get page size.
- kKernelVirtualSize = kHandoverHeader->f_VirtualSize;
-
- // get virtual address start (for the heap)
- kKernelVirtualStart = reinterpret_cast<Kernel::VoidPtr>(
- reinterpret_cast<Kernel::UIntPtr>(kHandoverHeader->f_VirtualStart));
-
- // get physical address start.
- kKernelPhysicalStart = reinterpret_cast<Kernel::VoidPtr>(
- reinterpret_cast<Kernel::UIntPtr>(kHandoverHeader->f_PhysicalStart));
-
- // Load memory descriptors.
- Kernel::HAL::RegisterGDT gdtBase;
-
- gdtBase.Base = reinterpret_cast<Kernel::UIntPtr>(&cGdt);
- gdtBase.Limit = sizeof(Kernel::HAL::Detail::NewOSGDT) - 1;
-
- CONST Kernel::HAL::GDTLoader cGDT;
- cGDT.Load(gdtBase);
-
- // Load IDT now.
-
- Kernel::HAL::Register64 idtBase;
- idtBase.Base = (Kernel::UIntPtr)kInterruptVectorTable;
- idtBase.Limit = 0;
-
- CONST Kernel::HAL::IDTLoader cIDT;
- cIDT.Load(idtBase);
-
- // Register the basic system calls.
-
- 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;
-
- kSyscalls[cTlsInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- if (tls_check_syscall_impl(rdx) == false)
- {
- Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().Crash();
- }
- };
-
- kSyscalls[cNewInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- // get HAC struct.
- HEAP_ALLOC_INFO* rdxInf = reinterpret_cast<HEAP_ALLOC_INFO*>(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.
- HEAP_ALLOC_INFO* rdxInf = reinterpret_cast<HEAP_ALLOC_INFO*>(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 {
- PROCESS_BLOCK_INFO* rdxPb = reinterpret_cast<PROCESS_BLOCK_INFO*>(rdx);
-
- if (!rdxPb)
- return;
-
- // install the fTIB and fGIB.
- rt_install_tib(rdxPb->fTIB, rdxPb->fGIB);
- };
-
- kSyscalls[cExitInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- PROCESS_EXIT_INFO* rdxEi = reinterpret_cast<PROCESS_EXIT_INFO*>(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 {
- PROCESS_EXIT_INFO* rdxEi = reinterpret_cast<PROCESS_EXIT_INFO*>(rdx);
-
- if (!rdxEi)
- return;
-
- rdxEi->fCode = Kernel::sched_get_exit_code();
- };
-
- kSyscalls[cRebootInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- Kernel::PowerFactoryInterface pow(kHandoverHeader->f_HardwareTables.f_VendorPtr);
- pow.Reboot();
- };
-
- kSyscalls[cShutdownInterrupt].Leak().Leak()->fProc = [](Kernel::VoidPtr rdx) -> void {
- Kernel::PowerFactoryInterface pow(kHandoverHeader->f_HardwareTables.f_VendorPtr);
- pow.Shutdown();
- };
-
- 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;
-
- Kernel::HAL::hal_system_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
-
- Kernel::kcout << "newoskrnl: Creating filesystem and such.\r";
-
- auto fs = new Kernel::NewFilesystemManager();
-
- MUST_PASS(fs);
- MUST_PASS(fs->GetParser());
-
- Kernel::NewFilesystemManager::Mount(fs);
-
- delete fs->GetParser()->CreateCatalog("\\Users\\", 0, kNewFSCatalogKindDir);
-
- Kernel::kcout << "newoskrnl: Created filesystem and now creating " << kSuperUser << "..." << Kernel::endl;
-
- cRoot = new Kernel::User(Kernel::RingKind::kRingSuperUser, kSuperUser);
-
-#ifdef __DEBUG__
- const auto cPassword = "6aa162f3-20f6-4143-92f9-5dd37066aedc";
-#else
- const auto cPassword = "password";
-#endif
-
- Kernel::UserManager::The()->fRootUser = cRoot;
-
- Kernel::kcout << "newoskrnl: Root is " << kSuperUser << "." << Kernel::endl;
-
- cRoot->TrySave(cPassword);
-
- Kernel::UserManager::The()->TryLogIn(cRoot, cPassword);
-
- Kernel::ke_stop(RUNTIME_CHECK_FAILED);
-}
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMouse.cxx b/dev/Kernel/HALKit/AMD64/HalKernelMouse.cxx
deleted file mode 100644
index bff5e5ee..00000000
--- a/dev/Kernel/HALKit/AMD64/HalKernelMouse.cxx
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <Modules/PS2/PS2MouseInterface.hxx>
-#include <Modules/CoreCG/FbRenderer.hxx>
-#include <Modules/CoreCG/Rsrc/Cursor.rsrc>
-#include <KernelKit/Framebuffer.hxx>
-#include <NewKit/Defines.hxx>
-
-/// @note forward decl.
-EXTERN_C Kernel::Boolean _hal_draw_mouse();
-EXTERN_C Kernel::Void _hal_init_mouse();
-
-STATIC Kernel::Int32 kPrevX = 10;
-STATIC Kernel::Int32 kPrevY = 10;
-STATIC Kernel::Int32 kX = 10;
-STATIC Kernel::Int32 kY = 10;
-STATIC Kernel::Int32 kMouseCycle = 0;
-STATIC Kernel::PS2MouseInterface kMousePS2;
-STATIC Kernel::Char kMousePacket[4] = {};
-STATIC Kernel::Boolean kMousePacketReady = false;
-
-STATIC CGInit();
-
-#define kPS2Leftbutton 0b00000001
-#define kPS2Middlebutton 0b00000010
-#define kPS2Rightbutton 0b00000100
-#define kPS2XSign 0b00010000
-#define kPS2YSign 0b00100000
-#define kPS2XOverflow 0b01000000
-#define kPS2YOverflow 0b10000000
-
-using namespace Kernel;
-
-Void hal_handle_mouse()
-{
- Kernel::UInt8 data = HAL::In8(0x60);
-
- switch (kMouseCycle)
- {
- case 0:
- if (kMousePacketReady)
- break;
- if ((data & 0b00001000) == 0)
- break;
- kMousePacket[0] = data;
- kMouseCycle++;
- break;
- case 1:
- if (kMousePacketReady)
- break;
- kMousePacket[1] = data;
- kMouseCycle++;
- break;
- case 2:
- if (kMousePacketReady)
- break;
- kMousePacket[2] = data;
- kMousePacketReady = true;
- kMouseCycle = 0;
- break;
- }
-
- // Notify PIC controller that we're done with it's interrupt.
-
- Kernel::HAL::Out8(0x20, 0x20);
- Kernel::HAL::Out8(0xA0, 0x20);
-}
-
-/// @brief Interrupt handler for the mouse.
-EXTERN_C Void _hal_handle_mouse()
-{
- hal_handle_mouse();
-}
-
-EXTERN_C Boolean _hal_left_button_pressed()
-{
- return kMousePacket[0] & kPS2Leftbutton;
-}
-EXTERN_C Boolean _hal_right_button_pressed()
-{
- return kMousePacket[0] & kPS2Rightbutton;
-}
-EXTERN_C Boolean _hal_middle_button_pressed()
-{
- return kMousePacket[0] & kPS2Middlebutton;
-}
-
-/// @brief Draws the kernel's mouse.
-EXTERN_C Boolean _hal_draw_mouse()
-{
- if (!kMousePacketReady)
- return false;
-
- bool xNegative, yNegative, xOverflow, yOverflow;
-
- if (kMousePacket[0] & kPS2XSign)
- {
- xNegative = true;
- }
- else
- xNegative = false;
-
- if (kMousePacket[0] & kPS2YSign)
- {
- yNegative = true;
- }
- else
- yNegative = false;
-
- if (kMousePacket[0] & kPS2XOverflow)
- {
- xOverflow = true;
- }
- else
- xOverflow = false;
-
- if (kMousePacket[0] & kPS2YOverflow)
- {
- yOverflow = true;
- }
- else
- yOverflow = false;
-
- if (!xNegative)
- {
- kX += kMousePacket[1];
- if (xOverflow)
- {
- kX += 255;
- }
- }
- else
- {
- kMousePacket[1] = 256 - kMousePacket[1];
- kX -= kMousePacket[1];
- if (xOverflow)
- {
- kX -= 255;
- }
- }
-
- if (!yNegative)
- {
- kY -= kMousePacket[2];
- if (yOverflow)
- {
- kY -= 255;
- }
- }
- else
- {
- kMousePacket[2] = 256 - kMousePacket[2];
- kY += kMousePacket[2];
- if (yOverflow)
- {
- kY += 255;
- }
- }
-
- if (kX < 0)
- kX = 0;
- if (kX > kHandoverHeader->f_GOP.f_Width - 8)
- kX = kHandoverHeader->f_GOP.f_Width - 8;
-
- if (kY < 0)
- kY = 0;
- if (kY > kHandoverHeader->f_GOP.f_Height - 16)
- kY = kHandoverHeader->f_GOP.f_Height - 16;
-
- /// Draw mouse here.
-
- kPrevX = kX;
- kPrevY = kY;
-
- kMousePacketReady = false;
- return true;
-}
-
-/// @brief Init kernel mouse.
-EXTERN_C Void _hal_init_mouse()
-{
- kMousePS2.Init();
-
- HAL::Out8(0x21, 0b11111001);
- HAL::Out8(0xA1, 0b11101111);
-}
diff --git a/dev/Kernel/HALKit/AMD64/HalPageAlloc.cxx b/dev/Kernel/HALKit/AMD64/HalPageAlloc.cxx
deleted file mode 100644
index 0e39a0f1..00000000
--- a/dev/Kernel/HALKit/AMD64/HalPageAlloc.cxx
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-
-#define cVMHMagic (0xDEEFD00D)
-
-#ifdef __NEWOS_AMD64__
-#include <HALKit/AMD64/HalPageAlloc.hxx>
-#elif defined(__NEWOS_ARM64__)
-#include <HALKit/ARM64/HalPageAlloc.hxx>
-#endif
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/KernelCheck.hxx>
-
-Kernel::Boolean kAllocationInProgress = false;
-
-namespace Kernel
-{
-
- namespace HAL
- {
- namespace Detail
- {
- struct VIRTUAL_MEMORY_HEADER
- {
- UInt32 Magic;
- Boolean Present : 1;
- Boolean ReadWrite : 1;
- Boolean User : 1;
- SizeT Size;
- };
-
- struct VirtualMemoryHeaderTraits final
- {
- /// @brief Get next header.
- /// @param current
- /// @return
- VIRTUAL_MEMORY_HEADER* Next(VIRTUAL_MEMORY_HEADER* current)
- {
- if (current->Magic != cVMHMagic)
- current->Size = 8196;
-
- return current + sizeof(VIRTUAL_MEMORY_HEADER) + current->Size;
- }
-
- /// @brief Get previous header.
- /// @param current
- /// @return
- VIRTUAL_MEMORY_HEADER* Prev(VIRTUAL_MEMORY_HEADER* current)
- {
- if (current->Magic != cVMHMagic)
- current->Size = 8196;
-
- return current - sizeof(VIRTUAL_MEMORY_HEADER) - current->Size;
- }
- };
- } // namespace Detail
-
- /// @brief Allocates a new page of memory.
- /// @param sz the size of it.
- /// @param rw read/write flag.
- /// @param user user flag.
- /// @return the page table of it.
- STATIC auto hal_try_alloc_new_page(Boolean rw, Boolean user, SizeT size) -> VoidPtr
- {
- if (kAllocationInProgress)
- return nullptr;
-
- kAllocationInProgress = true;
-
- //! fetch from the start.
- Detail::VIRTUAL_MEMORY_HEADER* vmh_header = reinterpret_cast<Detail::VIRTUAL_MEMORY_HEADER*>(kKernelVMTStart);
- Detail::VirtualMemoryHeaderTraits traits;
-
- while (vmh_header->Present &&
- vmh_header->Magic == cVMHMagic)
- {
- vmh_header = traits.Next(vmh_header);
- }
-
- vmh_header->Magic = cVMHMagic;
- vmh_header->Present = true;
- vmh_header->ReadWrite = rw;
- vmh_header->User = user;
- vmh_header->Size = size;
-
- kAllocationInProgress = false;
-
- return reinterpret_cast<VoidPtr>(vmh_header + sizeof(Detail::VIRTUAL_MEMORY_HEADER));
- }
-
- /// @brief Allocate a new page to be used by the OS.
- /// @param rw read/write bit.
- /// @param user user bit.
- /// @return
- auto hal_alloc_page(Boolean rw, Boolean user, SizeT size) -> VoidPtr
- {
- kcout << "Waiting now...";
-
- // Wait for a ongoing allocation to complete.
- while (kAllocationInProgress)
- {
- (void)0;
- }
-
- kcout << ", done waiting, allocating...\r";
-
- if (size == 0)
- ++size;
-
- // allocate new page.
- return hal_try_alloc_new_page(rw, user, size);
- }
- } // namespace HAL
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/HalPageAlloc.hxx b/dev/Kernel/HALKit/AMD64/HalPageAlloc.hxx
deleted file mode 100644
index 30cb7911..00000000
--- a/dev/Kernel/HALKit/AMD64/HalPageAlloc.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-/** ---------------------------------------------------
-
- * THIS FILE CONTAINS CODE FOR X86_64 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
-
-#ifndef kAlign
-#define kAlign __BIGGEST_ALIGNMENT__
-#endif // !kAlign
-
-EXTERN_C void hal_flush_tlb();
-EXTERN_C void hal_write_cr3(Kernel::UIntPtr pde);
-EXTERN_C void hal_write_cr0(Kernel::UIntPtr bit);
-
-EXTERN_C Kernel::UIntPtr hal_read_cr0(); // @brief CPU control register.
-EXTERN_C Kernel::UIntPtr hal_read_cr2(); // @brief Fault address.
-EXTERN_C Kernel::UIntPtr hal_read_cr3(); // @brief Page table.
-
-namespace Kernel::HAL
-{
- struct PACKED PageTable64 final
- {
- bool Present : 1;
- bool Rw : 1;
- bool User : 1;
- bool Wt : 1;
- bool Cache : 1;
- bool Accessed : 1;
- Kernel::Int32 Reserved : 6;
- Kernel::UInt64 PhysicalAddress : 36;
- Kernel::Int32 Reserved1 : 15;
- bool ExecDisable : 1;
- };
-
- 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
- {
- PageTable64 ALIGN(kPTEAlign) Pte[kPTEMax];
- };
-
- VoidPtr hal_alloc_page(Boolean rw, Boolean user, SizeT size);
-} // namespace Kernel::HAL
-
-namespace Kernel
-{
- typedef HAL::PageTable64 PTE;
- typedef HAL::PageDirectory64 PDE;
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/HalProcessor.cxx b/dev/Kernel/HALKit/AMD64/HalProcessor.cxx
deleted file mode 100644
index 367e9314..00000000
--- a/dev/Kernel/HALKit/AMD64/HalProcessor.cxx
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/AMD64/Processor.hxx>
-
-/**
- * @file Processor.cpp
- * @brief This file is about processor specific functions (in/out/cli/std...)
- */
-
-namespace Kernel::HAL
-{
- Void Out8(UInt16 port, UInt8 value)
- {
- asm volatile("outb %%al, %1"
- :
- : "a"(value), "Nd"(port)
- : "memory");
- }
-
- Void Out16(UInt16 port, UInt16 value)
- {
- asm volatile("outw %%ax, %1"
- :
- : "a"(value), "Nd"(port)
- : "memory");
- }
-
- Void Out32(UInt16 port, UInt32 value)
- {
- asm volatile("outl %%eax, %1"
- :
- : "a"(value), "Nd"(port)
- : "memory");
- }
-
- UInt8 In8(UInt16 port)
- {
- UInt8 value = 0UL;
- asm volatile("inb %1, %%al"
- : "=a"(value)
- : "Nd"(port)
- : "memory");
-
- return value;
- }
-
- UInt16 In16(UInt16 port)
- {
- UInt16 value = 0UL;
- asm volatile("inw %1, %%ax"
- : "=a"(value)
- : "Nd"(port)
- : "memory");
-
- return value;
- }
-
- UInt32 In32(UInt16 port)
- {
- UInt32 value = 0UL;
- asm volatile("inl %1, %%eax"
- : "=a"(value)
- : "Nd"(port)
- : "memory");
-
- return value;
- }
-
- Void rt_halt()
- {
- asm volatile("hlt");
- }
-
- Void rt_cli()
- {
- asm volatile("cli");
- }
-
- Void rt_sti()
- {
- asm volatile("sti");
- }
-
- Void rt_cld()
- {
- asm volatile("cld");
- }
-
- Void rt_std()
- {
- asm volatile("std");
- }
-} // namespace Kernel::HAL
diff --git a/dev/Kernel/HALKit/AMD64/HalRoutines.s b/dev/Kernel/HALKit/AMD64/HalRoutines.s
deleted file mode 100644
index d794882d..00000000
--- a/dev/Kernel/HALKit/AMD64/HalRoutines.s
+++ /dev/null
@@ -1,9 +0,0 @@
-.globl rt_wait_400ns
-
-.section .text
-rt_wait_400ns:
- jmp .loop
- .loop:
- jmp .loop2
- .loop2:
- ret
diff --git a/dev/Kernel/HALKit/AMD64/HalSMPCoreManager.asm b/dev/Kernel/HALKit/AMD64/HalSMPCoreManager.asm
deleted file mode 100644
index 3c53d49d..00000000
--- a/dev/Kernel/HALKit/AMD64/HalSMPCoreManager.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-;; /*
-;; * ========================================================
-;; *
-;; * Kernel
-;; * Copyright ZKA Technologies., all rights reserved.
-;; *
-;; * ========================================================
-;; */
-
-[bits 64]
-
-[global rt_get_current_context]
-[global rt_do_context_switch]
-[global _hal_spin_core]
-[extern _hal_switch_context]
-[extern _hal_leak_current_context]
-
-section .text
-
-;; writes to rdx the stackframe inside rcx.
-;; rcx: Stack Pointer
-;; rdx: SMP core address.
-rt_do_context_switch:
- push rax
- call _hal_switch_context
- pop rax
-
- ;; Now grab newly allocated process's stack frame.
-
- push rax
- call _hal_leak_current_context
- mov rax, r9
- pop rax
-
- ;; Take care of context switching within AP.
-
- mov r9, rax
-
- mov rbp, [r9 + (8 * 5)]
- mov rsp, [r9 + (8 * 6)]
-
- mov gs, [r9 + (8 * 19)]
- mov fs, [r9 + (8 * 20)]
-
- mov rcx, [r9 + (8 * 3)]
- mov rdx, [r9 + (8 * 4)]
- mov rbx, [r9 + (8 * 7)]
- mov rax, [r9 + (8 * 8)]
- movq xmm0, [r9 + (8 * 9)]
- movq xmm1, [r9 + (8 * 10)]
-
- mov r8, [r9 + (8 * 11)]
- mov r10, [r9 + (8 * 13)]
- mov r11, [r9 + (8 * 14)]
- mov r12, [r9 + (8 * 15)]
- mov r13, [r9 + (8 * 16)]
- mov r14, [r9 + (8 * 17)]
- mov r15, [r9 + (8 * 18)]
-
- fldcw word [r9 + (8 * 21)]
-
- mov r9, [r9 + (8 * 12)]
-
- retfq
-
-;; gets the current stack frame.
-rt_get_current_context:
- push rax
-
- call _hal_leak_current_context
-
- mov rax, r9
- pop rax
-
- mov r9, rax
-
- retfq
-
-_hal_spin_core:
- jmp $
- ret
diff --git a/dev/Kernel/HALKit/AMD64/HalScheduler.cxx b/dev/Kernel/HALKit/AMD64/HalScheduler.cxx
deleted file mode 100644
index d3094c4b..00000000
--- a/dev/Kernel/HALKit/AMD64/HalScheduler.cxx
+++ /dev/null
@@ -1,30 +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/AMD64/HalTimer.cxx b/dev/Kernel/HALKit/AMD64/HalTimer.cxx
deleted file mode 100644
index ff65a4a1..00000000
--- a/dev/Kernel/HALKit/AMD64/HalTimer.cxx
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: HalTimer.cxx
- Purpose: HAL timer
-
- Revision History:
-
- 07/07/24: Added file (amlel)
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx> \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AMD64/HalUtils.asm b/dev/Kernel/HALKit/AMD64/HalUtils.asm
deleted file mode 100644
index 5b4da821..00000000
--- a/dev/Kernel/HALKit/AMD64/HalUtils.asm
+++ /dev/null
@@ -1,33 +0,0 @@
-;; /*
-;; * ========================================================
-;; *
-;; * Kernel
-;; * Copyright ZKA Technologies., all rights reserved.
-;; *
-;; * ========================================================
-;; */
-
-[bits 64]
-
-[global rt_install_tib]
-
-section .text
-
-;; changed: rs, fs
-;; expected: rcx, rdx
-
-rt_install_tib:
- mov rcx, gs ;; TIB -> Thread Information Block
- mov rdx, fs ;; PIB -> Process Information Block
- ret
-
-;; //////////////////////////////////////////////////// ;;
-
-[extern cBspDone]
-[extern kApicMadtAddressesCount]
-[extern hal_ap_startup]
-[global hal_ap_trampoline]
-
-hal_ap_trampoline:
-hal_ap_trampoline_1:
- jmp hal_ap_startup
diff --git a/dev/Kernel/HALKit/AMD64/Hypervisor.hxx b/dev/Kernel/HALKit/AMD64/Hypervisor.hxx
deleted file mode 100644
index 7871288f..00000000
--- a/dev/Kernel/HALKit/AMD64/Hypervisor.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- MAKE_STRING_ENUM(HYPERVISOR)
- ENUM_STRING(Qemu, "TCGTCGTCGTCG");
- ENUM_STRING(KVM, " KVMKVMKVM ");
- ENUM_STRING(VMWare, "VMwareVMware");
- ENUM_STRING(VirtualBox, "VBoxVBoxVBox");
- ENUM_STRING(Xen, "XenVMMXenVMM");
- ENUM_STRING(Microsoft, "Microsoft Hv");
- ENUM_STRING(Parallels, " prl hyperv ");
- ENUM_STRING(ParallelsAlt, " lrpepyh vr ");
- ENUM_STRING(Bhyve, "bhyve bhyve ");
- ENUM_STRING(Qnx, " QNXQVMBSQG ");
- END_STRING_ENUM()
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/MBCI/.gitkeep b/dev/Kernel/HALKit/AMD64/MBCI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/AMD64/MBCI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/AMD64/PCI/Database.cxx b/dev/Kernel/HALKit/AMD64/PCI/Database.cxx
deleted file mode 100644
index 971d43f9..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/Database.cxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/PCI/Database.hxx>
-
-namespace Kernel
-{
-}
diff --git a/dev/Kernel/HALKit/AMD64/PCI/Device.cxx b/dev/Kernel/HALKit/AMD64/PCI/Device.cxx
deleted file mode 100644
index 214a640a..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/Device.cxx
+++ /dev/null
@@ -1,130 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/PCI/Device.hxx>
-
-Kernel::UInt NewOSPCIReadRaw(Kernel::UInt bar, Kernel::UShort bus, Kernel::UShort dev, Kernel::UShort fun)
-{
- Kernel::UInt target = 0x80000000 | ((Kernel::UInt)bus << 16) |
- ((Kernel::UInt)dev << 11) | ((Kernel::UInt)fun << 8) |
- (bar & 0xFC);
-
- Kernel::HAL::Out32((Kernel::UShort)Kernel::PCI::PciConfigKind::ConfigAddress,
- target);
-
- return Kernel::HAL::In32((Kernel::UShort)Kernel::PCI::PciConfigKind::ConfigData);
-}
-
-void NewOSPCISetCfgTarget(Kernel::UInt bar, Kernel::UShort bus, Kernel::UShort dev, Kernel::UShort fun)
-{
- Kernel::UInt target = 0x80000000 | ((Kernel::UInt)bus << 16) |
- ((Kernel::UInt)dev << 11) | ((Kernel::UInt)fun << 8) |
- (bar & ~3);
-
- Kernel::HAL::Out32((Kernel::UShort)Kernel::PCI::PciConfigKind::ConfigAddress,
- target);
-}
-
-namespace Kernel::PCI
-{
- Device::Device(UShort bus, UShort device, UShort func, UShort bar)
- : fBus(bus), fDevice(device), fFunction(func), fBar(bar)
- {
- }
-
- Device::~Device()
- {
- }
-
- UInt Device::Read(UInt bar, Size sz)
- {
- NewOSPCISetCfgTarget(bar, fBus, fDevice, fFunction);
-
- if (sz == 4)
- return HAL::In32((UShort)PciConfigKind::ConfigData + (fBar & 3));
- if (sz == 2)
- return HAL::In16((UShort)PciConfigKind::ConfigData + (fBar & 3));
- if (sz == 1)
- return HAL::In8((UShort)PciConfigKind::ConfigData + (fBar & 3));
-
- return 0xFFFF;
- }
-
- void Device::Write(UInt bar, UIntPtr data, Size sz)
- {
- NewOSPCISetCfgTarget(bar, fBus, fDevice, fFunction);
-
- if (sz == 4)
- HAL::Out32((UShort)PciConfigKind::ConfigData + (fBar & 3), (UInt)data);
- if (sz == 2)
- HAL::Out16((UShort)PciConfigKind::ConfigData + (fBar & 3), (UShort)data);
- if (sz == 1)
- HAL::Out8((UShort)PciConfigKind::ConfigData + (fBar & 3), (UChar)data);
- }
-
- UShort Device::DeviceId()
- {
- return (UShort)(NewOSPCIReadRaw(0x0 >> 16, fBus, fDevice, fFunction));
- }
-
- UShort Device::VendorId()
- {
- return (UShort)(NewOSPCIReadRaw(0x0, fBus, fDevice, fFunction) >> 16);
- }
-
- UShort Device::InterfaceId()
- {
- return (UShort)(NewOSPCIReadRaw(0x0, fBus, fDevice, fFunction) >> 16);
- }
-
- UChar Device::Class()
- {
- return (UChar)(NewOSPCIReadRaw(0x08, fBus, fDevice, fFunction) >> 24);
- }
-
- UChar Device::Subclass()
- {
- return (UChar)(NewOSPCIReadRaw(0x08, fBus, fDevice, fFunction) >> 16);
- }
-
- UChar Device::ProgIf()
- {
- return (UChar)(NewOSPCIReadRaw(0x08, fBus, fDevice, fFunction) >> 8);
- }
-
- UChar Device::HeaderType()
- {
- return (UChar)(NewOSPCIReadRaw(0xC, fBus, fDevice, fFunction) >> 16);
- }
-
- void Device::EnableMmio()
- {
- bool enable = Read(0x04, sizeof(UChar)) | (1 << 1);
- Write(0x04, enable, sizeof(UShort));
- }
-
- void Device::BecomeBusMaster()
- {
- bool enable = Read(0x04, sizeof(UShort)) | (1 << 2);
- Write(0x04, enable, sizeof(UShort));
- }
-
- UShort Device::Vendor()
- {
- UShort vendor = VendorId();
-
- if (vendor != (UShort)PciConfigKind::Invalid)
- fDevice = (UShort)Read(0x0, sizeof(UShort));
-
- return fDevice;
- }
-
- Device::operator bool()
- {
- return VendorId() != (UShort)PciConfigKind::Invalid;
- }
-} // namespace Kernel::PCI
diff --git a/dev/Kernel/HALKit/AMD64/PCI/Dma.cxx b/dev/Kernel/HALKit/AMD64/PCI/Dma.cxx
deleted file mode 100644
index bf1730d8..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/Dma.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/PCI/Dma.hxx>
-
-namespace Kernel
-{
- DMAWrapper::operator bool()
- {
- return fAddress;
- }
-
- bool DMAWrapper::operator!()
- {
- return !fAddress;
- }
-
- Boolean DMAWrapper::Check(UIntPtr offset) const
- {
- if (!fAddress)
- return false;
- if (offset == 0)
- return true;
-
- kcout << "[DMAWrapper::IsIn] Checking offset..\n";
- return reinterpret_cast<UIntPtr>(fAddress) >= offset;
- }
-
- bool DMAWrapper::Write(const UIntPtr& bit, const UIntPtr& offset)
- {
- if (!fAddress)
- return false;
-
- kcout << "[DMAWrapper::Write] Writing at address..\n";
-
- auto addr =
- (volatile UIntPtr*)(reinterpret_cast<UIntPtr>(fAddress) + offset);
- *addr = bit;
-
- return true;
- }
-
- UIntPtr DMAWrapper::Read(const UIntPtr& offset)
- {
- kcout << "[DMAWrapper::Read] checking fAddress..\n";
- if (!fAddress)
- return 0;
-
- kcout << "[DMAWrapper::Read] Reading fAddress..\n";
- return *(volatile UIntPtr*)(reinterpret_cast<UIntPtr>(fAddress) + offset);
- ;
- }
-
- UIntPtr DMAWrapper::operator[](const UIntPtr& offset)
- {
- return this->Read(offset);
- }
-
- OwnPtr<IOBuf<Char*>> DMAFactory::Construct(OwnPtr<DMAWrapper>& dma)
- {
- if (!dma)
- return {};
-
- OwnPtr<IOBuf<Char*>> dmaOwnPtr =
- make_ptr<IOBuf<Char*>, char*>(reinterpret_cast<char*>(dma->fAddress));
-
- if (!dmaOwnPtr)
- return {};
-
- kcout << "Returning the new OwnPtr<IOBuf<Char*>>!\r";
- return dmaOwnPtr;
- }
-
- DMAWrapper& DMAWrapper::operator=(voidPtr Ptr)
- {
- fAddress = Ptr;
- return *this;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/AMD64/PCI/Express.cxx b/dev/Kernel/HALKit/AMD64/PCI/Express.cxx
deleted file mode 100644
index 6a926827..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/Express.cxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/PCI/Express.hxx>
-
-namespace Kernel
-{
-}
diff --git a/dev/Kernel/HALKit/AMD64/PCI/IO.cxx b/dev/Kernel/HALKit/AMD64/PCI/IO.cxx
deleted file mode 100644
index ea91c7b7..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/IO.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/PCI/IO.hxx>
diff --git a/dev/Kernel/HALKit/AMD64/PCI/Iterator.cxx b/dev/Kernel/HALKit/AMD64/PCI/Iterator.cxx
deleted file mode 100644
index 47b16462..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/Iterator.cxx
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/PCI/Iterator.hxx>
-
-#define PCI_ITERATOR_FIND_AND_UNWRAP(DEV, SZ) \
- if (DEV.Leak().Leak()) \
- return *DEV.Leak().Leak();
-
-namespace Kernel::PCI
-{
- Iterator::Iterator(const Types::PciDeviceKind& type)
- {
- // probe devices.
- for (int bus = 0; bus < NEWOS_BUS_COUNT; ++bus)
- {
- for (int device = 0; device < NEWOS_DEVICE_COUNT; ++device)
- {
- for (int function = 0; function < NEWOS_FUNCTION_COUNT; ++function)
- {
- Device dev(bus, device, function, 0);
-
- if (dev.Class() == (UChar)type)
- {
- *fDevices[bus].Leak().Leak() = dev;
- }
- }
- }
- }
- }
-
- Iterator::~Iterator()
- {
- }
-
- Ref<PCI::Device> Iterator::operator[](const Size& sz)
- {
- PCI_ITERATOR_FIND_AND_UNWRAP(fDevices[sz], sz);
- return {};
- }
-} // namespace Kernel::PCI
diff --git a/dev/Kernel/HALKit/AMD64/PCI/PCI.cxx b/dev/Kernel/HALKit/AMD64/PCI/PCI.cxx
deleted file mode 100644
index 59e3b06e..00000000
--- a/dev/Kernel/HALKit/AMD64/PCI/PCI.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/PCI/PCI.hxx>
diff --git a/dev/Kernel/HALKit/AMD64/Processor.hxx b/dev/Kernel/HALKit/AMD64/Processor.hxx
deleted file mode 100644
index d80a2834..00000000
--- a/dev/Kernel/HALKit/AMD64/Processor.hxx
+++ /dev/null
@@ -1,348 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Prcoessor.hxx
- Purpose: AMD64 processor abstraction.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Utils.hxx>
-#include <FirmwareKit/Handover.hxx>
-#include <HALKit/AMD64/HalPageAlloc.hxx>
-
-EXTERN_C
-{
-#include <cpuid.h>
-}
-
-#ifdef kCPUBackendName
-#undef kCPUBackendName
-#endif // ifdef kCPUBackendName
-
-#define kCPUBackendName "AMD64"
-
-#define kSyscallRoute 0x32
-
-#define IsActiveLow(FLG) (FLG & 2)
-#define IsLevelTriggered(FLG) (FLG & 8)
-
-#define kInterruptGate (0x8E)
-#define kTrapGate (0xEF)
-#define kTaskGate (0b10001100)
-#define kGdtCodeSelector (0x08)
-#define kGdtUserCodeSelector (0x10)
-#define cHeapStartOffset (0x80000000)
-
-namespace Kernel
-{
- namespace Detail::AMD64
- {
- struct PACKED InterruptDescriptorAMD64 final
- {
- UInt16 OffsetLow; // offset bits 0..15
- UInt16 Selector; // a code segment selector in GDT or LDT
- UInt8
- Ist; // bits 0..2 holds Interrupt Stack Table offset, rest of bits zero.
- UInt8 TypeAttributes; // gate type, dpl, and p fields
- UInt16 OffsetMid; // offset bits 16..31
- UInt32 OffsetHigh; // offset bits 32..63
- UInt32 Zero; // reserved
- };
- } // namespace Detail::AMD64
-} // namespace Kernel
-
-namespace Kernel::HAL
-{
- /// @brief Virtual memory flags.
- enum
- {
- eFlagsUser,
- eFlagsRw,
- eFlagsExecDisable
- };
-
- /// @brief Map address to PDE.
- /// @param pde a valid page directory.
- /// @param phys_addr a valid phyiscal address.
- /// @param virt_addr a valid virtual address.
- /// @param flags the flags to put on the page.
- inline Int32 ke_map_address(PDE* pde, UIntPtr phys_addr, UIntPtr virt_addr, UInt32 flags)
- {
- UInt16 pml4_index = (virt_addr >> 39) & 0x1FF;
-
- if (pde && !pde->Pte[pml4_index].Present)
- {
- pde->Pte[pml4_index].Present = true;
-
- pde->Pte[pml4_index].PhysicalAddress = phys_addr;
- pde->Pte[pml4_index].Rw = flags & eFlagsRw;
- pde->Pte[pml4_index].User = flags & eFlagsUser;
- pde->Pte[pml4_index].ExecDisable = flags & eFlagsExecDisable;
-
- kcout << "PTE is present now.\r";
-
- return 0;
- }
- else
- {
- kcout << "PM is already present.\r";
-
- kcout << "PhysicalAddress: " << hex_number(pde->Pte[pml4_index].PhysicalAddress);
- kcout << "\r";
-
- kcout << "User: " << (pde->Pte[pml4_index].User ? "true" : "false") << "\r";
- kcout << "RW: " << (pde->Pte[pml4_index].Rw ? "true" : "false") << "\r";
-
- return 0;
- }
-
- return 1;
- }
-
- /// @brief Map address to PDE.
- /// @param pde
- /// @param phys_addr
- /// @param virt_addr
- /// @param flags
- inline Void ke_unmap_address(PDE* pde, UIntPtr phys_addr, UIntPtr virt_addr, UInt32 flags)
- {
- UInt16 pml4_index = (virt_addr >> 39) & 0x1FF;
-
- if (pde->Pte[pml4_index].Present)
- {
- pde->Pte[pml4_index].Present = false;
- pde->Pte[pml4_index].PhysicalAddress = 0;
- pde->Pte[pml4_index].Rw = 0;
- pde->Pte[pml4_index].User = 0;
- pde->Pte[pml4_index].ExecDisable = 0;
- }
- }
-
- EXTERN_C UChar In8(UInt16 port);
- EXTERN_C UShort In16(UInt16 port);
- EXTERN_C UInt In32(UInt16 port);
-
- EXTERN_C void Out16(UShort port, UShort byte);
- EXTERN_C void Out8(UShort port, UChar byte);
- EXTERN_C void Out32(UShort port, UInt byte);
-
- EXTERN_C void rt_wait_400ns();
- EXTERN_C void rt_halt();
- EXTERN_C void rt_cli();
- EXTERN_C void rt_sti();
- EXTERN_C void rt_cld();
- EXTERN_C void rt_std();
-
- struct PACKED Register64 final
- {
- UShort Limit;
- UIntPtr Base;
- };
-
- struct PACKED RegisterGDT final
- {
- UShort Limit;
- UIntPtr Base;
- };
-
- using RawRegister = UInt64;
-
- using InterruptId = UShort; /* For each element in the IVT */
- using InterruptTrapKind = UIntPtr(UIntPtr sp);
-
- typedef UIntPtr Reg;
-
- /// @brief Stack frame (as retrieved from assembly.)
- 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;
- Reg ControlWord;
- };
-
- typedef StackFrame* StackFramePtr;
-
- class InterruptDescriptor final
- {
- public:
- UShort Offset;
- UShort Selector;
- UChar Ist;
- UChar Atrributes;
-
- UShort SecondOffset;
- UInt ThirdOffset;
- UInt Zero;
-
- operator bool()
- {
- return Offset != 0xFFFF;
- }
- };
-
- using InterruptDescriptorArray = Array<InterruptDescriptor, 256>;
-
- class SegmentDescriptor final
- {
- public:
- UInt16 Base;
- UInt8 BaseMiddle;
- UInt8 BaseHigh;
-
- UShort Limit;
- UChar Gran;
- UChar AccessByte;
- };
-
- /***
- * @brief Segment Boolean operations
- */
- class SegmentDescriptorComparator final
- {
- public:
- Bool IsValid(SegmentDescriptor& seg)
- {
- return seg.Base > seg.Limit;
- }
-
- Bool Equals(SegmentDescriptor& seg, SegmentDescriptor& segRight)
- {
- return seg.Base == segRight.Base && seg.Limit == segRight.Limit;
- }
- };
-
- using SegmentArray = Array<SegmentDescriptor, 6>;
-
- class GDTLoader final
- {
- public:
- static Void Load(RegisterGDT& gdt);
- static Void Load(Ref<RegisterGDT>& gdt);
- };
-
- class IDTLoader final
- {
- public:
- static Void Load(Register64& idt);
- static Void Load(Ref<Register64>& idt);
- };
-
- Void hal_system_get_cores(VoidPtr rsdPtr);
- Void hal_send_start_ipi(UInt32 apicId, UInt8 vector, UInt32 targetAddress);
- Void hal_send_end_ipi(UInt32 apicId, UInt8 vector, UInt32 targetAddress);
-
- /// @brief Do a cpuid to check if MSR exists on CPU.
- /// @retval true it does exists.
- /// @retval false it doesn't.
- inline Bool hal_has_msr() noexcept
- {
- static UInt32 eax, unused, edx; // eax, edx
-
- __get_cpuid(1, &eax, &unused, &unused, &edx);
-
- // edx returns the flag for MSR (which is 1 shifted to 5.)
- return edx & (1 << 5);
- }
-
- /// @brief Get Model-specific register.
- /// @param msr MSR
- /// @param lo low byte
- /// @param hi high byte
- inline Void hal_get_msr(UInt32 msr, UInt32* lo, UInt32* hi) noexcept
- {
- if (!lo || !hi)
- return;
-
- asm volatile("rdmsr"
- : "=a"(*lo), "=d"(*hi)
- : "c"(msr));
- }
-
- /// @brief Set Model-specific register.
- /// @param msr MSR
- /// @param lo low byte
- /// @param hi high byte
- inline Void hal_set_msr(UInt32 msr, UInt32 lo, UInt32 hi) noexcept
- {
- asm volatile("wrmsr"
- :
- : "a"(lo), "d"(hi), "c"(msr));
- }
-
- /// @brief Processor specific namespace.
- namespace Detail
- {
- /**
- @brief Global descriptor table entry, either null, code or data.
- */
-
- struct PACKED NewOSGDTRecord final
- {
- UInt16 Limit0;
- UInt16 Base0;
- UInt8 Base1;
- UInt8 AccessByte;
- UInt8 Limit1_Flags;
- UInt8 Base2;
- };
-
- struct PACKED ALIGN(0x1000) NewOSGDT final
- {
- NewOSGDTRecord Null;
- NewOSGDTRecord KernCode;
- NewOSGDTRecord KernData;
- NewOSGDTRecord UserNull;
- NewOSGDTRecord UserCode;
- NewOSGDTRecord UserData;
- };
- } // namespace Detail
-
- class APICController
- {
- public:
- explicit APICController(VoidPtr base)
- : fApic(base)
- {
- }
-
- ~APICController() = default;
-
- NEWOS_COPY_DEFAULT(APICController);
-
- public:
- UInt32 Read(UInt32 reg) noexcept;
- Void Write(UInt32 reg, UInt32 value) noexcept;
-
- private:
- VoidPtr fApic{nullptr};
- };
-} // namespace Kernel::HAL
-
-EXTERN_C Kernel::Void idt_handle_generic(Kernel::UIntPtr rsp);
-EXTERN_C Kernel::Void idt_handle_gpf(Kernel::UIntPtr rsp);
-EXTERN_C Kernel::Void idt_handle_math(Kernel::UIntPtr rsp);
-EXTERN_C Kernel::Void idt_handle_pf(Kernel::UIntPtr rsp);
-
-EXTERN_C Kernel::Void hal_load_idt(Kernel::HAL::Register64 ptr);
-EXTERN_C Kernel::Void hal_load_gdt(Kernel::HAL::RegisterGDT ptr);
-
-/// @brief Maximum size of the IDT.
-#define kKernelIdtSize 0x100
-#define kKernelInterruptId 0x32
-
-inline Kernel::VoidPtr kKernelVMTStart = (Kernel::VoidPtr)cHeapStartOffset;
-inline Kernel::VoidPtr kKernelVirtualStart = nullptr;
-inline Kernel::UIntPtr kKernelVirtualSize = 0UL;
-
-inline Kernel::VoidPtr kKernelPhysicalStart = nullptr;
diff --git a/dev/Kernel/HALKit/AMD64/ReadMe.md b/dev/Kernel/HALKit/AMD64/ReadMe.md
deleted file mode 100644
index 0be48c77..00000000
--- a/dev/Kernel/HALKit/AMD64/ReadMe.md
+++ /dev/null
@@ -1,4 +0,0 @@
-AMD64 Hardware Abstraction Layer
-
-- Supported CPU: AMD64 CPU
-- Supported Firmware: EDK 2 \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cxx b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cxx
deleted file mode 100644
index 0974c240..00000000
--- a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cxx
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/**
- * @file AHCI.cxx
- * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com)
- * @brief AHCI driver.
- * @version 0.1
- * @date 2024-02-02
- *
- * @copyright Copyright (c) ZKA Technologies
- *
- */
-
-#include <Modules/AHCI/AHCI.hxx>
-#include <KernelKit/PCI/Iterator.hxx>
-
-#ifdef __AHCI__
-enum
-{
- kSATAProgIfAHCI = 0x01,
- kSATASubClass = 0x06
-};
-
-static Kernel::PCI::Device kAhciDevice;
-
-/// @brief Initializes an AHCI disk.
-/// @param PortsImplemented the amount of port that have been detected.
-/// @return
-Kernel::Boolean drv_std_init(Kernel::UInt16& PortsImplemented)
-{
- using namespace Kernel;
-
- PCI::Iterator iterator(Types::PciDeviceKind::MassStorageController);
- for (SizeT devIndex = 0; devIndex < NEWOS_BUS_COUNT; ++devIndex)
- {
- if (iterator[devIndex].Leak().Subclass() == kSATASubClass &&
- iterator[devIndex].Leak().ProgIf() == kSATAProgIfAHCI)
- {
- iterator[devIndex].Leak().EnableMmio(); /// enable the memory i/o for this ahci device.
- kAhciDevice = iterator[devIndex].Leak(); /// and then leak the reference.
-
- kcout << "newoskrnl: [PCI] Found AHCI controller.\r";
-
- return true;
- }
- }
-
- return false;
-}
-
-Kernel::Boolean drv_std_detected(Kernel::Void)
-{
- return kAhciDevice.DeviceId() != 0xFFFF;
-}
-
-Kernel::Void drv_std_read(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT SectorSz, Kernel::SizeT Size)
-{
-}
-
-Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT SectorSz, Kernel::SizeT Size)
-{
-}
-#endif // __AHCI__
diff --git a/dev/Kernel/HALKit/AMD64/Storage/ATA-DMA.cxx b/dev/Kernel/HALKit/AMD64/Storage/ATA-DMA.cxx
deleted file mode 100644
index 49d10a7e..00000000
--- a/dev/Kernel/HALKit/AMD64/Storage/ATA-DMA.cxx
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/**
- * @file ATA-DMA.cxx
- * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com)
- * @brief ATA driver (DMA mode).
- * @version 0.1
- * @date 2024-02-02
- *
- * @copyright Copyright (c) ZKA Technologies
- *
- */
-
-#include <StorageKit/PRDT.hxx>
-
-#include <Modules/ATA/ATA.hxx>
-#include <ArchKit/ArchKit.hxx>
-
-using namespace Kernel;
-
-EXTERN_C Int32 kPRDTTransferStatus;
-STATIC PRDT kPRDT;
-
-#ifdef __ATA_DMA__
-
-#ifdef __ATA_PIO__
-#error !!! You cant have both PIO and DMA enabled! !!!
-#endif /* ifdef __ATA_PIO__ */
-
-#ifdef __AHCI__
-#error !!! You cant have both ATA and AHCI enabled! !!!
-#endif /* ifdef __AHCI__ */
-
-#endif /* ifdef __ATA_DMA__ */
diff --git a/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cxx b/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cxx
deleted file mode 100644
index c1cdd013..00000000
--- a/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cxx
+++ /dev/null
@@ -1,199 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/**
- * @file ATA-PIO.cxx
- * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com)
- * @brief ATA driver (PIO mode).
- * @version 0.1
- * @date 2024-02-02
- *
- * @copyright Copyright (c) ZKA Technologies
- *
- */
-
-#include <Modules/ATA/ATA.hxx>
-#include <ArchKit/ArchKit.hxx>
-
-#ifdef __ATA_PIO__
-
-using namespace Kernel;
-using namespace Kernel::HAL;
-
-/// bugs: 0
-
-#define kATADataLen 256
-
-static Boolean kATADetected = false;
-static Int32 kATADeviceType = kATADeviceCount;
-static Char kATAData[kATADataLen] = {0};
-
-Boolean drv_std_wait_io(UInt16 IO)
-{
- for (int i = 0; i < 4; i++)
- In8(IO + ATA_REG_STATUS);
-
-ATAWaitForIO_Retry:
- auto statRdy = In8(IO + ATA_REG_STATUS);
-
- if ((statRdy & ATA_SR_BSY))
- goto ATAWaitForIO_Retry;
-
-ATAWaitForIO_Retry2:
- statRdy = In8(IO + ATA_REG_STATUS);
-
- if (statRdy & ATA_SR_ERR)
- return false;
-
- if (!(statRdy & ATA_SR_DRDY))
- goto ATAWaitForIO_Retry2;
-
- return true;
-}
-
-Void drv_std_select(UInt16 Bus)
-{
- if (Bus == ATA_PRIMARY_IO)
- Out8(Bus + ATA_REG_HDDEVSEL, ATA_PRIMARY_SEL);
- else
- Out8(Bus + ATA_REG_HDDEVSEL, ATA_SECONDARY_SEL);
-}
-
-Boolean drv_std_init(UInt16 Bus, UInt8 Drive, UInt16& OutBus, UInt8& OutMaster)
-{
- UInt16 IO = Bus;
-
- drv_std_select(IO);
-
- Kernel::kcout << "newoskrnl: Initializing drive...\r";
-
-ATAInit_Retry:
- // Bus init, NEIN bit.
- Out8(IO + ATA_REG_NEIN, 1);
-
- // identify until it's good
-
- auto statRdy = In8(IO + ATA_REG_STATUS);
-
- if (statRdy & ATA_SR_ERR)
- {
- Kernel::kcout << "newoskrnl: Failing drive...\r";
-
- return false;
- }
-
- if ((statRdy & ATA_SR_BSY))
- {
- kcout << "Retrying...";
- goto ATAInit_Retry;
- }
-
- Out8(IO + ATA_REG_COMMAND, ATA_CMD_IDENTIFY);
-
- /// fetch serial info
- /// model, speed, number of sectors...
-
- drv_std_wait_io(IO);
-
- for (SizeT indexData = 0ul; indexData < kATADataLen; ++indexData)
- {
- kATAData[indexData] = In16(IO + ATA_REG_DATA);
- }
-
- OutBus = (Bus == ATA_PRIMARY_IO) ? ATA_PRIMARY_IO : ATA_SECONDARY_IO;
-
- OutMaster = (Bus == ATA_PRIMARY_IO) ? ATA_MASTER : ATA_SLAVE;
-
- Kernel::kcout << "newoskrnl: Create ATA module.\r";
-
- return true;
-}
-
-Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorSz, SizeT Size)
-{
- UInt8 Command = ((!Master) ? 0xE0 : 0xF0);
-
- Lba /= SectorSz;
-
- drv_std_wait_io(IO);
- drv_std_select(IO);
-
- Out8(IO + ATA_REG_HDDEVSEL, (Command) | (((Lba) >> 24) & 0x0F));
-
- /// Compute sector count.
- Out8(IO + ATA_REG_SEC_COUNT0, SectorSz / (SectorSz / 2));
-
- Out8(IO + ATA_REG_LBA0, (Lba));
- Out8(IO + ATA_REG_LBA1, (Lba) >> 8);
- Out8(IO + ATA_REG_LBA2, (Lba) >> 16);
-
- Out8(IO + ATA_REG_COMMAND, ATA_CMD_READ_PIO);
-
- drv_std_wait_io(IO);
-
- for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff)
- {
- drv_std_wait_io(IO);
- Buf[IndexOff] = In16(IO + ATA_REG_DATA);
- drv_std_wait_io(IO);
- }
-
- drv_std_wait_io(IO);
-}
-
-Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorSz, SizeT Size)
-{
- UInt8 Command = ((!Master) ? 0xE0 : 0xF0);
-
- Lba /= SectorSz;
-
- drv_std_wait_io(IO);
- drv_std_select(IO);
-
- /// Compute sector count.
- Out8(IO + ATA_REG_HDDEVSEL, (Command) | (((Lba) >> 24) & 0x0F));
-
- Out8(IO + ATA_REG_SEC_COUNT0, SectorSz / (SectorSz / 2));
-
- Out8(IO + ATA_REG_LBA0, (Lba));
- Out8(IO + ATA_REG_LBA1, (Lba) >> 8);
- Out8(IO + ATA_REG_LBA2, (Lba) >> 16);
-
- Out8(IO + ATA_REG_COMMAND, ATA_CMD_WRITE_PIO);
-
- drv_std_wait_io(IO);
-
- for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff)
- {
- drv_std_wait_io(IO);
- Out16(IO + ATA_REG_DATA, Buf[IndexOff]);
- drv_std_wait_io(IO);
- }
-
- drv_std_wait_io(IO);
-}
-
-/// @brief is ATA detected?
-Boolean drv_std_detected(Void)
-{
- return kATADetected;
-}
-
-/***
- @brief Getter, gets the number of sectors inside the drive.
-*/
-Kernel::SizeT drv_std_get_sector_count()
-{
- return (kATAData[61] << 16) | kATAData[60];
-}
-
-/// @brief Get the drive size.
-Kernel::SizeT drv_std_get_drv_size()
-{
- return drv_std_get_sector_count() * kATASectorSize;
-}
-
-#endif /* ifdef __ATA_PIO__ */
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)
diff --git a/dev/Kernel/HALKit/AXP/CR.s b/dev/Kernel/HALKit/AXP/CR.s
deleted file mode 100644
index 4d68257d..00000000
--- a/dev/Kernel/HALKit/AXP/CR.s
+++ /dev/null
@@ -1,11 +0,0 @@
-.globl read_lr1
-.globl read_lr0
-
-.section .text
- read_lr0:
- movq %r30, %cr3
- ret
-
- hal_read_cr0:
- movq %r30, %cr0
- ret \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AXP/CoreInterruptHandlerDEC.cpp b/dev/Kernel/HALKit/AXP/CoreInterruptHandlerDEC.cpp
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/AXP/CoreInterruptHandlerDEC.cpp
+++ /dev/null
diff --git a/dev/Kernel/HALKit/AXP/CoreSyscallHandlerDEC.cpp b/dev/Kernel/HALKit/AXP/CoreSyscallHandlerDEC.cpp
deleted file mode 100644
index 9d20a0f3..00000000
--- a/dev/Kernel/HALKit/AXP/CoreSyscallHandlerDEC.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <HALKit/AXP/Processor.hxx>
-
-/// @brief Internal call for syscall, to work with C++.
-/// @param stack
-/// @return nothing.
-EXTERN_C void rt_syscall_handle(Kernel::HAL::StackFrame* stack)
-{
- if (stack->Rcx <= (kSyscalls.Count() - 1))
- {
- Kernel::kcout << "newoskrnl: syscall: enter.\r";
-
- if (kSyscalls[stack->Rcx].Leak().Leak().fHooked)
- (kSyscalls[stack->Rcx].Leak().Leak().fProc)(stack);
-
- Kernel::kcout << "newoskrnl: syscall: exit.\r";
- }
-}
diff --git a/dev/Kernel/HALKit/AXP/HAL.s b/dev/Kernel/HALKit/AXP/HAL.s
deleted file mode 100644
index 0178527f..00000000
--- a/dev/Kernel/HALKit/AXP/HAL.s
+++ /dev/null
@@ -1,13 +0,0 @@
-.globl rt_wait_400ns
-
-.section .text
-rt_wait_400ns:
- jmp .L
-.L:
- jmp .L2
- wtint ;; wait for interrupt
-.L2:
-
- ret
-
-
diff --git a/dev/Kernel/HALKit/AXP/Processor.hpp b/dev/Kernel/HALKit/AXP/Processor.hpp
deleted file mode 100644
index 25a434a0..00000000
--- a/dev/Kernel/HALKit/AXP/Processor.hpp
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AXP/README b/dev/Kernel/HALKit/AXP/README
deleted file mode 100644
index 91e7b134..00000000
--- a/dev/Kernel/HALKit/AXP/README
+++ /dev/null
@@ -1 +0,0 @@
-This is for DEC Alpha.
diff --git a/dev/Kernel/HALKit/AXP/README.TXT b/dev/Kernel/HALKit/AXP/README.TXT
deleted file mode 100644
index d4ef257d..00000000
--- a/dev/Kernel/HALKit/AXP/README.TXT
+++ /dev/null
@@ -1 +0,0 @@
-An toy HAL to test the kernel portability.
diff --git a/dev/Kernel/HALKit/AXP/SYSCALL.s b/dev/Kernel/HALKit/AXP/SYSCALL.s
deleted file mode 100644
index 19cab808..00000000
--- a/dev/Kernel/HALKit/AXP/SYSCALL.s
+++ /dev/null
@@ -1,10 +0,0 @@
-.section .text
-system_handle_user_call:
- .cfi_startproc
-
- push %r0
- jmp %r1
- mov %r30, %r2
-
- .cfi_endproc
- retsys \ No newline at end of file
diff --git a/dev/Kernel/HALKit/AXP/VM.s b/dev/Kernel/HALKit/AXP/VM.s
deleted file mode 100644
index 7024086b..00000000
--- a/dev/Kernel/HALKit/AXP/VM.s
+++ /dev/null
@@ -1,5 +0,0 @@
-.global hal_flush_tlb
-
-.section .text
-hal_flush_tlb:
- swppal \ No newline at end of file
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/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/HalContextSwitchPowerPC.s b/dev/Kernel/HALKit/POWER/HalContextSwitchPowerPC.s
deleted file mode 100644
index fc47ba49..00000000
--- a/dev/Kernel/HALKit/POWER/HalContextSwitchPowerPC.s
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-.align 4
-.type name, @function
-.text
-.globl rt_do_context_switch
-
-/* r3 (3) = assigner stack, r4 (4) = assignee stack */
-rt_do_context_switch:
- lwz 0(%4), 0(%3)
- lwz 4(%4), 4(%3)
- lwz 8(%4), 8(%3)
- lwz 12(%4), 12(%3)
- lwz 14(%4), 14(%3)
- lwz 18(%4), 18(%3)
- lwz 22(%4), 22(%3)
- lwz 24(%4), 24(%3)
- lwz 28(%4), 28(%3)
- lwz 32(%4), 32(%3)
- lwz 34(%4), 34(%3)
- lwz 38(%4), 38(%3)
-
- /* we are done here, the assignee should start executing code now. */
- blr
diff --git a/dev/Kernel/HALKit/POWER/HalHardware.cxx b/dev/Kernel/HALKit/POWER/HalHardware.cxx
deleted file mode 100644
index 9fb841c8..00000000
--- a/dev/Kernel/HALKit/POWER/HalHardware.cxx
+++ /dev/null
@@ -1,19 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-namespace Kernel
-{
- namespace HAL
- {
- UIntPtr hal_alloc_page(bool rw, bool user)
- {
- return 0;
- }
- } // namespace HAL
-} // namespace Kernel
diff --git a/dev/Kernel/HALKit/POWER/HalHart.cxx b/dev/Kernel/HALKit/POWER/HalHart.cxx
deleted file mode 100644
index 8327b8e0..00000000
--- a/dev/Kernel/HALKit/POWER/HalHart.cxx
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <HALKit/POWER/Hart.hxx>
-
-using namespace Kernel;
-
-/// @brief wakes up thread.
-/// wakes up thread from hang.
-void mp_wakeup_thread(HAL::StackFramePtr stack)
-{
- NEWOS_UNUSED(stack);
-}
-
-/// @brief makes thread sleep.
-/// hooks and hangs thread to prevent code from executing.
-void mp_hang_thread(HAL::StackFramePtr stack)
-{
- NEWOS_UNUSED(stack);
-}
diff --git a/dev/Kernel/HALKit/POWER/HalSerialPort.cxx b/dev/Kernel/HALKit/POWER/HalSerialPort.cxx
deleted file mode 100644
index c8d49c0c..00000000
--- a/dev/Kernel/HALKit/POWER/HalSerialPort.cxx
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-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, 255);
-
- while (index < len)
- {
- // TODO
- ++index;
- }
-}
diff --git a/dev/Kernel/HALKit/POWER/HalStartSequence.s b/dev/Kernel/HALKit/POWER/HalStartSequence.s
deleted file mode 100644
index 68110f8d..00000000
--- a/dev/Kernel/HALKit/POWER/HalStartSequence.s
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-.globl __ImageStart
-.extern hal_init_platform
-.align 4
-.text
-
-__ImageStart:
- bl hal_init_platform
- blr
diff --git a/dev/Kernel/HALKit/POWER/HalThread.cxx b/dev/Kernel/HALKit/POWER/HalThread.cxx
deleted file mode 100644
index 3e2f1703..00000000
--- a/dev/Kernel/HALKit/POWER/HalThread.cxx
+++ /dev/null
@@ -1,8 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
diff --git a/dev/Kernel/HALKit/POWER/HalVirtualMemory.cxx b/dev/Kernel/HALKit/POWER/HalVirtualMemory.cxx
deleted file mode 100644
index 589c2cda..00000000
--- a/dev/Kernel/HALKit/POWER/HalVirtualMemory.cxx
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/ppc-cpu.h>
-#include <HALKit/POWER/ppc-mmu.h>
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-/// @note refer to the SoC documentation.
-
-using namespace Kernel;
-
-Void hal_write_tlb(UInt32 mas0, UInt32 mas1, UInt32 mas2, UInt32 mas3, UInt32 mas7)
-{
- mtspr(MAS0, mas0);
- mtspr(MAS1, mas1);
- mtspr(MAS2, mas2);
- mtspr(MAS3, mas3);
- mtspr(MAS7, mas7);
-
- hal_flush_tlb();
-}
-
-Bool hal_set_tlb(UInt8 tlb, UInt32 epn, UInt64 rpn, UInt8 perms, UInt8 wimge, UInt8 ts, UInt8 esel, UInt8 tsize, UInt8 iprot)
-{
- if ((mfspr(SPRN_MMUCFG) & MMUCFG_MAVN) == MMUCFG_MAVN_V1 && (tsize & 1))
- {
- // this mmu-version 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/Hart.hxx b/dev/Kernel/HALKit/POWER/Hart.hxx
deleted file mode 100644
index 02020320..00000000
--- a/dev/Kernel/HALKit/POWER/Hart.hxx
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Hart.hxx
- Purpose: POWER hardware threads.
-
- Revision History:
-
- 14/04/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-struct HAL_HARDWARE_THREAD;
-
-/// @brief hardware thread indentification type.
-typedef Kernel::Int32 PPCHartType;
-
-/// @brief Hardware thread information structure.
-typedef struct HAL_HARDWARE_THREAD
-{
- Kernel::UIntPtr fStartAddress;
- Kernel::UInt8 fPrivleged : 1;
- Kernel::UInt32 fPageFlags;
- PPCHartType 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);
diff --git a/dev/Kernel/HALKit/POWER/MBCI/.gitkeep b/dev/Kernel/HALKit/POWER/MBCI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/POWER/MBCI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/POWER/MBCI/HalMBCIHost.cxx b/dev/Kernel/HALKit/POWER/MBCI/HalMBCIHost.cxx
deleted file mode 100644
index 3e2f1703..00000000
--- a/dev/Kernel/HALKit/POWER/MBCI/HalMBCIHost.cxx
+++ /dev/null
@@ -1,8 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.hxx>
-#include <KernelKit/DebugOutput.hxx>
diff --git a/dev/Kernel/HALKit/POWER/Processor.hxx b/dev/Kernel/HALKit/POWER/Processor.hxx
deleted file mode 100644
index 4b03af4b..00000000
--- a/dev/Kernel/HALKit/POWER/Processor.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- Purpose: POWER processor header.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/Utils.hxx>
-
-#define NoOp() 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 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;
-
- 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();
diff --git a/dev/Kernel/HALKit/POWER/ReadMe.md b/dev/Kernel/HALKit/POWER/ReadMe.md
deleted file mode 100644
index a9751581..00000000
--- a/dev/Kernel/HALKit/POWER/ReadMe.md
+++ /dev/null
@@ -1,4 +0,0 @@
-POWER Hardware Abstraction Layer
-
-- Supported CPU: POWER
-- Supported Firmware: CoreBoot \ No newline at end of file
diff --git a/dev/Kernel/HALKit/POWER/ppc-cpu.h b/dev/Kernel/HALKit/POWER/ppc-cpu.h
deleted file mode 100644
index 46979e5f..00000000
--- a/dev/Kernel/HALKit/POWER/ppc-cpu.h
+++ /dev/null
@@ -1,1424 +0,0 @@
-#ifndef __ASM_PPC_PROCESSOR_H
-#define __ASM_PPC_PROCESSOR_H
-
-/// ! @note The Zeta cpu is based on the e500 with 64-bit extensions, much like the 970.
-
-/*
- * Default implementation of macro that returns current
- * instruction pointer ("program counter").
- */
-#define current_text_addr() ({ __label__ _l; _l: &&_l; })
-
-#define AAA_HACK_DISABLE
-#ifdef AAA_HACK_DISABLE
-/* warning this is just to make the compiler shut up.. It does not
- match the definition in ptrace.h. So dont use this code. */
-struct pt_regs
-{
- unsigned long nip;
-};
-
-#else
-#include <asm/ptrace.h>
-#include <asm/types.h>
-#endif
-
-/* Machine State Register (MSR) Fields */
-
-#ifdef CONFIG_PPC64BRIDGE
-#define MSR_SF (1 << 63)
-#define MSR_ISF (1 << 61)
-#endif /* CONFIG_PPC64BRIDGE */
-#define MSR_UCLE (1 << 26) /* User-mode cache lock enable (e500) */
-#define MSR_VEC (1 << 25) /* Enable AltiVec(74xx) */
-#define MSR_SPE (1 << 25) /* Enable SPE(e500) */
-#define MSR_POW (1 << 18) /* Enable Power Management */
-#define MSR_WE (1 << 18) /* Wait State Enable */
-#define MSR_TGPR (1 << 17) /* TLB Update registers in use */
-#define MSR_CE (1 << 17) /* Critical Interrupt Enable */
-#define MSR_ILE (1 << 16) /* Interrupt Little Endian */
-#define MSR_EE (1 << 15) /* External Interrupt Enable */
-#define MSR_PR (1 << 14) /* Problem State / Privilege Level */
-#define MSR_FP (1 << 13) /* Floating Point enable */
-#define MSR_ME (1 << 12) /* Machine Check Enable */
-#define MSR_FE0 (1 << 11) /* Floating Exception mode 0 */
-#define MSR_SE (1 << 10) /* Single Step */
-#define MSR_DWE (1 << 10) /* Debug Wait Enable (4xx) */
-#define MSR_UBLE (1 << 10) /* BTB lock enable (e500) */
-#define MSR_BE (1 << 9) /* Branch Trace */
-#define MSR_DE (1 << 9) /* Debug Exception Enable */
-#define MSR_FE1 (1 << 8) /* Floating Exception mode 1 */
-#define MSR_IP (1 << 6) /* Exception prefix 0x000/0xFFF */
-#define MSR_IR (1 << 5) /* Instruction Relocate */
-#define MSR_IS (1 << 5) /* Book E Instruction space */
-#define MSR_DR (1 << 4) /* Data Relocate */
-#define MSR_DS (1 << 4) /* Book E Data space */
-#define MSR_PE (1 << 3) /* Protection Enable */
-#define MSR_PX (1 << 2) /* Protection Exclusive Mode */
-#define MSR_PMM (1 << 2) /* Performance monitor mark bit (e500) */
-#define MSR_RI (1 << 1) /* Recoverable Exception */
-#define MSR_LE (1 << 0) /* Little Endian */
-
-#ifdef CONFIG_APUS_FAST_EXCEPT
-#define MSR_ MSR_ME | MSR_IP | MSR_RI
-#else
-#define MSR_ MSR_ME | MSR_RI
-#endif
-#ifndef CONFIG_E500
-#define MSR_KERNEL MSR_ | MSR_IR | MSR_DR
-#else
-#define MSR_KERNEL MSR_ME
-#endif
-
-/* Floating Point Status and Control Register (FPSCR) Fields */
-
-#define FPSCR_FX 0x80000000 /* FPU exception summary */
-#define FPSCR_FEX 0x40000000 /* FPU enabled exception summary */
-#define FPSCR_VX 0x20000000 /* Invalid operation summary */
-#define FPSCR_OX 0x10000000 /* Overflow exception summary */
-#define FPSCR_UX 0x08000000 /* Underflow exception summary */
-#define FPSCR_ZX 0x04000000 /* Zero-devide exception summary */
-#define FPSCR_XX 0x02000000 /* Inexact exception summary */
-#define FPSCR_VXSNAN 0x01000000 /* Invalid op for SNaN */
-#define FPSCR_VXISI 0x00800000 /* Invalid op for Inv - Inv */
-#define FPSCR_VXIDI 0x00400000 /* Invalid op for Inv / Inv */
-#define FPSCR_VXZDZ 0x00200000 /* Invalid op for Zero / Zero */
-#define FPSCR_VXIMZ 0x00100000 /* Invalid op for Inv * Zero */
-#define FPSCR_VXVC 0x00080000 /* Invalid op for Compare */
-#define FPSCR_FR 0x00040000 /* Fraction rounded */
-#define FPSCR_FI 0x00020000 /* Fraction inexact */
-#define FPSCR_FPRF 0x0001f000 /* FPU Result Flags */
-#define FPSCR_FPCC 0x0000f000 /* FPU Condition Codes */
-#define FPSCR_VXSOFT 0x00000400 /* Invalid op for software request */
-#define FPSCR_VXSQRT 0x00000200 /* Invalid op for square root */
-#define FPSCR_VXCVI 0x00000100 /* Invalid op for integer convert */
-#define FPSCR_VE 0x00000080 /* Invalid op exception enable */
-#define FPSCR_OE 0x00000040 /* IEEE overflow exception enable */
-#define FPSCR_UE 0x00000020 /* IEEE underflow exception enable */
-#define FPSCR_ZE 0x00000010 /* IEEE zero divide exception enable */
-#define FPSCR_XE 0x00000008 /* FP inexact exception enable */
-#define FPSCR_NI 0x00000004 /* FPU non IEEE-Mode */
-#define FPSCR_RN 0x00000003 /* FPU rounding control */
-
-/* Special Purpose Registers (SPRNs)*/
-
-/* PPC440 Architecture is BOOK-E */
-#ifdef CONFIG_440
-#define CONFIG_BOOKE
-#endif
-
-#define SPRN_CCR0 0x3B3 /* Core Configuration Register 0 */
-#ifdef CONFIG_BOOKE
-#define SPRN_CCR1 0x378 /* Core Configuration Register for 440 only */
-#endif
-#define SPRN_CDBCR 0x3D7 /* Cache Debug Control Register */
-#define SPRN_CTR 0x009 /* Count Register */
-#define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */
-#ifndef CONFIG_BOOKE
-#define SPRN_DAC1 0x3F6 /* Data Address Compare 1 */
-#define SPRN_DAC2 0x3F7 /* Data Address Compare 2 */
-#else
-#define SPRN_DAC1 0x13C /* Book E Data Address Compare 1 */
-#define SPRN_DAC2 0x13D /* Book E Data Address Compare 2 */
-#endif /* CONFIG_BOOKE */
-#define SPRN_DAR 0x013 /* Data Address Register */
-#define SPRN_DBAT0L 0x219 /* Data BAT 0 Lower Register */
-#define SPRN_DBAT0U 0x218 /* Data BAT 0 Upper Register */
-#define SPRN_DBAT1L 0x21B /* Data BAT 1 Lower Register */
-#define SPRN_DBAT1U 0x21A /* Data BAT 1 Upper Register */
-#define SPRN_DBAT2L 0x21D /* Data BAT 2 Lower Register */
-#define SPRN_DBAT2U 0x21C /* Data BAT 2 Upper Register */
-#define SPRN_DBAT3L 0x21F /* Data BAT 3 Lower Register */
-#define SPRN_DBAT3U 0x21E /* Data BAT 3 Upper Register */
-#define SPRN_DBAT4L 0x239 /* Data BAT 4 Lower Register */
-#define SPRN_DBAT4U 0x238 /* Data BAT 4 Upper Register */
-#define SPRN_DBAT5L 0x23B /* Data BAT 5 Lower Register */
-#define SPRN_DBAT5U 0x23A /* Data BAT 5 Upper Register */
-#define SPRN_DBAT6L 0x23D /* Data BAT 6 Lower Register */
-#define SPRN_DBAT6U 0x23C /* Data BAT 6 Upper Register */
-#define SPRN_DBAT7L 0x23F /* Data BAT 7 Lower Register */
-#define SPRN_DBAT7U 0x23E /* Data BAT 7 Lower Register */
-#define SPRN_DBCR 0x3F2 /* Debug Control Regsiter */
-#define DBCR_EDM 0x80000000
-#define DBCR_IDM 0x40000000
-#define DBCR_RST(x) (((x) & 0x3) << 28)
-#define DBCR_RST_NONE 0
-#define DBCR_RST_CORE 1
-#define DBCR_RST_CHIP 2
-#define DBCR_RST_SYSTEM 3
-#define DBCR_IC 0x08000000 /* Instruction Completion Debug Evnt */
-#define DBCR_BT 0x04000000 /* Branch Taken Debug Event */
-#define DBCR_EDE 0x02000000 /* Exception Debug Event */
-#define DBCR_TDE 0x01000000 /* TRAP Debug Event */
-#define DBCR_FER 0x00F80000 /* First Events Remaining Mask */
-#define DBCR_FT 0x00040000 /* Freeze Timers on Debug Event */
-#define DBCR_IA1 0x00020000 /* Instr. Addr. Compare 1 Enable */
-#define DBCR_IA2 0x00010000 /* Instr. Addr. Compare 2 Enable */
-#define DBCR_D1R 0x00008000 /* Data Addr. Compare 1 Read Enable */
-#define DBCR_D1W 0x00004000 /* Data Addr. Compare 1 Write Enable */
-#define DBCR_D1S(x) (((x) & 0x3) << 12) /* Data Adrr. Compare 1 Size */
-#define DAC_BYTE 0
-#define DAC_HALF 1
-#define DAC_WORD 2
-#define DAC_QUAD 3
-#define DBCR_D2R 0x00000800 /* Data Addr. Compare 2 Read Enable */
-#define DBCR_D2W 0x00000400 /* Data Addr. Compare 2 Write Enable */
-#define DBCR_D2S(x) (((x) & 0x3) << 8) /* Data Addr. Compare 2 Size */
-#define DBCR_SBT 0x00000040 /* Second Branch Taken Debug Event */
-#define DBCR_SED 0x00000020 /* Second Exception Debug Event */
-#define DBCR_STD 0x00000010 /* Second Trap Debug Event */
-#define DBCR_SIA 0x00000008 /* Second IAC Enable */
-#define DBCR_SDA 0x00000004 /* Second DAC Enable */
-#define DBCR_JOI 0x00000002 /* JTAG Serial Outbound Int. Enable */
-#define DBCR_JII 0x00000001 /* JTAG Serial Inbound Int. Enable */
-#ifndef CONFIG_BOOKE
-#define SPRN_DBCR0 0x3F2 /* Debug Control Register 0 */
-#else
-#define SPRN_DBCR0 0x134 /* Book E Debug Control Register 0 */
-#endif /* CONFIG_BOOKE */
-#ifndef CONFIG_BOOKE
-#define SPRN_DBCR1 0x3BD /* Debug Control Register 1 */
-#define SPRN_DBSR 0x3F0 /* Debug Status Register */
-#else
-#define SPRN_DBCR1 0x135 /* Book E Debug Control Register 1 */
-#ifdef CONFIG_BOOKE
-#define SPRN_DBDR 0x3f3 /* Debug Data Register */
-#endif
-#define SPRN_DBSR 0x130 /* Book E Debug Status Register */
-#define DBSR_IC 0x08000000 /* Book E Instruction Completion */
-#define DBSR_TIE 0x01000000 /* Book E Trap Instruction Event */
-#endif /* CONFIG_BOOKE */
-#define SPRN_DCCR 0x3FA /* Data Cache Cacheability Register */
-#define DCCR_NOCACHE 0 /* Noncacheable */
-#define DCCR_CACHE 1 /* Cacheable */
-#ifndef CONFIG_BOOKE
-#define SPRN_DCDBTRL 0x39c /* Data Cache Debug Tag Register Low */
-#define SPRN_DCDBTRH 0x39d /* Data Cache Debug Tag Register High */
-#endif
-#define SPRN_DCMP 0x3D1 /* Data TLB Compare Register */
-#define SPRN_DCWR 0x3BA /* Data Cache Write-thru Register */
-#define DCWR_COPY 0 /* Copy-back */
-#define DCWR_WRITE 1 /* Write-through */
-#ifndef CONFIG_BOOKE
-#define SPRN_DEAR 0x3D5 /* Data Error Address Register */
-#else
-#define SPRN_DEAR 0x03D /* Book E Data Error Address Register */
-#endif /* CONFIG_BOOKE */
-#define SPRN_DEC 0x016 /* Decrement Register */
-#define SPRN_DMISS 0x3D0 /* Data TLB Miss Register */
-#ifdef CONFIG_BOOKE
-#define SPRN_DNV0 0x390 /* Data Cache Normal Victim 0 */
-#define SPRN_DNV1 0x391 /* Data Cache Normal Victim 1 */
-#define SPRN_DNV2 0x392 /* Data Cache Normal Victim 2 */
-#define SPRN_DNV3 0x393 /* Data Cache Normal Victim 3 */
-#endif
-#define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
-#ifdef CONFIG_BOOKE
-#define SPRN_DTV0 0x394 /* Data Cache Transient Victim 0 */
-#define SPRN_DTV1 0x395 /* Data Cache Transient Victim 1 */
-#define SPRN_DTV2 0x396 /* Data Cache Transient Victim 2 */
-#define SPRN_DTV3 0x397 /* Data Cache Transient Victim 3 */
-#define SPRN_DVLIM 0x398 /* Data Cache Victim Limit */
-#endif
-#define SPRN_EAR 0x11A /* External Address Register */
-#ifndef CONFIG_BOOKE
-#define SPRN_ESR 0x3D4 /* Exception Syndrome Register */
-#else
-#define SPRN_ESR 0x03E /* Book E Exception Syndrome Register */
-#endif /* CONFIG_BOOKE */
-#define ESR_IMCP 0x80000000 /* Instr. Machine Check - Protection */
-#define ESR_IMCN 0x40000000 /* Instr. Machine Check - Non-config */
-#define ESR_IMCB 0x20000000 /* Instr. Machine Check - Bus error */
-#define ESR_IMCT 0x10000000 /* Instr. Machine Check - Timeout */
-#define ESR_PIL 0x08000000 /* Program Exception - Illegal */
-#define ESR_PPR 0x04000000 /* Program Exception - Priveleged */
-#define ESR_PTR 0x02000000 /* Program Exception - Trap */
-#define ESR_DST 0x00800000 /* Storage Exception - Data miss */
-#define ESR_DIZ 0x00400000 /* Storage Exception - Zone fault */
-#define SPRN_EVPR 0x3D6 /* Exception Vector Prefix Register */
-#define SPRN_HASH1 0x3D2 /* Primary Hash Address Register */
-#define SPRN_HASH2 0x3D3 /* Secondary Hash Address Resgister */
-#define SPRN_HID0 0x3F0 /* Hardware Implementation Register 0 */
-
-#define HID0_ICE_SHIFT 15
-#define HID0_DCE_SHIFT 14
-#define HID0_DLOCK_SHIFT 12
-
-#define HID0_EMCP (1 << 31) /* Enable Machine Check pin */
-#define HID0_EBA (1 << 29) /* Enable Bus Address Parity */
-#define HID0_EBD (1 << 28) /* Enable Bus Data Parity */
-#define HID0_SBCLK (1 << 27)
-#define HID0_EICE (1 << 26)
-#define HID0_ECLK (1 << 25)
-#define HID0_PAR (1 << 24)
-#define HID0_DOZE (1 << 23)
-#define HID0_NAP (1 << 22)
-#define HID0_SLEEP (1 << 21)
-#define HID0_DPM (1 << 20)
-#define HID0_ICE (1 << HID0_ICE_SHIFT) /* Instruction Cache Enable */
-#define HID0_DCE (1 << HID0_DCE_SHIFT) /* Data Cache Enable */
-#define HID0_TBEN (1 << 14) /* Time Base Enable */
-#define HID0_ILOCK (1 << 13) /* Instruction Cache Lock */
-#define HID0_DLOCK (1 << HID0_DLOCK_SHIFT) /* Data Cache Lock */
-#define HID0_ICFI (1 << 11) /* Instr. Cache Flash Invalidate */
-#define HID0_DCFI (1 << 10) /* Data Cache Flash Invalidate */
-#define HID0_DCI HID0_DCFI
-#define HID0_SPD (1 << 9) /* Speculative disable */
-#define HID0_ENMAS7 (1 << 7) /* Enable MAS7 Update for 36-bit phys */
-#define HID0_SGE (1 << 7) /* Store Gathering Enable */
-#define HID0_SIED HID_SGE /* Serial Instr. Execution [Disable] */
-#define HID0_DCFA (1 << 6) /* Data Cache Flush Assist */
-#define HID0_BTIC (1 << 5) /* Branch Target Instruction Cache Enable */
-#define HID0_ABE (1 << 3) /* Address Broadcast Enable */
-#define HID0_BHTE (1 << 2) /* Branch History Table Enable */
-#define HID0_BTCD (1 << 1) /* Branch target cache disable */
-#define SPRN_HID1 0x3F1 /* Hardware Implementation Register 1 */
-#define HID1_RFXE (1 << 17) /* Read Fault Exception Enable */
-#define HID1_ASTME (1 << 13) /* Address bus streaming mode */
-#define HID1_ABE (1 << 12) /* Address broadcast enable */
-#define HID1_MBDD (1 << 6) /* optimized sync instruction */
-#define SPRN_IABR 0x3F2 /* Instruction Address Breakpoint Register */
-#ifndef CONFIG_BOOKE
-#define SPRN_IAC1 0x3F4 /* Instruction Address Compare 1 */
-#define SPRN_IAC2 0x3F5 /* Instruction Address Compare 2 */
-#else
-#define SPRN_IAC1 0x138 /* Book E Instruction Address Compare 1 */
-#define SPRN_IAC2 0x139 /* Book E Instruction Address Compare 2 */
-#endif /* CONFIG_BOOKE */
-#define SPRN_IBAT0L 0x211 /* Instruction BAT 0 Lower Register */
-#define SPRN_IBAT0U 0x210 /* Instruction BAT 0 Upper Register */
-#define SPRN_IBAT1L 0x213 /* Instruction BAT 1 Lower Register */
-#define SPRN_IBAT1U 0x212 /* Instruction BAT 1 Upper Register */
-#define SPRN_IBAT2L 0x215 /* Instruction BAT 2 Lower Register */
-#define SPRN_IBAT2U 0x214 /* Instruction BAT 2 Upper Register */
-#define SPRN_IBAT3L 0x217 /* Instruction BAT 3 Lower Register */
-#define SPRN_IBAT3U 0x216 /* Instruction BAT 3 Upper Register */
-#define SPRN_IBAT4L 0x231 /* Instruction BAT 4 Lower Register */
-#define SPRN_IBAT4U 0x230 /* Instruction BAT 4 Upper Register */
-#define SPRN_IBAT5L 0x233 /* Instruction BAT 5 Lower Register */
-#define SPRN_IBAT5U 0x232 /* Instruction BAT 5 Upper Register */
-#define SPRN_IBAT6L 0x235 /* Instruction BAT 6 Lower Register */
-#define SPRN_IBAT6U 0x234 /* Instruction BAT 6 Upper Register */
-#define SPRN_IBAT7L 0x237 /* Instruction BAT 7 Lower Register */
-#define SPRN_IBAT7U 0x236 /* Instruction BAT 7 Upper Register */
-#define SPRN_ICCR 0x3FB /* Instruction Cache Cacheability Register */
-#define ICCR_NOCACHE 0 /* Noncacheable */
-#define ICCR_CACHE 1 /* Cacheable */
-#define SPRN_ICDBDR 0x3D3 /* Instruction Cache Debug Data Register */
-#ifdef CONFIG_BOOKE
-#define SPRN_ICDBTRL 0x39e /* instruction cache debug tag register low */
-#define SPRN_ICDBTRH 0x39f /* instruction cache debug tag register high */
-#endif
-#define SPRN_ICMP 0x3D5 /* Instruction TLB Compare Register */
-#define SPRN_ICTC 0x3FB /* Instruction Cache Throttling Control Reg */
-#define SPRN_IMISS 0x3D4 /* Instruction TLB Miss Register */
-#define SPRN_IMMR 0x27E /* Internal Memory Map Register */
-#ifdef CONFIG_BOOKE
-#define SPRN_INV0 0x370 /* Instruction Cache Normal Victim 0 */
-#define SPRN_INV1 0x371 /* Instruction Cache Normal Victim 1 */
-#define SPRN_INV2 0x372 /* Instruction Cache Normal Victim 2 */
-#define SPRN_INV3 0x373 /* Instruction Cache Normal Victim 3 */
-#define SPRN_ITV0 0x374 /* Instruction Cache Transient Victim 0 */
-#define SPRN_ITV1 0x375 /* Instruction Cache Transient Victim 1 */
-#define SPRN_ITV2 0x376 /* Instruction Cache Transient Victim 2 */
-#define SPRN_ITV3 0x377 /* Instruction Cache Transient Victim 3 */
-#define SPRN_IVLIM 0x399 /* Instruction Cache Victim Limit */
-#endif
-#define SPRN_LDSTCR 0x3F8 /* Load/Store Control Register */
-#define SPRN_L2CR 0x3F9 /* Level 2 Cache Control Regsiter */
-#define SPRN_LR 0x008 /* Link Register */
-#define SPRN_MBAR 0x137 /* System memory base address */
-#define SPRN_MMCR0 0x3B8 /* Monitor Mode Control Register 0 */
-#define SPRN_MMCR1 0x3BC /* Monitor Mode Control Register 1 */
-#ifdef CONFIG_BOOKE
-#define SPRN_MMUCR 0x3b2 /* MMU Control Register */
-#endif
-#define SPRN_PBL1 0x3FC /* Protection Bound Lower 1 */
-#define SPRN_PBL2 0x3FE /* Protection Bound Lower 2 */
-#define SPRN_PBU1 0x3FD /* Protection Bound Upper 1 */
-#define SPRN_PBU2 0x3FF /* Protection Bound Upper 2 */
-#ifndef CONFIG_BOOKE
-#define SPRN_PID 0x3B1 /* Process ID */
-#define SPRN_PIR 0x3FF /* Processor Identification Register */
-#else
-#define SPRN_PID 0x030 /* Book E Process ID */
-#define SPRN_PIR 0x11E /* Book E Processor Identification Register */
-#endif /* CONFIG_BOOKE */
-#define SPRN_PIT 0x3DB /* Programmable Interval Timer */
-#define SPRN_PMC1 0x3B9 /* Performance Counter Register 1 */
-#define SPRN_PMC2 0x3BA /* Performance Counter Register 2 */
-#define SPRN_PMC3 0x3BD /* Performance Counter Register 3 */
-#define SPRN_PMC4 0x3BE /* Performance Counter Register 4 */
-#define SPRN_PVR 0x11F /* Processor Version Register */
-#define SPRN_RPA 0x3D6 /* Required Physical Address Register */
-#ifdef CONFIG_BOOKE
-#define SPRN_RSTCFG 0x39b /* Reset Configuration */
-#endif
-#define SPRN_SDA 0x3BF /* Sampled Data Address Register */
-#define SPRN_SDR1 0x019 /* MMU Hash Base Register */
-#define SPRN_SGR 0x3B9 /* Storage Guarded Register */
-#define SGR_NORMAL 0
-#define SGR_GUARDED 1
-#define SPRN_SIA 0x3BB /* Sampled Instruction Address Register */
-#define SPRN_SPRG0 0x110 /* Special Purpose Register General 0 */
-#define SPRN_SPRG1 0x111 /* Special Purpose Register General 1 */
-#define SPRN_SPRG2 0x112 /* Special Purpose Register General 2 */
-#define SPRN_SPRG3 0x113 /* Special Purpose Register General 3 */
-#define SPRN_SPRG4 0x114 /* Special Purpose Register General 4 */
-#define SPRN_SPRG5 0x115 /* Special Purpose Register General 5 */
-#define SPRN_SPRG6 0x116 /* Special Purpose Register General 6 */
-#define SPRN_SPRG7 0x117 /* Special Purpose Register General 7 */
-#define SPRN_SRR0 0x01A /* Save/Restore Register 0 */
-#define SPRN_SRR1 0x01B /* Save/Restore Register 1 */
-#define SPRN_SRR2 0x3DE /* Save/Restore Register 2 */
-#define SPRN_SRR3 0x3DF /* Save/Restore Register 3 */
-
-#ifdef CONFIG_BOOKE
-#define SPRN_SVR 0x3FF /* System Version Register */
-#else
-#define SPRN_SVR 0x11E /* System Version Register */
-#endif
-#define SPRN_TBHI 0x3DC /* Time Base High */
-#define SPRN_TBHU 0x3CC /* Time Base High User-mode */
-#define SPRN_TBLO 0x3DD /* Time Base Low */
-#define SPRN_TBLU 0x3CD /* Time Base Low User-mode */
-#define SPRN_TBRL 0x10C /* Time Base Read Lower Register */
-#define SPRN_TBRU 0x10D /* Time Base Read Upper Register */
-#define SPRN_TBWL 0x11C /* Time Base Write Lower Register */
-#define SPRN_TBWU 0x11D /* Time Base Write Upper Register */
-#ifndef CONFIG_BOOKE
-#define SPRN_TCR 0x3DA /* Timer Control Register */
-#else
-#define SPRN_TCR 0x154 /* Book E Timer Control Register */
-#endif /* CONFIG_BOOKE */
-#ifdef CONFIG_E500MC
-#define TCR_WP(x) (((64 - x) & 0x3) << 30) | \
- (((64 - x) & 0x3c) << 15) /* WDT Period 2^x clocks*/
-#else
-#define TCR_WP(x) (((x) & 0x3) << 30) /* WDT Period */
-#define WP_2_17 0 /* 2^17 clocks */
-#define WP_2_21 1 /* 2^21 clocks */
-#define WP_2_25 2 /* 2^25 clocks */
-#define WP_2_29 3 /* 2^29 clocks */
-#endif /* CONFIG_E500 */
-#define TCR_WRC(x) (((x) & 0x3) << 28) /* WDT Reset Control */
-#define WRC_NONE 0 /* No reset will occur */
-#define WRC_CORE 1 /* Core reset will occur */
-#define WRC_CHIP 2 /* Chip reset will occur */
-#define WRC_SYSTEM 3 /* System reset will occur */
-#define TCR_WIE 0x08000000 /* WDT Interrupt Enable */
-#define TCR_PIE 0x04000000 /* PIT Interrupt Enable */
-#define TCR_FP(x) (((x) & 0x3) << 24) /* FIT Period */
-#define FP_2_9 0 /* 2^9 clocks */
-#define FP_2_13 1 /* 2^13 clocks */
-#define FP_2_17 2 /* 2^17 clocks */
-#define FP_2_21 3 /* 2^21 clocks */
-#define TCR_FIE 0x00800000 /* FIT Interrupt Enable */
-#define TCR_ARE 0x00400000 /* Auto Reload Enable */
-#define SPRN_THRM1 0x3FC /* Thermal Management Register 1 */
-#define THRM1_TIN (1 << 0)
-#define THRM1_TIV (1 << 1)
-#define THRM1_THRES (0x7f << 2)
-#define THRM1_TID (1 << 29)
-#define THRM1_TIE (1 << 30)
-#define THRM1_V (1 << 31)
-#define SPRN_THRM2 0x3FD /* Thermal Management Register 2 */
-#define SPRN_THRM3 0x3FE /* Thermal Management Register 3 */
-#define THRM3_E (1 << 31)
-#define SPRN_TLBMISS 0x3D4 /* 980 7450 TLB Miss Register */
-#ifndef CONFIG_BOOKE
-#define SPRN_TSR 0x3D8 /* Timer Status Register */
-#else
-#define SPRN_TSR 0x150 /* Book E Timer Status Register */
-#endif /* CONFIG_BOOKE */
-#define TSR_ENW 0x80000000 /* Enable Next Watchdog */
-#define TSR_WIS 0x40000000 /* WDT Interrupt Status */
-#define TSR_WRS(x) (((x) & 0x3) << 28) /* WDT Reset Status */
-#define WRS_NONE 0 /* No WDT reset occurred */
-#define WRS_CORE 1 /* WDT forced core reset */
-#define WRS_CHIP 2 /* WDT forced chip reset */
-#define WRS_SYSTEM 3 /* WDT forced system reset */
-#define TSR_PIS 0x08000000 /* PIT Interrupt Status */
-#define TSR_FIS 0x04000000 /* FIT Interrupt Status */
-#define SPRN_UMMCR0 0x3A8 /* User Monitor Mode Control Register 0 */
-#define SPRN_UMMCR1 0x3AC /* User Monitor Mode Control Register 0 */
-#define SPRN_UPMC1 0x3A9 /* User Performance Counter Register 1 */
-#define SPRN_UPMC2 0x3AA /* User Performance Counter Register 2 */
-#define SPRN_UPMC3 0x3AD /* User Performance Counter Register 3 */
-#define SPRN_UPMC4 0x3AE /* User Performance Counter Register 4 */
-#define SPRN_USIA 0x3AB /* User Sampled Instruction Address Register */
-#define SPRN_XER 0x001 /* Fixed Point Exception Register */
-#define SPRN_ZPR 0x3B0 /* Zone Protection Register */
-
-/* Book E definitions */
-#define SPRN_DECAR 0x036 /* Decrementer Auto Reload Register */
-#define SPRN_CSRR0 0x03A /* Critical SRR0 */
-#define SPRN_CSRR1 0x03B /* Critical SRR0 */
-#define SPRN_IVPR 0x03F /* Interrupt Vector Prefix Register */
-#define SPRN_USPRG0 0x100 /* User Special Purpose Register General 0 */
-#define SPRN_SPRG4R 0x104 /* Special Purpose Register General 4 Read */
-#define SPRN_SPRG5R 0x105 /* Special Purpose Register General 5 Read */
-#define SPRN_SPRG6R 0x106 /* Special Purpose Register General 6 Read */
-#define SPRN_SPRG7R 0x107 /* Special Purpose Register General 7 Read */
-#define SPRN_SPRG4W 0x114 /* Special Purpose Register General 4 Write */
-#define SPRN_SPRG5W 0x115 /* Special Purpose Register General 5 Write */
-#define SPRN_SPRG6W 0x116 /* Special Purpose Register General 6 Write */
-#define SPRN_SPRG7W 0x117 /* Special Purpose Register General 7 Write */
-#define SPRN_DBCR2 0x136 /* Debug Control Register 2 */
-#define SPRN_IAC3 0x13A /* Instruction Address Compare 3 */
-#define SPRN_IAC4 0x13B /* Instruction Address Compare 4 */
-#define SPRN_DVC1 0x13E /* Data Value Compare Register 1 */
-#define SPRN_DVC2 0x13F /* Data Value Compare Register 2 */
-#define SPRN_IVOR0 0x190 /* Interrupt Vector Offset Register 0 */
-#define SPRN_IVOR1 0x191 /* Interrupt Vector Offset Register 1 */
-#define SPRN_IVOR2 0x192 /* Interrupt Vector Offset Register 2 */
-#define SPRN_IVOR3 0x193 /* Interrupt Vector Offset Register 3 */
-#define SPRN_IVOR4 0x194 /* Interrupt Vector Offset Register 4 */
-#define SPRN_IVOR5 0x195 /* Interrupt Vector Offset Register 5 */
-#define SPRN_IVOR6 0x196 /* Interrupt Vector Offset Register 6 */
-#define SPRN_IVOR7 0x197 /* Interrupt Vector Offset Register 7 */
-#define SPRN_IVOR8 0x198 /* Interrupt Vector Offset Register 8 */
-#define SPRN_IVOR9 0x199 /* Interrupt Vector Offset Register 9 */
-#define SPRN_IVOR10 0x19a /* Interrupt Vector Offset Register 10 */
-#define SPRN_IVOR11 0x19b /* Interrupt Vector Offset Register 11 */
-#define SPRN_IVOR12 0x19c /* Interrupt Vector Offset Register 12 */
-#define SPRN_IVOR13 0x19d /* Interrupt Vector Offset Register 13 */
-#define SPRN_IVOR14 0x19e /* Interrupt Vector Offset Register 14 */
-#define SPRN_IVOR15 0x19f /* Interrupt Vector Offset Register 15 */
-#define SPRN_IVOR38 0x1b0 /* Interrupt Vector Offset Register 38 */
-#define SPRN_IVOR39 0x1b1 /* Interrupt Vector Offset Register 39 */
-#define SPRN_IVOR40 0x1b2 /* Interrupt Vector Offset Register 40 */
-#define SPRN_IVOR41 0x1b3 /* Interrupt Vector Offset Register 41 */
-#define SPRN_GIVOR2 0x1b8 /* Guest Interrupt Vector Offset Register 2 */
-#define SPRN_GIVOR3 0x1b9 /* Guest Interrupt Vector Offset Register 3 */
-#define SPRN_GIVOR4 0x1ba /* Guest Interrupt Vector Offset Register 4 */
-#define SPRN_GIVOR8 0x1bb /* Guest Interrupt Vector Offset Register 8 */
-#define SPRN_GIVOR13 0x1bc /* Guest Interrupt Vector Offset Register 13 */
-#define SPRN_GIVOR14 0x1bd /* Guest Interrupt Vector Offset Register 14 */
-
-/* e500 definitions */
-#define SPRN_L1CFG0 0x203 /* L1 Cache Configuration Register 0 */
-#define SPRN_L1CFG1 0x204 /* L1 Cache Configuration Register 1 */
-#define SPRN_L2CFG0 0x207 /* L2 Cache Configuration Register 0 */
-#define SPRN_L1CSR0 0x3f2 /* L1 Data Cache Control and Status Register 0 */
-#define L1CSR0_CPE 0x00010000 /* Data Cache Parity Enable */
-#define L1CSR0_CUL 0x00000400 /* (D-)Cache Unable to Lock */
-#define L1CSR0_DCLFR 0x00000100 /* D-Cache Lock Flash Reset */
-#define L1CSR0_DCFI 0x00000002 /* Data Cache Flash Invalidate */
-#define L1CSR0_DCE 0x00000001 /* Data Cache Enable */
-#define SPRN_L1CSR1 0x3f3 /* L1 Instruction Cache Control and Status Register 1 */
-#define L1CSR1_CPE 0x00010000 /* Instruction Cache Parity Enable */
-#define L1CSR1_ICUL 0x00000400 /* I-Cache Unable to Lock */
-#define L1CSR1_ICLFR 0x00000100 /* I-Cache Lock Flash Reset */
-#define L1CSR1_ICFI 0x00000002 /* Instruction Cache Flash Invalidate */
-#define L1CSR1_ICE 0x00000001 /* Instruction Cache Enable */
-#define SPRN_L1CSR2 0x25e /* L1 Data Cache Control and Status Register 2 */
-#define L1CSR2_DCWS 0x40000000 /* Data Cache Write Shadow */
-#define SPRN_L2CSR0 0x3f9 /* L2 Data Cache Control and Status Register 0 */
-#define L2CSR0_L2E 0x80000000 /* L2 Cache Enable */
-#define L2CSR0_L2PE 0x40000000 /* L2 Cache Parity/ECC Enable */
-#define L2CSR0_L2WP 0x1c000000 /* L2 I/D Way Partioning */
-#define L2CSR0_L2CM 0x03000000 /* L2 Cache Coherency Mode */
-#define L2CSR0_L2FI 0x00200000 /* L2 Cache Flash Invalidate */
-#define L2CSR0_L2IO 0x00100000 /* L2 Cache Instruction Only */
-#define L2CSR0_L2DO 0x00010000 /* L2 Cache Data Only */
-#define L2CSR0_L2REP 0x00003000 /* L2 Line Replacement Algo */
-
-/* e6500 */
-#define L2CSR0_L2REP_SPLRUAGE 0x00000000 /* L2REP Streaming PLRU with Aging */
-#define L2CSR0_L2REP_FIFO 0x00001000 /* L2REP FIFO */
-#define L2CSR0_L2REP_SPLRU 0x00002000 /* L2REP Streaming PLRU */
-#define L2CSR0_L2REP_PLRU 0x00003000 /* L2REP PLRU */
-
-#define L2CSR0_L2REP_MODE L2CSR0_L2REP_SPLRUAGE
-
-#define L2CSR0_L2FL 0x00000800 /* L2 Cache Flush */
-#define L2CSR0_L2LFC 0x00000400 /* L2 Cache Lock Flash Clear */
-#define L2CSR0_L2LOA 0x00000080 /* L2 Cache Lock Overflow Allocate */
-#define L2CSR0_L2LO 0x00000020 /* L2 Cache Lock Overflow */
-#define SPRN_L2CSR1 0x3fa /* L2 Data Cache Control and Status Register 1 */
-
-#define SPRN_TLB0CFG 0x2B0 /* TLB 0 Config Register */
-#define SPRN_TLB1CFG 0x2B1 /* TLB 1 Config Register */
-#define TLBnCFG_NENTRY_MASK 0x00000fff
-#define SPRN_TLB0PS 0x158 /* TLB 0 Page Size Register */
-#define SPRN_TLB1PS 0x159 /* TLB 1 Page Size Register */
-#define SPRN_MMUCSR0 0x3f4 /* MMU control and status register 0 */
-#define SPRN_MMUCFG 0x3F7 /* MMU Configuration Register */
-#define MMUCFG_MAVN 0x00000003 /* MMU Architecture Version Number */
-#define MMUCFG_MAVN_V1 0x00000000 /* v1.0 */
-#define MMUCFG_MAVN_V2 0x00000001 /* v2.0 */
-#define SPRN_MAS0 0x270 /* MMU Assist Register 0 */
-#define SPRN_MAS1 0x271 /* MMU Assist Register 1 */
-#define SPRN_MAS2 0x272 /* MMU Assist Register 2 */
-#define SPRN_MAS3 0x273 /* MMU Assist Register 3 */
-#define SPRN_MAS4 0x274 /* MMU Assist Register 4 */
-#define SPRN_MAS5 0x275 /* MMU Assist Register 5 */
-#define SPRN_MAS6 0x276 /* MMU Assist Register 6 */
-#define SPRN_MAS7 0x3B0 /* MMU Assist Register 7 */
-#define SPRN_MAS8 0x155 /* MMU Assist Register 8 */
-
-#define SPRN_IVOR32 0x210 /* Interrupt Vector Offset Register 32 */
-#define SPRN_IVOR33 0x211 /* Interrupt Vector Offset Register 33 */
-#define SPRN_IVOR34 0x212 /* Interrupt Vector Offset Register 34 */
-#define SPRN_IVOR35 0x213 /* Interrupt Vector Offset Register 35 */
-#define SPRN_IVOR36 0x214 /* Interrupt Vector Offset Register 36 */
-#define SPRN_IVOR37 0x215 /* Interrupt Vector Offset Register 37 */
-#define SPRN_SPEFSCR 0x200 /* SPE & Embedded FP Status & Control */
-
-#define SPRN_MCSRR0 0x23a /* Machine Check Save and Restore Register 0 */
-#define SPRN_MCSRR1 0x23b /* Machine Check Save and Restore Register 1 */
-#define SPRN_BUCSR 0x3f5 /* Branch Control and Status Register */
-#define BUCSR_STAC_EN 0x01000000 /* Segment target addr cache enable */
-#define BUCSR_LS_EN 0x00400000 /* Link stack enable */
-#define BUCSR_BBFI 0x00000200 /* Branch buffer flash invalidate */
-#define BUCSR_BPEN 0x00000001 /* Branch prediction enable */
-#define BUCSR_ENABLE (BUCSR_STAC_EN | BUCSR_LS_EN | BUCSR_BBFI | BUCSR_BPEN)
-#define SPRN_BBEAR 0x201 /* Branch Buffer Entry Address Register */
-#define SPRN_BBTAR 0x202 /* Branch Buffer Target Address Register */
-#define SPRN_PID1 0x279 /* Process ID Register 1 */
-#define SPRN_PID2 0x27a /* Process ID Register 2 */
-#define SPRN_MCSR 0x23c /* Machine Check Syndrome register */
-#define SPRN_MCAR 0x23d /* Machine Check Address register */
-#define MCSR_MCS 0x80000000 /* Machine Check Summary */
-#define MCSR_IB 0x40000000 /* Instruction PLB Error */
-#if defined(CONFIG_440)
-#define MCSR_DRB 0x20000000 /* Data Read PLB Error */
-#define MCSR_DWB 0x10000000 /* Data Write PLB Error */
-#else
-#define MCSR_DB 0x20000000 /* Data PLB Error */
-#endif /* defined(CONFIG_440) */
-#define MCSR_TLBP 0x08000000 /* TLB Parity Error */
-#define MCSR_ICP 0x04000000 /* I-Cache Parity Error */
-#define MCSR_DCSP 0x02000000 /* D-Cache Search Parity Error */
-#define MCSR_DCFP 0x01000000 /* D-Cache Flush Parity Error */
-#define MCSR_IMPE 0x00800000 /* Imprecise Machine Check Exception */
-#define ESR_ST 0x00800000 /* Store Operation */
-
-#if defined(CONFIG_MPC86xx)
-#define SPRN_MSSCR0 0x3f6
-#define SPRN_MSSSR0 0x3f7
-#endif
-
-#define SPRN_HDBCR0 0x3d0
-#define SPRN_HDBCR1 0x3d1
-#define SPRN_HDBCR2 0x3d2
-#define SPRN_HDBCR3 0x3d3
-#define SPRN_HDBCR4 0x3d4
-#define SPRN_HDBCR5 0x3d5
-#define SPRN_HDBCR6 0x3d6
-#define SPRN_HDBCR7 0x277
-#define SPRN_HDBCR8 0x278
-
-/* Short-hand versions for a number of the above SPRNs */
-
-#define CTR SPRN_CTR /* Counter Register */
-#define DAR SPRN_DAR /* Data Address Register */
-#define DABR SPRN_DABR /* Data Address Breakpoint Register */
-#define DAC1 SPRN_DAC1 /* Data Address Register 1 */
-#define DAC2 SPRN_DAC2 /* Data Address Register 2 */
-#define DBAT0L SPRN_DBAT0L /* Data BAT 0 Lower Register */
-#define DBAT0U SPRN_DBAT0U /* Data BAT 0 Upper Register */
-#define DBAT1L SPRN_DBAT1L /* Data BAT 1 Lower Register */
-#define DBAT1U SPRN_DBAT1U /* Data BAT 1 Upper Register */
-#define DBAT2L SPRN_DBAT2L /* Data BAT 2 Lower Register */
-#define DBAT2U SPRN_DBAT2U /* Data BAT 2 Upper Register */
-#define DBAT3L SPRN_DBAT3L /* Data BAT 3 Lower Register */
-#define DBAT3U SPRN_DBAT3U /* Data BAT 3 Upper Register */
-#define DBAT4L SPRN_DBAT4L /* Data BAT 4 Lower Register */
-#define DBAT4U SPRN_DBAT4U /* Data BAT 4 Upper Register */
-#define DBAT5L SPRN_DBAT5L /* Data BAT 5 Lower Register */
-#define DBAT5U SPRN_DBAT5U /* Data BAT 5 Upper Register */
-#define DBAT6L SPRN_DBAT6L /* Data BAT 6 Lower Register */
-#define DBAT6U SPRN_DBAT6U /* Data BAT 6 Upper Register */
-#define DBAT7L SPRN_DBAT7L /* Data BAT 7 Lower Register */
-#define DBAT7U SPRN_DBAT7U /* Data BAT 7 Upper Register */
-#define DBCR0 SPRN_DBCR0 /* Debug Control Register 0 */
-#define DBCR1 SPRN_DBCR1 /* Debug Control Register 1 */
-#define DBSR SPRN_DBSR /* Debug Status Register */
-#define DCMP SPRN_DCMP /* Data TLB Compare Register */
-#define DEC SPRN_DEC /* Decrement Register */
-#define DMISS SPRN_DMISS /* Data TLB Miss Register */
-#define DSISR SPRN_DSISR /* Data Storage Interrupt Status Register */
-#define EAR SPRN_EAR /* External Address Register */
-#define ESR SPRN_ESR /* Exception Syndrome Register */
-#define HASH1 SPRN_HASH1 /* Primary Hash Address Register */
-#define HASH2 SPRN_HASH2 /* Secondary Hash Address Register */
-#define HID0 SPRN_HID0 /* Hardware Implementation Register 0 */
-#define HID1 SPRN_HID1 /* Hardware Implementation Register 1 */
-#define IABR SPRN_IABR /* Instruction Address Breakpoint Register */
-#define IAC1 SPRN_IAC1 /* Instruction Address Register 1 */
-#define IAC2 SPRN_IAC2 /* Instruction Address Register 2 */
-#define IBAT0L SPRN_IBAT0L /* Instruction BAT 0 Lower Register */
-#define IBAT0U SPRN_IBAT0U /* Instruction BAT 0 Upper Register */
-#define IBAT1L SPRN_IBAT1L /* Instruction BAT 1 Lower Register */
-#define IBAT1U SPRN_IBAT1U /* Instruction BAT 1 Upper Register */
-#define IBAT2L SPRN_IBAT2L /* Instruction BAT 2 Lower Register */
-#define IBAT2U SPRN_IBAT2U /* Instruction BAT 2 Upper Register */
-#define IBAT3L SPRN_IBAT3L /* Instruction BAT 3 Lower Register */
-#define IBAT3U SPRN_IBAT3U /* Instruction BAT 3 Upper Register */
-#define IBAT4L SPRN_IBAT4L /* Instruction BAT 4 Lower Register */
-#define IBAT4U SPRN_IBAT4U /* Instruction BAT 4 Upper Register */
-#define IBAT5L SPRN_IBAT5L /* Instruction BAT 5 Lower Register */
-#define IBAT5U SPRN_IBAT5U /* Instruction BAT 5 Upper Register */
-#define IBAT6L SPRN_IBAT6L /* Instruction BAT 6 Lower Register */
-#define IBAT6U SPRN_IBAT6U /* Instruction BAT 6 Upper Register */
-#define IBAT7L SPRN_IBAT7L /* Instruction BAT 7 Lower Register */
-#define IBAT7U SPRN_IBAT7U /* Instruction BAT 7 Lower Register */
-#define ICMP SPRN_ICMP /* Instruction TLB Compare Register */
-#define IMISS SPRN_IMISS /* Instruction TLB Miss Register */
-#define IMMR SPRN_IMMR /* PPC 860/821 Internal Memory Map Register */
-#define LDSTCR SPRN_LDSTCR /* Load/Store Control Register */
-#define L2CR SPRN_L2CR /* PPC 750 L2 control register */
-#define LR SPRN_LR
-#define MBAR SPRN_MBAR /* System memory base address */
-#if defined(CONFIG_MPC86xx)
-#define MSSCR0 SPRN_MSSCR0
-#endif
-#if defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
-#define PIR SPRN_PIR
-#endif
-#define SVR SPRN_SVR /* System-On-Chip Version Register */
-#define PVR SPRN_PVR /* Processor Version */
-#define RPA SPRN_RPA /* Required Physical Address Register */
-#define SDR1 SPRN_SDR1 /* MMU hash base register */
-#define SPR0 SPRN_SPRG0 /* Supervisor Kernel Registers */
-#define SPR1 SPRN_SPRG1
-#define SPR2 SPRN_SPRG2
-#define SPR3 SPRN_SPRG3
-#define SPRG0 SPRN_SPRG0
-#define SPRG1 SPRN_SPRG1
-#define SPRG2 SPRN_SPRG2
-#define SPRG3 SPRN_SPRG3
-#define SPRG4 SPRN_SPRG4
-#define SPRG5 SPRN_SPRG5
-#define SPRG6 SPRN_SPRG6
-#define SPRG7 SPRN_SPRG7
-#define SRR0 SPRN_SRR0 /* Save and Restore Register 0 */
-#define SRR1 SPRN_SRR1 /* Save and Restore Register 1 */
-#define SRR2 SPRN_SRR2 /* Save and Restore Register 2 */
-#define SRR3 SPRN_SRR3 /* Save and Restore Register 3 */
-#define SVR SPRN_SVR /* System Version Register */
-#define TBRL SPRN_TBRL /* Time Base Read Lower Register */
-#define TBRU SPRN_TBRU /* Time Base Read Upper Register */
-#define TBWL SPRN_TBWL /* Time Base Write Lower Register */
-#define TBWU SPRN_TBWU /* Time Base Write Upper Register */
-#define TCR SPRN_TCR /* Timer Control Register */
-#define TSR SPRN_TSR /* Timer Status Register */
-#define ICTC 1019
-#define THRM1 SPRN_THRM1 /* Thermal Management Register 1 */
-#define THRM2 SPRN_THRM2 /* Thermal Management Register 2 */
-#define THRM3 SPRN_THRM3 /* Thermal Management Register 3 */
-#define XER SPRN_XER
-
-#define DECAR SPRN_DECAR
-#define CSRR0 SPRN_CSRR0
-#define CSRR1 SPRN_CSRR1
-#define IVPR SPRN_IVPR
-#define USPRG0 SPRN_USPRG
-#define SPRG4R SPRN_SPRG4R
-#define SPRG5R SPRN_SPRG5R
-#define SPRG6R SPRN_SPRG6R
-#define SPRG7R SPRN_SPRG7R
-#define SPRG4W SPRN_SPRG4W
-#define SPRG5W SPRN_SPRG5W
-#define SPRG6W SPRN_SPRG6W
-#define SPRG7W SPRN_SPRG7W
-#define DEAR SPRN_DEAR
-#define DBCR2 SPRN_DBCR2
-#define IAC3 SPRN_IAC3
-#define IAC4 SPRN_IAC4
-#define DVC1 SPRN_DVC1
-#define DVC2 SPRN_DVC2
-#define IVOR0 SPRN_IVOR0
-#define IVOR1 SPRN_IVOR1
-#define IVOR2 SPRN_IVOR2
-#define IVOR3 SPRN_IVOR3
-#define IVOR4 SPRN_IVOR4
-#define IVOR5 SPRN_IVOR5
-#define IVOR6 SPRN_IVOR6
-#define IVOR7 SPRN_IVOR7
-#define IVOR8 SPRN_IVOR8
-#define IVOR9 SPRN_IVOR9
-#define IVOR10 SPRN_IVOR10
-#define IVOR11 SPRN_IVOR11
-#define IVOR12 SPRN_IVOR12
-#define IVOR13 SPRN_IVOR13
-#define IVOR14 SPRN_IVOR14
-#define IVOR15 SPRN_IVOR15
-#define IVOR32 SPRN_IVOR32
-#define IVOR33 SPRN_IVOR33
-#define IVOR34 SPRN_IVOR34
-#define IVOR35 SPRN_IVOR35
-#define MCSRR0 SPRN_MCSRR0
-#define MCSRR1 SPRN_MCSRR1
-#define L1CSR0 SPRN_L1CSR0
-#define L1CSR1 SPRN_L1CSR1
-#define L1CSR2 SPRN_L1CSR2
-#define L1CFG0 SPRN_L1CFG0
-#define L1CFG1 SPRN_L1CFG1
-#define L2CFG0 SPRN_L2CFG0
-#define L2CSR0 SPRN_L2CSR0
-#define L2CSR1 SPRN_L2CSR1
-#define MCSR SPRN_MCSR
-#define MMUCSR0 SPRN_MMUCSR0
-#define BUCSR SPRN_BUCSR
-#define PID0 SPRN_PID
-#define PID1 SPRN_PID1
-#define PID2 SPRN_PID2
-#define MAS0 SPRN_MAS0
-#define MAS1 SPRN_MAS1
-#define MAS2 SPRN_MAS2
-#define MAS3 SPRN_MAS3
-#define MAS4 SPRN_MAS4
-#define MAS5 SPRN_MAS5
-#define MAS6 SPRN_MAS6
-#define MAS7 SPRN_MAS7
-#define MAS8 SPRN_MAS8
-
-#if defined(CONFIG_4xx) || defined(CONFIG_44x) || defined(CONFIG_MPC85xx)
-#define DAR_DEAR DEAR
-#else
-#define DAR_DEAR DAR
-#endif
-
-/* Device Control Registers */
-
-#define DCRN_BEAR 0x090 /* Bus Error Address Register */
-#define DCRN_BESR 0x091 /* Bus Error Syndrome Register */
-#define BESR_DSES 0x80000000 /* Data-Side Error Status */
-#define BESR_DMES 0x40000000 /* DMA Error Status */
-#define BESR_RWS 0x20000000 /* Read/Write Status */
-#define BESR_ETMASK 0x1C000000 /* Error Type */
-#define ET_PROT 0
-#define ET_PARITY 1
-#define ET_NCFG 2
-#define ET_BUSERR 4
-#define ET_BUSTO 6
-#define DCRN_DMACC0 0x0C4 /* DMA Chained Count Register 0 */
-#define DCRN_DMACC1 0x0CC /* DMA Chained Count Register 1 */
-#define DCRN_DMACC2 0x0D4 /* DMA Chained Count Register 2 */
-#define DCRN_DMACC3 0x0DC /* DMA Chained Count Register 3 */
-#define DCRN_DMACR0 0x0C0 /* DMA Channel Control Register 0 */
-#define DCRN_DMACR1 0x0C8 /* DMA Channel Control Register 1 */
-#define DCRN_DMACR2 0x0D0 /* DMA Channel Control Register 2 */
-#define DCRN_DMACR3 0x0D8 /* DMA Channel Control Register 3 */
-#define DCRN_DMACT0 0x0C1 /* DMA Count Register 0 */
-#define DCRN_DMACT1 0x0C9 /* DMA Count Register 1 */
-#define DCRN_DMACT2 0x0D1 /* DMA Count Register 2 */
-#define DCRN_DMACT3 0x0D9 /* DMA Count Register 3 */
-#define DCRN_DMADA0 0x0C2 /* DMA Destination Address Register 0 */
-#define DCRN_DMADA1 0x0CA /* DMA Destination Address Register 1 */
-#define DCRN_DMADA2 0x0D2 /* DMA Destination Address Register 2 */
-#define DCRN_DMADA3 0x0DA /* DMA Destination Address Register 3 */
-#define DCRN_DMASA0 0x0C3 /* DMA Source Address Register 0 */
-#define DCRN_DMASA1 0x0CB /* DMA Source Address Register 1 */
-#define DCRN_DMASA2 0x0D3 /* DMA Source Address Register 2 */
-#define DCRN_DMASA3 0x0DB /* DMA Source Address Register 3 */
-#define DCRN_DMASR 0x0E0 /* DMA Status Register */
-#define DCRN_EXIER 0x042 /* External Interrupt Enable Register */
-#define EXIER_CIE 0x80000000 /* Critical Interrupt Enable */
-#define EXIER_SRIE 0x08000000 /* Serial Port Rx Int. Enable */
-#define EXIER_STIE 0x04000000 /* Serial Port Tx Int. Enable */
-#define EXIER_JRIE 0x02000000 /* JTAG Serial Port Rx Int. Enable */
-#define EXIER_JTIE 0x01000000 /* JTAG Serial Port Tx Int. Enable */
-#define EXIER_D0IE 0x00800000 /* DMA Channel 0 Interrupt Enable */
-#define EXIER_D1IE 0x00400000 /* DMA Channel 1 Interrupt Enable */
-#define EXIER_D2IE 0x00200000 /* DMA Channel 2 Interrupt Enable */
-#define EXIER_D3IE 0x00100000 /* DMA Channel 3 Interrupt Enable */
-#define EXIER_E0IE 0x00000010 /* External Interrupt 0 Enable */
-#define EXIER_E1IE 0x00000008 /* External Interrupt 1 Enable */
-#define EXIER_E2IE 0x00000004 /* External Interrupt 2 Enable */
-#define EXIER_E3IE 0x00000002 /* External Interrupt 3 Enable */
-#define EXIER_E4IE 0x00000001 /* External Interrupt 4 Enable */
-#define DCRN_EXISR 0x040 /* External Interrupt Status Register */
-#define DCRN_IOCR 0x0A0 /* Input/Output Configuration Register */
-#define IOCR_E0TE 0x80000000
-#define IOCR_E0LP 0x40000000
-#define IOCR_E1TE 0x20000000
-#define IOCR_E1LP 0x10000000
-#define IOCR_E2TE 0x08000000
-#define IOCR_E2LP 0x04000000
-#define IOCR_E3TE 0x02000000
-#define IOCR_E3LP 0x01000000
-#define IOCR_E4TE 0x00800000
-#define IOCR_E4LP 0x00400000
-#define IOCR_EDT 0x00080000
-#define IOCR_SOR 0x00040000
-#define IOCR_EDO 0x00008000
-#define IOCR_2XC 0x00004000
-#define IOCR_ATC 0x00002000
-#define IOCR_SPD 0x00001000
-#define IOCR_BEM 0x00000800
-#define IOCR_PTD 0x00000400
-#define IOCR_ARE 0x00000080
-#define IOCR_DRC 0x00000020
-#define IOCR_RDM(x) (((x) & 0x3) << 3)
-#define IOCR_TCS 0x00000004
-#define IOCR_SCS 0x00000002
-#define IOCR_SPC 0x00000001
-
-/* System-On-Chip Version Register */
-
-/* System-On-Chip Version Register (SVR) field extraction */
-
-#define SVR_VER(svr) (((svr) >> 16) & 0xFFFF) /* Version field */
-#define SVR_REV(svr) (((svr) >> 0) & 0xFF) /* Revision field */
-
-#define SVR_CID(svr) (((svr) >> 28) & 0x0F) /* Company or manufacturer ID */
-#define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F) /* SOC integration options */
-#define SVR_SID(svr) (((svr) >> 16) & 0x3F) /* SOC ID */
-#define SVR_PROC(svr) (((svr) >> 12) & 0x0F) /* Process revision field */
-#define SVR_MFG(svr) (((svr) >> 8) & 0x0F) /* Manufacturing revision */
-#define SVR_MJREV(svr) (((svr) >> 4) & 0x0F) /* Major SOC design revision indicator */
-#define SVR_MNREV(svr) (((svr) >> 0) & 0x0F) /* Minor SOC design revision indicator */
-
-/* Processor Version Register */
-
-/* Processor Version Register (PVR) field extraction */
-
-#define PVR_VER(pvr) (((pvr) >> 16) & 0xFFFF) /* Version field */
-#define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF) /* Revison field */
-
-/*
- * AMCC has further subdivided the standard ppc 16-bit version and
- * revision subfields of the PVR for the ppc 403s into the following:
- */
-
-#define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF) /* Family field */
-#define PVR_MEM(pvr) (((pvr) >> 16) & 0xF) /* Member field */
-#define PVR_CORE(pvr) (((pvr) >> 12) & 0xF) /* Core field */
-#define PVR_CFG(pvr) (((pvr) >> 8) & 0xF) /* Configuration field */
-#define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF) /* Major revision field */
-#define PVR_MIN(pvr) (((pvr) >> 0) & 0xF) /* Minor revision field */
-
-/* e600 core PVR fields */
-
-#define PVR_E600_VER(pvr) (((pvr) >> 15) & 0xFFFF) /* Version/type */
-#define PVR_E600_TECH(pvr) (((pvr) >> 12) & 0xF) /* Technology */
-#define PVR_E600_MAJ(pvr) (((pvr) >> 8) & 0xF) /* Major revision */
-#define PVR_E600_MIN(pvr) (((pvr) >> 0) & 0xFF) /* Minor revision */
-
-/* Processor Version Numbers */
-
-#define PVR_403GA 0x00200000
-#define PVR_403GB 0x00200100
-#define PVR_403GC 0x00200200
-#define PVR_403GCX 0x00201400
-#define PVR_405GP 0x40110000
-#define PVR_405GP_RB 0x40110040
-#define PVR_405GP_RC 0x40110082
-#define PVR_405GP_RD 0x401100C4
-#define PVR_405GP_RE 0x40110145 /* same as pc405cr rev c */
-#define PVR_405EP_RA 0x51210950
-#define PVR_405GPR_RB 0x50910951
-#define PVR_405EZ_RA 0x41511460
-#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */
-#define PVR_405EX1_RA 0x12911477 /* 405EX rev A/B with Security */
-#define PVR_405EXR1_RC 0x1291147B /* 405EXr rev C with Security */
-#define PVR_405EXR2_RC 0x12911479 /* 405EXr rev C without Security */
-#define PVR_405EX1_RC 0x1291147F /* 405EX rev C with Security */
-#define PVR_405EX2_RC 0x1291147D /* 405EX rev C without Security */
-#define PVR_405EXR1_RD 0x12911472 /* 405EXr rev D with Security */
-#define PVR_405EXR2_RD 0x12911470 /* 405EXr rev D without Security */
-#define PVR_405EX1_RD 0x12911475 /* 405EX rev D with Security */
-#define PVR_405EX2_RD 0x12911473 /* 405EX rev D without Security */
-#define PVR_440GP_RB 0x40120440
-#define PVR_440GP_RC 0x40120481
-#define PVR_440EP_RA 0x42221850
-#define PVR_440EP_RB 0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */
-#define PVR_440EP_RC 0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
-#define PVR_440GR_RA 0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */
-#define PVR_440GR_RB 0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
-#define PVR_440EPX1_RA 0x216218D0 /* 440EPX rev A with Security / Kasumi */
-#define PVR_440EPX2_RA 0x216218D4 /* 440EPX rev A without Security / Kasumi */
-#define PVR_440GRX1_RA 0x216218D0 /* 440GRX rev A with Security / Kasumi */
-#define PVR_440GRX2_RA 0x216218D4 /* 440GRX rev A without Security / Kasumi */
-#define PVR_440GX_RA 0x51B21850
-#define PVR_440GX_RB 0x51B21851
-#define PVR_440GX_RC 0x51B21892
-#define PVR_440GX_RF 0x51B21894
-#define PVR_405EP_RB 0x51210950
-#define PVR_440SP_6_RAB 0x53221850 /* 440SP rev A&B with RAID 6 support enabled */
-#define PVR_440SP_RAB 0x53321850 /* 440SP rev A&B without RAID 6 support */
-#define PVR_440SP_6_RC 0x53221891 /* 440SP rev C with RAID 6 support enabled */
-#define PVR_440SP_RC 0x53321891 /* 440SP rev C without RAID 6 support */
-#define PVR_440SPe_6_RA 0x53421890 /* 440SPe rev A with RAID 6 support enabled */
-#define PVR_440SPe_RA 0x53521890 /* 440SPe rev A without RAID 6 support */
-#define PVR_440SPe_6_RB 0x53421891 /* 440SPe rev B with RAID 6 support enabled */
-#define PVR_440SPe_RB 0x53521891 /* 440SPe rev B without RAID 6 support */
-#define PVR_460EX_SE_RA 0x130218A2 /* 460EX rev A with Security Engine */
-#define PVR_460EX_RA 0x130218A3 /* 460EX rev A without Security Engine */
-#define PVR_460EX_RB 0x130218A4 /* 460EX rev B with and without Sec Eng*/
-#define PVR_460GT_SE_RA 0x130218A0 /* 460GT rev A with Security Engine */
-#define PVR_460GT_RA 0x130218A1 /* 460GT rev A without Security Engine */
-#define PVR_460GT_RB 0x130218A5 /* 460GT rev B with and without Sec Eng*/
-#define PVR_460SX_RA 0x13541800 /* 460SX rev A */
-#define PVR_460SX_RA_V1 0x13541801 /* 460SX rev A Variant 1 Security disabled */
-#define PVR_460GX_RA 0x13541802 /* 460GX rev A */
-#define PVR_460GX_RA_V1 0x13541803 /* 460GX rev A Variant 1 Security disabled */
-#define PVR_APM821XX_RA 0x12C41C80 /* APM821XX rev A */
-#define PVR_601 0x00010000
-#define PVR_602 0x00050000
-#define PVR_603 0x00030000
-#define PVR_603e 0x00060000
-#define PVR_603ev 0x00070000
-#define PVR_603r 0x00071000
-#define PVR_604 0x00040000
-#define PVR_604e 0x00090000
-#define PVR_604r 0x000A0000
-#define PVR_620 0x00140000
-#define PVR_740 0x00080000
-#define PVR_750 PVR_740
-#define PVR_740P 0x10080000
-#define PVR_750P PVR_740P
-#define PVR_7400 0x000C0000
-#define PVR_7410 0x800C0000
-#define PVR_7450 0x80000000
-
-#define PVR_85xx 0x80200000
-#define PVR_85xx_REV1 (PVR_85xx | 0x0010)
-#define PVR_85xx_REV2 (PVR_85xx | 0x0020)
-#define PVR_VER_E500_V1 0x8020
-#define PVR_VER_E500_V2 0x8021
-#define PVR_VER_E500MC 0x8023
-#define PVR_VER_E5500 0x8024
-#define PVR_VER_E6500 0x8040
-
-#define PVR_86xx 0x80040000
-
-#define PVR_VIRTEX5 0x7ff21912
-
-/*
- * For the 8xx processors, all of them report the same PVR family for
- * the ppc core. The various versions of these processors must be
- * differentiated by the version number in the Communication Processor
- * Module (CPM).
- */
-#define PVR_821 0x00500000
-#define PVR_823 PVR_821
-#define PVR_850 PVR_821
-#define PVR_860 PVR_821
-#define PVR_7400 0x000C0000
-#define PVR_8240 0x00810100
-
-/*
- * PowerQUICC II family processors report different PVR values depending
- * on silicon process (HiP3, HiP4, HiP7, etc.)
- */
-#define PVR_8260 PVR_8240
-#define PVR_8260_HIP3 0x00810101
-#define PVR_8260_HIP4 0x80811014
-#define PVR_8260_HIP7 0x80822011
-#define PVR_8260_HIP7R1 0x80822013
-#define PVR_8260_HIP7RA 0x80822014
-
-/*
- * MPC 52xx
- */
-#define PVR_5200 0x80822011
-#define PVR_5200B 0x80822014
-
-/*
- * 405EX/EXr CHIP_21 Errata
- */
-#ifdef CONFIG_SYS_4xx_CHIP_21_405EX_SECURITY
-#define CONFIG_SYS_4xx_CHIP_21_ERRATA
-#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EX1_RC
-#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EX1_RD
-#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x0
-#endif
-
-#ifdef CONFIG_SYS_4xx_CHIP_21_405EX_NO_SECURITY
-#define CONFIG_SYS_4xx_CHIP_21_ERRATA
-#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EX2_RC
-#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EX2_RD
-#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x1
-#endif
-
-#ifdef CONFIG_SYS_4xx_CHIP_21_405EXr_SECURITY
-#define CONFIG_SYS_4xx_CHIP_21_ERRATA
-#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EXR1_RC
-#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EXR1_RD
-#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x2
-#endif
-
-#ifdef CONFIG_SYS_4xx_CHIP_21_405EXr_NO_SECURITY
-#define CONFIG_SYS_4xx_CHIP_21_ERRATA
-#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EXR2_RC
-#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EXR2_RD
-#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x3
-#endif
-
-/*
- * System Version Register
- */
-
-/* System Version Register (SVR) field extraction */
-
-#define SVR_SUBVER(svr) (((svr) >> 8) & 0xFF) /* Process/MFG sub-version */
-
-#define SVR_FAM(svr) (((svr) >> 20) & 0xFFF) /* Family field */
-#define SVR_MEM(svr) (((svr) >> 16) & 0xF) /* Member field */
-
-#ifdef CONFIG_MPC8536
-#define SVR_MAJ(svr) (((svr) >> 4) & 0x7) /* Major revision field*/
-#else
-#define SVR_MAJ(svr) (((svr) >> 4) & 0xF) /* Major revision field*/
-#endif
-#define SVR_MIN(svr) (((svr) >> 0) & 0xF) /* Minor revision field*/
-
-/* Some parts define SVR[0:23] as the SOC version */
-#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFF7FF) /* SOC w/o E bit*/
-
-/* whether MPC8xxxE (i.e. has SEC) */
-#if defined(CONFIG_MPC85xx)
-#define IS_E_PROCESSOR(svr) (svr & 0x80000)
-#else
-#if defined(CONFIG_MPC83xx)
-#define IS_E_PROCESSOR(spridr) (!(spridr & 0x00010000))
-#endif
-#endif
-
-#define IS_SVR_REV(svr, maj, min) \
- ((SVR_MAJ(svr) == maj) && (SVR_MIN(svr) == min))
-
-/*
- * SVR_SOC_VER() Version Values
- */
-
-#define SVR_8533 0x803400
-#define SVR_8535 0x803701
-#define SVR_8536 0x803700
-#define SVR_8540 0x803000
-#define SVR_8541 0x807200
-#define SVR_8543 0x803200
-#define SVR_8544 0x803401
-#define SVR_8545 0x803102
-#define SVR_8547 0x803101
-#define SVR_8548 0x803100
-#define SVR_8555 0x807100
-#define SVR_8560 0x807000
-#define SVR_8567 0x807501
-#define SVR_8568 0x807500
-#define SVR_8569 0x808000
-#define SVR_8572 0x80E000
-#define SVR_P1010 0x80F100
-#define SVR_P1011 0x80E500
-#define SVR_P1012 0x80E501
-#define SVR_P1013 0x80E700
-#define SVR_P1014 0x80F101
-#define SVR_P1017 0x80F700
-#define SVR_P1020 0x80E400
-#define SVR_P1021 0x80E401
-#define SVR_P1022 0x80E600
-#define SVR_P1023 0x80F600
-#define SVR_P1024 0x80E402
-#define SVR_P1025 0x80E403
-#define SVR_P2010 0x80E300
-#define SVR_P2020 0x80E200
-#define SVR_P2040 0x821000
-#define SVR_P2041 0x821001
-#define SVR_P3041 0x821103
-#define SVR_P4040 0x820100
-#define SVR_P4080 0x820000
-#define SVR_P5010 0x822100
-#define SVR_P5020 0x822000
-#define SVR_P5021 0X820500
-#define SVR_P5040 0x820400
-#define SVR_T4240 0x824000
-#define SVR_T4120 0x824001
-#define SVR_T4160 0x824100
-#define SVR_T4080 0x824102
-#define SVR_C291 0x850000
-#define SVR_C292 0x850020
-#define SVR_C293 0x850030
-#define SVR_B4860 0X868000
-#define SVR_G4860 0x868001
-#define SVR_B4460 0x868003
-#define SVR_B4440 0x868100
-#define SVR_G4440 0x868101
-#define SVR_B4420 0x868102
-#define SVR_B4220 0x868103
-#define SVR_T1040 0x852000
-#define SVR_T1041 0x852001
-#define SVR_T1042 0x852002
-#define SVR_T1020 0x852100
-#define SVR_T1021 0x852101
-#define SVR_T1022 0x852102
-#define SVR_T1024 0x854000
-#define SVR_T1023 0x854100
-#define SVR_T1014 0x854400
-#define SVR_T1013 0x854500
-#define SVR_T2080 0x853000
-#define SVR_T2081 0x853100
-
-#define SVR_8610 0x80A000
-#define SVR_8641 0x809000
-#define SVR_8641D 0x809001
-
-#define SVR_9130 0x860001
-#define SVR_9131 0x860000
-#define SVR_9132 0x861000
-#define SVR_9232 0x861400
-
-#define SVR_Unknown 0xFFFFFF
-
-#define _GLOBAL(n) \
- .globl n; \
- n:
-
-/* Macros for setting and retrieving special purpose registers */
-
-#define stringify(s) tostring(s)
-#define tostring(s) #s
-
-#define mfdcr(rn) ({unsigned int rval; \
- asm volatile("mfdcr %0," stringify(rn) \
- : "=r" (rval)); rval; })
-#define mtdcr(rn, v) asm volatile("mtdcr " stringify(rn) ",%0" \
- : \
- : "r"(v))
-
-#define mfmsr() ({unsigned int rval; \
- asm volatile("mfmsr %0" : "=r" (rval)); rval; })
-#define mtmsr(v) asm volatile("mtmsr %0" \
- : \
- : "r"(v))
-
-#define mfspr(rn) ({unsigned int rval; \
- asm volatile("mfspr %0," stringify(rn) \
- : "=r" (rval)); rval; })
-#define mtspr(rn, v) asm volatile("mtspr " stringify(rn) ",%0" \
- : \
- : "r"(v))
-
-#define tlbie(v) asm volatile("tlbie %0 \n sync" \
- : \
- : "r"(v))
-
-/* Segment Registers */
-
-#define SR0 0
-#define SR1 1
-#define SR2 2
-#define SR3 3
-#define SR4 4
-#define SR5 5
-#define SR6 6
-#define SR7 7
-#define SR8 8
-#define SR9 9
-#define SR10 10
-#define SR11 11
-#define SR12 12
-#define SR13 13
-#define SR14 14
-#define SR15 15
-
-#ifndef __ASSEMBLY__
-
-#include <stdint.h>
-
-struct cpu_type
-{
- char name[15];
- uint32_t soc_ver;
- uint32_t num_cores;
- uint32_t mask; /* which cpu(s) actually exist */
-#ifdef CONFIG_HETROGENOUS_CLUSTERS
- uint32_t dsp_num_cores;
- uint32_t dsp_mask; /* which DSP cpu(s) actually exist */
-#endif
-};
-
-struct cpu_type* identify_cpu(uint32_t ver);
-int fixup_cpu(void);
-
-int fsl_qoriq_core_to_cluster(unsigned int core);
-int fsl_qoriq_dsp_core_to_cluster(unsigned int core);
-
-#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
-#define CPU_TYPE_ENTRY(n, v, nc) \
- { \
- .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), \
- .mask = (1 << (nc)) - 1 \
- }
-#define CPU_TYPE_ENTRY_MASK(n, v, nc, m) \
- { \
- .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), .mask = (m) \
- }
-#else
-#if defined(CONFIG_MPC83xx)
-#define CPU_TYPE_ENTRY(x) \
- { \
- #x, SPR_##x \
- }
-#endif
-#endif
-
-#ifndef CONFIG_MACH_SPECIFIC
-extern int _machine;
-extern int have_of;
-#endif /* CONFIG_MACH_SPECIFIC */
-
-/* what kind of prep workstation we are */
-extern int _prep_type;
-/*
- * This is used to identify the board type from a given PReP board
- * vendor. Board revision is also made available.
- */
-extern unsigned char ucSystemType;
-extern unsigned char ucBoardRev;
-extern unsigned char ucBoardRevMaj, ucBoardRevMin;
-
-struct task_struct;
-void start_thread(struct pt_regs* regs, unsigned long nip, unsigned long sp);
-void release_thread(struct task_struct*);
-
-/*
- * Create a new Kernel thread.
- */
-extern long kernel_thread(int (*fn)(void*), void* arg, unsigned long flags);
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* Lazy FPU handling on uni-processor */
-extern struct task_struct* last_task_used_math;
-extern struct task_struct* last_task_used_altivec;
-
-/*
- * this is the minimum allowable io space due to the location
- * of the io areas on prep (first one at 0x80000000) but
- * as soon as I get around to remapping the io areas with the BATs
- * to match the mac we can raise this. -- Cort
- */
-#define TASK_SIZE (0x80000000UL)
-
-/* This decides where the Kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
-
-typedef struct
-{
- unsigned long seg;
-} mm_segment_t;
-
-struct thread_struct
-{
- unsigned long ksp; /* Kernel stack pointer */
- unsigned long wchan; /* Event task is sleeping on */
- struct pt_regs* regs; /* Pointer to saved register state */
- mm_segment_t fs; /* for get_fs() validation */
- void* pgdir; /* root of page-table tree */
- signed long last_syscall;
- double fpr[32]; /* Complete floating point set */
- unsigned long fpscr_pad; /* fpr ... fpscr must be contiguous */
- unsigned long fpscr; /* Floating point status */
-#ifdef CONFIG_ALTIVEC
- vector128 vr[32]; /* Complete AltiVec set */
- vector128 vscr; /* AltiVec status */
- unsigned long vrsave;
-#endif /* CONFIG_ALTIVEC */
-};
-
-#define INIT_SP (sizeof(init_stack) + (unsigned long)&init_stack)
-
-#define INIT_THREAD \
- { \
- INIT_SP, /* ksp */ \
- 0, /* wchan */ \
- (struct pt_regs*)INIT_SP - 1, /* regs */ \
- KERNEL_DS, /*fs*/ \
- swapper_pg_dir, /* pgdir */ \
- 0, /* last_syscall */ \
- {0}, 0, 0 \
- }
-
-/*
- * Note: the vm_start and vm_end fields here should *not*
- * be in Kernel space. (Could vm_end == vm_start perhaps?)
- */
-#define INIT_MMAP \
- { \
- &init_mm, 0, 0x1000, NULL, \
- PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, \
- 1, NULL, NULL \
- }
-
-/*
- * Return saved PC of a blocked thread. For now, this is the "user" PC
- */
-static inline unsigned long thread_saved_pc(struct thread_struct* t)
-{
- return (t->regs) ? t->regs->nip : 0;
-}
-
-#define copy_segments(tsk, mm) \
- do \
- { \
- } while (0)
-#define release_segments(mm) \
- do \
- { \
- } while (0)
-#define forget_segments() \
- do \
- { \
- } while (0)
-
-unsigned long get_wchan(struct task_struct* p);
-
-#define KSTK_EIP(tsk) ((tsk)->thread.regs->nip)
-#define KSTK_ESP(tsk) ((tsk)->thread.regs->gpr[1])
-
-/*
- * NOTE! The task struct and the stack go together
- */
-#define THREAD_SIZE (2 * PAGE_SIZE)
-#define alloc_task_struct() \
- ((struct task_struct*)__get_free_pages(GFP_KERNEL, 1))
-#define free_task_struct(p) free_pages((unsigned long)(p), 1)
-#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count)
-
-/* in process.c - for early bootup debug -- Cort */
-int ll_printk(const char*, ...);
-void ll_puts(const char*);
-
-#define init_task (init_task_union.task)
-#define init_stack (init_task_union.stack)
-
-/* In misc.c */
-void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
-
-#endif /* ndef ASSEMBLY*/
-
-#ifdef CONFIG_MACH_SPECIFIC
-#if defined(CONFIG_8xx)
-#define _machine _MACH_8xx
-#define have_of 0
-#elif defined(CONFIG_WALNUT)
-#define _machine _MACH_walnut
-#define have_of 0
-#elif defined(CONFIG_MPC8260)
-#define _machine _MACH_8260
-#define have_of 0
-#else
-#error "Machine not defined correctly"
-#endif
-#endif /* CONFIG_MACH_SPECIFIC */
-
-#if defined(CONFIG_MPC85xx) || defined(CONFIG_440)
-#define EPAPR_MAGIC (0x45504150)
-#else
-#define EPAPR_MAGIC (0x65504150)
-#endif
-
-#endif /* __ASM_PPC_PROCESSOR_H */
diff --git a/dev/Kernel/HALKit/POWER/ppc-mmu.h b/dev/Kernel/HALKit/POWER/ppc-mmu.h
deleted file mode 100644
index 8e4b3595..00000000
--- a/dev/Kernel/HALKit/POWER/ppc-mmu.h
+++ /dev/null
@@ -1,811 +0,0 @@
-
-#ifndef _PPC_MMU_H_
-#define _PPC_MMU_H_
-
-#ifndef __ASSEMBLY__
-
-#include <stdint.h>
-
-/* Hardware Page Table Entry */
-typedef struct _PTE
-{
-#ifdef CONFIG_PPC64BRIDGE
- unsigned long long vsid : 52;
- unsigned long api : 5;
- unsigned long : 5;
- unsigned long h : 1;
- unsigned long v : 1;
- unsigned long long rpn : 52;
-#else /* CONFIG_PPC64BRIDGE */
- unsigned long v : 1; /* Entry is valid */
- unsigned long vsid : 24; /* Virtual segment identifier */
- unsigned long h : 1; /* Hash algorithm indicator */
- unsigned long api : 6; /* Abbreviated page index */
- unsigned long rpn : 20; /* Real (physical) page number */
-#endif /* CONFIG_PPC64BRIDGE */
- unsigned long : 3; /* Unused */
- unsigned long r : 1; /* Referenced */
- unsigned long c : 1; /* Changed */
- unsigned long w : 1; /* Write-thru cache mode */
- unsigned long i : 1; /* Cache inhibited */
- unsigned long m : 1; /* Memory coherence */
- unsigned long g : 1; /* Guarded */
- unsigned long : 1; /* Unused */
- unsigned long pp : 2; /* Page protection */
-} PTE;
-
-/* Values for PP (assumes Ks=0, Kp=1) */
-#define PP_RWXX 0 /* Supervisor read/write, User none */
-#define PP_RWRX 1 /* Supervisor read/write, User read */
-#define PP_RWRW 2 /* Supervisor read/write, User read/write */
-#define PP_RXRX 3 /* Supervisor read, User read */
-
-/* Segment Register */
-typedef struct _SEGREG
-{
- unsigned long t : 1; /* Normal or I/O type */
- unsigned long ks : 1; /* Supervisor 'key' (normally 0) */
- unsigned long kp : 1; /* User 'key' (normally 1) */
- unsigned long n : 1; /* No-execute */
- unsigned long : 4; /* Unused */
- unsigned long vsid : 24; /* Virtual Segment Identifier */
-} SEGREG;
-
-/* Block Address Translation (BAT) Registers */
-typedef struct _P601_BATU
-{ /* Upper part of BAT for 601 processor */
- unsigned long bepi : 15; /* Effective page index (virtual address) */
- unsigned long : 8; /* unused */
- unsigned long w : 1;
- unsigned long i : 1; /* Cache inhibit */
- unsigned long m : 1; /* Memory coherence */
- unsigned long ks : 1; /* Supervisor key (normally 0) */
- unsigned long kp : 1; /* User key (normally 1) */
- unsigned long pp : 2; /* Page access protections */
-} P601_BATU;
-
-typedef struct _BATU
-{ /* Upper part of BAT (all except 601) */
-#ifdef CONFIG_PPC64BRIDGE
- unsigned long long bepi : 47;
-#else /* CONFIG_PPC64BRIDGE */
- unsigned long bepi : 15; /* Effective page index (virtual address) */
-#endif /* CONFIG_PPC64BRIDGE */
- unsigned long : 4; /* Unused */
- unsigned long bl : 11; /* Block size mask */
- unsigned long vs : 1; /* Supervisor valid */
- unsigned long vp : 1; /* User valid */
-} BATU;
-
-typedef struct _P601_BATL
-{ /* Lower part of BAT for 601 processor */
- unsigned long brpn : 15; /* Real page index (physical address) */
- unsigned long : 10; /* Unused */
- unsigned long v : 1; /* Valid bit */
- unsigned long bl : 6; /* Block size mask */
-} P601_BATL;
-
-typedef struct _BATL
-{ /* Lower part of BAT (all except 601) */
-#ifdef CONFIG_PPC64BRIDGE
- unsigned long long brpn : 47;
-#else /* CONFIG_PPC64BRIDGE */
- unsigned long brpn : 15; /* Real page index (physical address) */
-#endif /* CONFIG_PPC64BRIDGE */
- unsigned long : 10; /* Unused */
- unsigned long w : 1; /* Write-thru cache */
- unsigned long i : 1; /* Cache inhibit */
- unsigned long m : 1; /* Memory coherence */
- unsigned long g : 1; /* Guarded (MBZ in IBAT) */
- unsigned long : 1; /* Unused */
- unsigned long pp : 2; /* Page access protections */
-} BATL;
-
-typedef struct _BAT
-{
- BATU batu; /* Upper register */
- BATL batl; /* Lower register */
-} BAT;
-
-typedef struct _P601_BAT
-{
- P601_BATU batu; /* Upper register */
- P601_BATL batl; /* Lower register */
-} P601_BAT;
-
-/*
- * Simulated two-level MMU. This structure is used by the Kernel
- * to keep track of MMU mappings and is used to update/maintain
- * the hardware HASH table which is really a cache of mappings.
- *
- * The simulated structures mimic the hardware available on other
- * platforms, notably the 80x86 and 680x0.
- */
-
-typedef struct _pte
-{
- unsigned long page_num : 20;
- unsigned long flags : 12; /* Page flags (some unused bits) */
-} pte;
-
-#define PD_SHIFT (10 + 12) /* Page directory */
-#define PD_MASK 0x02FF
-#define PT_SHIFT (12) /* Page Table */
-#define PT_MASK 0x02FF
-#define PG_SHIFT (12) /* Page Entry */
-
-/* MMU context */
-
-typedef struct _MMU_context
-{
- SEGREG segs[16]; /* Segment registers */
- pte** pmap; /* Two-level page-map structure */
-} MMU_context;
-
-extern void _tlbie(unsigned long va); /* invalidate a TLB entry */
-extern void _tlbia(void); /* invalidate all TLB entries */
-
-#ifdef CONFIG_ADDR_MAP
-extern void init_addr_map(void);
-#endif
-
-typedef enum
-{
- IBAT0 = 0,
- IBAT1,
- IBAT2,
- IBAT3,
- DBAT0,
- DBAT1,
- DBAT2,
- DBAT3,
-#ifdef CONFIG_HIGH_BATS
- IBAT4,
- IBAT5,
- IBAT6,
- IBAT7,
- DBAT4,
- DBAT5,
- DBAT6,
- DBAT7
-#endif
-} ppc_bat_t;
-
-extern int read_bat(ppc_bat_t bat, unsigned long* upper, unsigned long* lower);
-extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
-extern void print_bats(void);
-
-#endif /* __ASSEMBLY__ */
-
-#define BATU_VS 0x00000002
-#define BATU_VP 0x00000001
-#define BATU_INVALID 0x00000000
-
-#define BATL_WRITETHROUGH 0x00000040
-#define BATL_CACHEINHIBIT 0x00000020
-#define BATL_MEMCOHERENCE 0x00000010
-#define BATL_GUARDEDSTORAGE 0x00000008
-#define BATL_NO_ACCESS 0x00000000
-
-#define BATL_PP_MSK 0x00000003
-#define BATL_PP_00 0x00000000 /* No access */
-#define BATL_PP_01 0x00000001 /* Read-only */
-#define BATL_PP_10 0x00000002 /* Read-write */
-#define BATL_PP_11 0x00000003
-
-#define BATL_PP_NO_ACCESS BATL_PP_00
-#define BATL_PP_RO BATL_PP_01
-#define BATL_PP_RW BATL_PP_10
-
-/* BAT Block size values */
-#define BATU_BL_128K 0x00000000
-#define BATU_BL_256K 0x00000004
-#define BATU_BL_512K 0x0000000c
-#define BATU_BL_1M 0x0000001c
-#define BATU_BL_2M 0x0000003c
-#define BATU_BL_4M 0x0000007c
-#define BATU_BL_8M 0x000000fc
-#define BATU_BL_16M 0x000001fc
-#define BATU_BL_32M 0x000003fc
-#define BATU_BL_64M 0x000007fc
-#define BATU_BL_128M 0x00000ffc
-#define BATU_BL_256M 0x00001ffc
-
-/* Block lengths for processors that support extended block length */
-#ifdef HID0_XBSEN
-#define BATU_BL_512M 0x00003ffc
-#define BATU_BL_1G 0x00007ffc
-#define BATU_BL_2G 0x0000fffc
-#define BATU_BL_4G 0x0001fffc
-#define BATU_BL_MAX BATU_BL_4G
-#else
-#define BATU_BL_MAX BATU_BL_256M
-#endif
-
-/* BAT Access Protection */
-#define BPP_XX 0x00 /* No access */
-#define BPP_RX 0x01 /* Read only */
-#define BPP_RW 0x02 /* Read/write */
-
-/* Macros to get values from BATs, once data is in the BAT register format */
-#define BATU_VALID(x) (x & 0x3)
-#define BATU_VADDR(x) (x & 0xfffe0000)
-#define BATL_PADDR(x) ((phys_addr_t)((x & 0xfffe0000) | ((x & 0x0e00ULL) << 24) | ((x & 0x04ULL) << 30)))
-#define BATU_SIZE(x) (1ULL << (fls((x & BATU_BL_MAX) >> 2) + 17))
-
-/* bytes into BATU_BL */
-#define TO_BATU_BL(x) \
- (uint32_t)((((1ull << __ilog2_u64((uint64_t)x)) / (128 * 1024)) - 1) * 4)
-
-/* Used to set up SDR1 register */
-#define HASH_TABLE_SIZE_64K 0x00010000
-#define HASH_TABLE_SIZE_128K 0x00020000
-#define HASH_TABLE_SIZE_256K 0x00040000
-#define HASH_TABLE_SIZE_512K 0x00080000
-#define HASH_TABLE_SIZE_1M 0x00100000
-#define HASH_TABLE_SIZE_2M 0x00200000
-#define HASH_TABLE_SIZE_4M 0x00400000
-#define HASH_TABLE_MASK_64K 0x000
-#define HASH_TABLE_MASK_128K 0x001
-#define HASH_TABLE_MASK_256K 0x003
-#define HASH_TABLE_MASK_512K 0x007
-#define HASH_TABLE_MASK_1M 0x00F
-#define HASH_TABLE_MASK_2M 0x01F
-#define HASH_TABLE_MASK_4M 0x03F
-
-/* Control/status registers for the MPC8xx.
- * A write operation to these registers causes serialized access.
- * During software tablewalk, the registers used perform mask/shift-add
- * operations when written/read. A TLB entry is created when the Mx_RPN
- * is written, and the contents of several registers are used to
- * create the entry.
- */
-#define MI_CTR 784 /* Instruction TLB control register */
-#define MI_GPM 0x80000000 /* Set domain manager mode */
-#define MI_PPM 0x40000000 /* Set subpage protection */
-#define MI_CIDEF 0x20000000 /* Set cache inhibit when MMU dis */
-#define MI_RSV4I 0x08000000 /* Reserve 4 TLB entries */
-#define MI_PPCS 0x02000000 /* Use MI_RPN prob/priv state */
-#define MI_IDXMASK 0x00001f00 /* TLB index to be loaded */
-#define MI_RESETVAL 0x00000000 /* Value of register at reset */
-
-/* These are the Ks and Kp from the ppc books. For proper operation,
- * Ks = 0, Kp = 1.
- */
-#define MI_AP 786
-#define MI_Ks 0x80000000 /* Should not be set */
-#define MI_Kp 0x40000000 /* Should always be set */
-
-/* The effective page number register. When read, contains the information
- * about the last instruction TLB miss. When MI_RPN is written, bits in
- * this register are used to create the TLB entry.
- */
-#define MI_EPN 787
-#define MI_EPNMASK 0xfffff000 /* Effective page number for entry */
-#define MI_EVALID 0x00000200 /* Entry is valid */
-#define MI_ASIDMASK 0x0000000f /* ASID match value */
- /* Reset value is undefined */
-
-/* A "level 1" or "segment" or whatever you want to call it register.
- * For the instruction TLB, it contains bits that get loaded into the
- * TLB entry when the MI_RPN is written.
- */
-#define MI_TWC 789
-#define MI_APG 0x000001e0 /* Access protection group (0) */
-#define MI_GUARDED 0x00000010 /* Guarded storage */
-#define MI_PSMASK 0x0000000c /* Mask of page size bits */
-#define MI_PS8MEG 0x0000000c /* 8M page size */
-#define MI_PS512K 0x00000004 /* 512K page size */
-#define MI_PS4K_16K 0x00000000 /* 4K or 16K page size */
-#define MI_SVALID 0x00000001 /* Segment entry is valid */
- /* Reset value is undefined */
-
-/* Real page number. Defined by the pte. Writing this register
- * causes a TLB entry to be created for the instruction TLB, using
- * additional information from the MI_EPN, and MI_TWC registers.
- */
-#define MI_RPN 790
-
-/* Define an RPN value for mapping Kernel memory to large virtual
- * pages for boot initialization. This has real page number of 0,
- * large page size, shared page, cache enabled, and valid.
- * Also mark all subpages valid and write access.
- */
-#define MI_BOOTINIT 0x000001fd
-
-#define MD_CTR 792 /* Data TLB control register */
-#define MD_GPM 0x80000000 /* Set domain manager mode */
-#define MD_PPM 0x40000000 /* Set subpage protection */
-#define MD_CIDEF 0x20000000 /* Set cache inhibit when MMU dis */
-#define MD_WTDEF 0x10000000 /* Set writethrough when MMU dis */
-#define MD_RSV4I 0x08000000 /* Reserve 4 TLB entries */
-#define MD_TWAM 0x04000000 /* Use 4K page hardware assist */
-#define MD_PPCS 0x02000000 /* Use MI_RPN prob/priv state */
-#define MD_IDXMASK 0x00001f00 /* TLB index to be loaded */
-#define MD_RESETVAL 0x04000000 /* Value of register at reset */
-
-#define M_CASID 793 /* Address space ID (context) to match */
-#define MC_ASIDMASK 0x0000000f /* Bits used for ASID value */
-
-/* These are the Ks and Kp from the ppc books. For proper operation,
- * Ks = 0, Kp = 1.
- */
-#define MD_AP 794
-#define MD_Ks 0x80000000 /* Should not be set */
-#define MD_Kp 0x40000000 /* Should always be set */
-
-/* The effective page number register. When read, contains the information
- * about the last instruction TLB miss. When MD_RPN is written, bits in
- * this register are used to create the TLB entry.
- */
-#define MD_EPN 795
-#define MD_EPNMASK 0xfffff000 /* Effective page number for entry */
-#define MD_EVALID 0x00000200 /* Entry is valid */
-#define MD_ASIDMASK 0x0000000f /* ASID match value */
- /* Reset value is undefined */
-
-/* The pointer to the base address of the first level page table.
- * During a software tablewalk, reading this register provides the address
- * of the entry associated with MD_EPN.
- */
-#define M_TWB 796
-#define M_L1TB 0xfffff000 /* Level 1 table base address */
-#define M_L1INDX 0x00000ffc /* Level 1 index, when read */
- /* Reset value is undefined */
-
-/* A "level 1" or "segment" or whatever you want to call it register.
- * For the data TLB, it contains bits that get loaded into the TLB entry
- * when the MD_RPN is written. It is also provides the hardware assist
- * for finding the PTE address during software tablewalk.
- */
-#define MD_TWC 797
-#define MD_L2TB 0xfffff000 /* Level 2 table base address */
-#define MD_L2INDX 0xfffffe00 /* Level 2 index (*pte), when read */
-#define MD_APG 0x000001e0 /* Access protection group (0) */
-#define MD_GUARDED 0x00000010 /* Guarded storage */
-#define MD_PSMASK 0x0000000c /* Mask of page size bits */
-#define MD_PS8MEG 0x0000000c /* 8M page size */
-#define MD_PS512K 0x00000004 /* 512K page size */
-#define MD_PS4K_16K 0x00000000 /* 4K or 16K page size */
-#define MD_WT 0x00000002 /* Use writethrough page attribute */
-#define MD_SVALID 0x00000001 /* Segment entry is valid */
- /* Reset value is undefined */
-
-/* Real page number. Defined by the pte. Writing this register
- * causes a TLB entry to be created for the data TLB, using
- * additional information from the MD_EPN, and MD_TWC registers.
- */
-#define MD_RPN 798
-
-/* This is a temporary storage register that could be used to save
- * a processor working register during a tablewalk.
- */
-#define M_TW 799
-
-/*
- * At present, all ppc 400-class processors share a similar TLB
- * architecture. The instruction and data sides share a unified,
- * 64-entry, fully-associative TLB which is maintained totally under
- * software control. In addition, the instruction side has a
- * hardware-managed, 4-entry, fully- associative TLB which serves as a
- * first level to the shared TLB. These two TLBs are known as the UTLB
- * and ITLB, respectively.
- */
-
-#define PPC4XX_TLB_SIZE 64
-
-/*
- * TLB entries are defined by a "high" tag portion and a "low" data
- * portion. On all architectures, the data portion is 32-bits.
- *
- * TLB entries are managed entirely under software control by reading,
- * writing, and searchoing using the 4xx-specific tlbre, tlbwr, and tlbsx
- * instructions.
- */
-
-/*
- * FSL Book-E support
- */
-
-#define MAS0_TLBSEL_MSK 0x30000000
-#define MAS0_TLBSEL(x) (((x) << 28) & MAS0_TLBSEL_MSK)
-#define MAS0_ESEL_MSK 0x0FFF0000
-#define MAS0_ESEL(x) (((x) << 16) & MAS0_ESEL_MSK)
-#define MAS0_NV(x) ((x) & 0x00000FFF)
-
-#define MAS1_VALID 0x80000000
-#define MAS1_IPROT 0x40000000
-#define MAS1_TID(x) (((x) << 16) & 0x3FFF0000)
-#define MAS1_TS 0x00001000
-#define MAS1_TSIZE(x) (((x) << 7) & 0x00000F80)
-#define TSIZE_TO_BYTES(x) (1ULL << ((x) + 10))
-
-#define MAS2_EPN 0xFFFFF000
-#define MAS2_X0 0x00000040
-#define MAS2_X1 0x00000020
-#define MAS2_W 0x00000010
-#define MAS2_I 0x00000008
-#define MAS2_M 0x00000004
-#define MAS2_G 0x00000002
-#define MAS2_E 0x00000001
-
-#define MAS3_RPN 0xFFFFF000
-#define MAS3_U0 0x00000200
-#define MAS3_U1 0x00000100
-#define MAS3_U2 0x00000080
-#define MAS3_U3 0x00000040
-#define MAS3_UX 0x00000020
-#define MAS3_SX 0x00000010
-#define MAS3_UW 0x00000008
-#define MAS3_SW 0x00000004
-#define MAS3_UR 0x00000002
-#define MAS3_SR 0x00000001
-
-#define MAS4_TLBSELD(x) MAS0_TLBSEL(x)
-#define MAS4_TIDDSEL 0x000F0000
-#define MAS4_TSIZED(x) MAS1_TSIZE(x)
-#define MAS4_X0D 0x00000040
-#define MAS4_X1D 0x00000020
-#define MAS4_WD 0x00000010
-#define MAS4_ID 0x00000008
-#define MAS4_MD 0x00000004
-#define MAS4_GD 0x00000002
-#define MAS4_ED 0x00000001
-
-#define MAS6_SPID0 0x3FFF0000
-#define MAS6_SPID1 0x00007FFE
-#define MAS6_SAS 0x00000001
-#define MAS6_SPID MAS6_SPID0
-
-#define MAS7_RPN 0xFFFFFFFF
-
-#define FSL_BOOKE_MAS0(tlbsel, esel, nv) \
- (MAS0_TLBSEL(tlbsel) | MAS0_ESEL(esel) | MAS0_NV(nv))
-#define FSL_BOOKE_MAS1(v, iprot, tid, ts, tsize) \
- ((((v) << 31) & MAS1_VALID) | \
- (((iprot) << 30) & MAS1_IPROT) | \
- (MAS1_TID(tid)) | \
- (((ts) << 12) & MAS1_TS) | \
- (MAS1_TSIZE(tsize)))
-#define FSL_BOOKE_MAS2(epn, wimge) \
- (((epn) & MAS3_RPN) | (wimge))
-#define FSL_BOOKE_MAS3(rpn, user, perms) \
- (((rpn) & MAS3_RPN) | (user) | (perms))
-#define FSL_BOOKE_MAS7(rpn) \
- (((uint64_t)(rpn)) >> 32)
-
-#define BOOKE_PAGESZ_1K 0
-#define BOOKE_PAGESZ_2K 1
-#define BOOKE_PAGESZ_4K 2
-#define BOOKE_PAGESZ_8K 3
-#define BOOKE_PAGESZ_16K 4
-#define BOOKE_PAGESZ_32K 5
-#define BOOKE_PAGESZ_64K 6
-#define BOOKE_PAGESZ_128K 7
-#define BOOKE_PAGESZ_256K 8
-#define BOOKE_PAGESZ_512K 9
-#define BOOKE_PAGESZ_1M 10
-#define BOOKE_PAGESZ_2M 11
-#define BOOKE_PAGESZ_4M 12
-#define BOOKE_PAGESZ_8M 13
-#define BOOKE_PAGESZ_16M 14
-#define BOOKE_PAGESZ_32M 15
-#define BOOKE_PAGESZ_64M 16
-#define BOOKE_PAGESZ_128M 17
-#define BOOKE_PAGESZ_256M 18
-#define BOOKE_PAGESZ_512M 19
-#define BOOKE_PAGESZ_1G 20
-#define BOOKE_PAGESZ_2G 21
-#define BOOKE_PAGESZ_4G 22
-#define BOOKE_PAGESZ_8G 23
-#define BOOKE_PAGESZ_16GB 24
-#define BOOKE_PAGESZ_32GB 25
-#define BOOKE_PAGESZ_64GB 26
-#define BOOKE_PAGESZ_128GB 27
-#define BOOKE_PAGESZ_256GB 28
-#define BOOKE_PAGESZ_512GB 29
-#define BOOKE_PAGESZ_1TB 30
-#define BOOKE_PAGESZ_2TB 31
-
-#define TLBIVAX_ALL 4
-#define TLBIVAX_TLB0 0
-#define TLBIVAX_TLB1 8
-
-#ifdef CONFIG_E500
-#ifndef __ASSEMBLY__
-extern void set_tlb(uint8_t tlb, uint32_t epn, uint64_t rpn, uint8_t perms, uint8_t wimge, uint8_t ts, uint8_t esel, uint8_t tsize, uint8_t iprot);
-extern void disable_tlb(uint8_t esel);
-extern void invalidate_tlb(uint8_t tlb);
-extern void init_tlbs(void);
-extern int find_tlb_idx(void* addr, uint8_t tlbsel);
-extern void init_used_tlb_cams(void);
-extern int find_free_tlbcam(void);
-extern void print_tlbcam(void);
-
-extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg);
-extern void clear_ddr_tlbs(unsigned int memsize_in_meg);
-
-enum tlb_map_type
-{
- TLB_MAP_RAM,
- TLB_MAP_IO,
-};
-
-extern uint64_t tlb_map_range(ulong_t v_addr, phys_addr_t p_addr, uint64_t size, enum tlb_map_type map_type);
-
-extern void write_tlb(uint32_t _mas0, uint32_t _mas1, uint32_t _mas2, uint32_t _mas3, uint32_t _mas7);
-
-#define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \
- { \
- .mas0 = FSL_BOOKE_MAS0(_tlb, _esel, 0), \
- .mas1 = FSL_BOOKE_MAS1(1, _iprot, 0, _ts, _sz), \
- .mas2 = FSL_BOOKE_MAS2(_epn, _wimge), \
- .mas3 = FSL_BOOKE_MAS3(_rpn, 0, _perms), \
- .mas7 = FSL_BOOKE_MAS7(_rpn), \
- }
-
-struct fsl_e_tlb_entry
-{
- uint32_t mas0;
- uint32_t mas1;
- uint32_t mas2;
- uint32_t mas3;
- uint32_t mas7;
-};
-
-extern struct fsl_e_tlb_entry tlb_table[];
-extern int num_tlb_entries;
-#endif
-#endif
-
-#ifdef CONFIG_E300
-#define LAWAR_EN 0x80000000
-#define LAWAR_SIZE 0x0000003F
-
-#define LAWAR_TRGT_IF_PCI 0x00000000
-#define LAWAR_TRGT_IF_PCI1 0x00000000
-#define LAWAR_TRGT_IF_PCIX 0x00000000
-#define LAWAR_TRGT_IF_PCI2 0x00100000
-#define LAWAR_TRGT_IF_PCIE1 0x00200000
-#define LAWAR_TRGT_IF_PCIE2 0x00100000
-#define LAWAR_TRGT_IF_PCIE3 0x00300000
-#define LAWAR_TRGT_IF_LBC 0x00400000
-#define LAWAR_TRGT_IF_CCSR 0x00800000
-#define LAWAR_TRGT_IF_DDR_INTERLEAVED 0x00B00000
-#define LAWAR_TRGT_IF_RIO 0x00c00000
-#define LAWAR_TRGT_IF_DDR 0x00f00000
-#define LAWAR_TRGT_IF_DDR1 0x00f00000
-#define LAWAR_TRGT_IF_DDR2 0x01600000
-
-#define LAWAR_SIZE_BASE 0xa
-#define LAWAR_SIZE_4K (LAWAR_SIZE_BASE + 1)
-#define LAWAR_SIZE_8K (LAWAR_SIZE_BASE + 2)
-#define LAWAR_SIZE_16K (LAWAR_SIZE_BASE + 3)
-#define LAWAR_SIZE_32K (LAWAR_SIZE_BASE + 4)
-#define LAWAR_SIZE_64K (LAWAR_SIZE_BASE + 5)
-#define LAWAR_SIZE_128K (LAWAR_SIZE_BASE + 6)
-#define LAWAR_SIZE_256K (LAWAR_SIZE_BASE + 7)
-#define LAWAR_SIZE_512K (LAWAR_SIZE_BASE + 8)
-#define LAWAR_SIZE_1M (LAWAR_SIZE_BASE + 9)
-#define LAWAR_SIZE_2M (LAWAR_SIZE_BASE + 10)
-#define LAWAR_SIZE_4M (LAWAR_SIZE_BASE + 11)
-#define LAWAR_SIZE_8M (LAWAR_SIZE_BASE + 12)
-#define LAWAR_SIZE_16M (LAWAR_SIZE_BASE + 13)
-#define LAWAR_SIZE_32M (LAWAR_SIZE_BASE + 14)
-#define LAWAR_SIZE_64M (LAWAR_SIZE_BASE + 15)
-#define LAWAR_SIZE_128M (LAWAR_SIZE_BASE + 16)
-#define LAWAR_SIZE_256M (LAWAR_SIZE_BASE + 17)
-#define LAWAR_SIZE_512M (LAWAR_SIZE_BASE + 18)
-#define LAWAR_SIZE_1G (LAWAR_SIZE_BASE + 19)
-#define LAWAR_SIZE_2G (LAWAR_SIZE_BASE + 20)
-#define LAWAR_SIZE_4G (LAWAR_SIZE_BASE + 21)
-#define LAWAR_SIZE_8G (LAWAR_SIZE_BASE + 22)
-#define LAWAR_SIZE_16G (LAWAR_SIZE_BASE + 23)
-#define LAWAR_SIZE_32G (LAWAR_SIZE_BASE + 24)
-#endif
-
-#ifdef CONFIG_440
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-/* Some additional macros for combinations often used */
-#define SA_IG (SA_I | SA_G)
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-/* Some additional macros for combinations often used */
-#define AC_RW (AC_R | AC_W)
-#define AC_RWX (AC_R | AC_W | AC_X)
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn, sz) ((EPN((epn)) | (sz) | TLB_VALID))
-#define TLB1(rpn, erpn) (((rpn) & 0xfffffc00) | (erpn))
-#define TLB2(a) ((a) & 0x00000fbf)
-
-#define tlbtab_start \
- mflr r1; \
- bl 0f;
-
-#define tlbtab_end \
- .long 0, 0, 0; \
- 0 : mflr r0; \
- mtlr r1; \
- blr;
-
-#define tlbentry(epn, sz, rpn, erpn, attr) \
- .long TLB0(epn, sz), TLB1(rpn, erpn), TLB2(attr)
-
-/*----------------------------------------------------------------------------+
-| TLB specific defines.
-+----------------------------------------------------------------------------*/
-#define TLB_256MB_ALIGN_MASK 0xFF0000000ULL
-#define TLB_16MB_ALIGN_MASK 0xFFF000000ULL
-#define TLB_1MB_ALIGN_MASK 0xFFFF00000ULL
-#define TLB_256KB_ALIGN_MASK 0xFFFFC0000ULL
-#define TLB_64KB_ALIGN_MASK 0xFFFFF0000ULL
-#define TLB_16KB_ALIGN_MASK 0xFFFFFC000ULL
-#define TLB_4KB_ALIGN_MASK 0xFFFFFF000ULL
-#define TLB_1KB_ALIGN_MASK 0xFFFFFFC00ULL
-#define TLB_256MB_SIZE 0x10000000
-#define TLB_16MB_SIZE 0x01000000
-#define TLB_1MB_SIZE 0x00100000
-#define TLB_256KB_SIZE 0x00040000
-#define TLB_64KB_SIZE 0x00010000
-#define TLB_16KB_SIZE 0x00004000
-#define TLB_4KB_SIZE 0x00001000
-#define TLB_1KB_SIZE 0x00000400
-
-#define TLB_WORD0_EPN_MASK 0xFFFFFC00
-#define TLB_WORD0_EPN_ENCODE(n) (((unsigned long)(n)) & 0xFFFFFC00)
-#define TLB_WORD0_EPN_DECODE(n) (((unsigned long)(n)) & 0xFFFFFC00)
-#define TLB_WORD0_V_MASK 0x00000200
-#define TLB_WORD0_V_ENABLE 0x00000200
-#define TLB_WORD0_V_DISABLE 0x00000000
-#define TLB_WORD0_TS_MASK 0x00000100
-#define TLB_WORD0_TS_1 0x00000100
-#define TLB_WORD0_TS_0 0x00000000
-#define TLB_WORD0_SIZE_MASK 0x000000F0
-#define TLB_WORD0_SIZE_1KB 0x00000000
-#define TLB_WORD0_SIZE_4KB 0x00000010
-#define TLB_WORD0_SIZE_16KB 0x00000020
-#define TLB_WORD0_SIZE_64KB 0x00000030
-#define TLB_WORD0_SIZE_256KB 0x00000040
-#define TLB_WORD0_SIZE_1MB 0x00000050
-#define TLB_WORD0_SIZE_16MB 0x00000070
-#define TLB_WORD0_SIZE_256MB 0x00000090
-#define TLB_WORD0_TPAR_MASK 0x0000000F
-#define TLB_WORD0_TPAR_ENCODE(n) ((((unsigned long)(n)) & 0x0F) << 0)
-#define TLB_WORD0_TPAR_DECODE(n) ((((unsigned long)(n)) >> 0) & 0x0F)
-
-#define TLB_WORD1_RPN_MASK 0xFFFFFC00
-#define TLB_WORD1_RPN_ENCODE(n) (((unsigned long)(n)) & 0xFFFFFC00)
-#define TLB_WORD1_RPN_DECODE(n) (((unsigned long)(n)) & 0xFFFFFC00)
-#define TLB_WORD1_PAR1_MASK 0x00000300
-#define TLB_WORD1_PAR1_ENCODE(n) ((((unsigned long)(n)) & 0x03) << 8)
-#define TLB_WORD1_PAR1_DECODE(n) ((((unsigned long)(n)) >> 8) & 0x03)
-#define TLB_WORD1_PAR1_0 0x00000000
-#define TLB_WORD1_PAR1_1 0x00000100
-#define TLB_WORD1_PAR1_2 0x00000200
-#define TLB_WORD1_PAR1_3 0x00000300
-#define TLB_WORD1_ERPN_MASK 0x0000000F
-#define TLB_WORD1_ERPN_ENCODE(n) ((((unsigned long)(n)) & 0x0F) << 0)
-#define TLB_WORD1_ERPN_DECODE(n) ((((unsigned long)(n)) >> 0) & 0x0F)
-
-#define TLB_WORD2_PAR2_MASK 0xC0000000
-#define TLB_WORD2_PAR2_ENCODE(n) ((((unsigned long)(n)) & 0x03) << 30)
-#define TLB_WORD2_PAR2_DECODE(n) ((((unsigned long)(n)) >> 30) & 0x03)
-#define TLB_WORD2_PAR2_0 0x00000000
-#define TLB_WORD2_PAR2_1 0x40000000
-#define TLB_WORD2_PAR2_2 0x80000000
-#define TLB_WORD2_PAR2_3 0xC0000000
-#define TLB_WORD2_U0_MASK 0x00008000
-#define TLB_WORD2_U0_ENABLE 0x00008000
-#define TLB_WORD2_U0_DISABLE 0x00000000
-#define TLB_WORD2_U1_MASK 0x00004000
-#define TLB_WORD2_U1_ENABLE 0x00004000
-#define TLB_WORD2_U1_DISABLE 0x00000000
-#define TLB_WORD2_U2_MASK 0x00002000
-#define TLB_WORD2_U2_ENABLE 0x00002000
-#define TLB_WORD2_U2_DISABLE 0x00000000
-#define TLB_WORD2_U3_MASK 0x00001000
-#define TLB_WORD2_U3_ENABLE 0x00001000
-#define TLB_WORD2_U3_DISABLE 0x00000000
-#define TLB_WORD2_W_MASK 0x00000800
-#define TLB_WORD2_W_ENABLE 0x00000800
-#define TLB_WORD2_W_DISABLE 0x00000000
-#define TLB_WORD2_I_MASK 0x00000400
-#define TLB_WORD2_I_ENABLE 0x00000400
-#define TLB_WORD2_I_DISABLE 0x00000000
-#define TLB_WORD2_M_MASK 0x00000200
-#define TLB_WORD2_M_ENABLE 0x00000200
-#define TLB_WORD2_M_DISABLE 0x00000000
-#define TLB_WORD2_G_MASK 0x00000100
-#define TLB_WORD2_G_ENABLE 0x00000100
-#define TLB_WORD2_G_DISABLE 0x00000000
-#define TLB_WORD2_E_MASK 0x00000080
-#define TLB_WORD2_E_ENABLE 0x00000080
-#define TLB_WORD2_E_DISABLE 0x00000000
-#define TLB_WORD2_UX_MASK 0x00000020
-#define TLB_WORD2_UX_ENABLE 0x00000020
-#define TLB_WORD2_UX_DISABLE 0x00000000
-#define TLB_WORD2_UW_MASK 0x00000010
-#define TLB_WORD2_UW_ENABLE 0x00000010
-#define TLB_WORD2_UW_DISABLE 0x00000000
-#define TLB_WORD2_UR_MASK 0x00000008
-#define TLB_WORD2_UR_ENABLE 0x00000008
-#define TLB_WORD2_UR_DISABLE 0x00000000
-#define TLB_WORD2_SX_MASK 0x00000004
-#define TLB_WORD2_SX_ENABLE 0x00000004
-#define TLB_WORD2_SX_DISABLE 0x00000000
-#define TLB_WORD2_SW_MASK 0x00000002
-#define TLB_WORD2_SW_ENABLE 0x00000002
-#define TLB_WORD2_SW_DISABLE 0x00000000
-#define TLB_WORD2_SR_MASK 0x00000001
-#define TLB_WORD2_SR_ENABLE 0x00000001
-#define TLB_WORD2_SR_DISABLE 0x00000000
-
-/*----------------------------------------------------------------------------+
-| Following instructions are not available in Book E mode of the GNU assembler.
-+----------------------------------------------------------------------------*/
-#define DCCCI(ra, rb) .long 0x7c000000 | \
- (ra << 16) | (rb << 11) | (454 << 1)
-
-#define ICCCI(ra, rb) .long 0x7c000000 | \
- (ra << 16) | (rb << 11) | (966 << 1)
-
-#define DCREAD(rt, ra, rb) .long 0x7c000000 | (rt << 21) | (ra << 16) | (rb << 11) | (486 << 1)
-
-#define ICREAD(ra, rb) .long 0x7c000000 | \
- (ra << 16) | (rb << 11) | (998 << 1)
-
-#define TLBSX(rt, ra, rb) .long 0x7c000000 | (rt << 21) | (ra << 16) | (rb << 11) | (914 << 1)
-
-#define TLBWE(rs, ra, ws) .long 0x7c000000 | (rs << 21) | (ra << 16) | (ws << 11) | (978 << 1)
-
-#define TLBRE(rt, ra, ws) .long 0x7c000000 | (rt << 21) | (ra << 16) | (ws << 11) | (946 << 1)
-
-#define TLBSXDOT(rt, ra, rb) .long 0x7c000001 | (rt << 21) | (ra << 16) | (rb << 11) | (914 << 1)
-
-#define MSYNC .long 0x7c000000 | \
- (598 << 1)
-
-#define MBAR_INST .long 0x7c000000 | \
- (854 << 1)
-
-#ifndef __ASSEMBLY__
-/* Prototypes */
-void mttlb1(unsigned long index, unsigned long value);
-void mttlb2(unsigned long index, unsigned long value);
-void mttlb3(unsigned long index, unsigned long value);
-unsigned long mftlb1(unsigned long index);
-unsigned long mftlb2(unsigned long index);
-unsigned long mftlb3(unsigned long index);
-
-void program_tlb(uint64_t phys_addr, uint32_t virt_addr, uint32_t size, uint32_t tlb_word2_i_value);
-void remove_tlb(uint32_t vaddr, uint32_t size);
-void change_tlb(uint32_t vaddr, uint32_t size, uint32_t tlb_word2_i_value);
-#endif /* __ASSEMBLY__ */
-
-#endif /* CONFIG_440 */
-#endif /* _PPC_MMU_H_ */
diff --git a/dev/Kernel/HALKit/RISCV/.keep b/dev/Kernel/HALKit/RISCV/.keep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/RISCV/.keep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/RISCV/APM/.gitkeep b/dev/Kernel/HALKit/RISCV/APM/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/RISCV/APM/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/RISCV/Hart.hxx b/dev/Kernel/HALKit/RISCV/Hart.hxx
deleted file mode 100644
index 0f5e021e..00000000
--- a/dev/Kernel/HALKit/RISCV/Hart.hxx
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Hart.hxx
- Purpose: RISC-V hardware threads.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-typedef Kernel::Int32 Rv64HartType;
-
-/// @brief Set PC to specific hart.
-/// @param hart the hart
-/// @param epc the pc.
-/// @return
-EXTERN_C Kernel::Void hal_set_pc_to_hart(Rv64HartType hart, Kernel::VoidPtr epc);
diff --git a/dev/Kernel/HALKit/RISCV/ReadMe.md b/dev/Kernel/HALKit/RISCV/ReadMe.md
deleted file mode 100644
index b099aa31..00000000
--- a/dev/Kernel/HALKit/RISCV/ReadMe.md
+++ /dev/null
@@ -1,4 +0,0 @@
-RISCV64 Hardware Abstraction Layer
-
-- Supported CPU: RISCV64
-- Supported Firmware: CoreBoot \ No newline at end of file
diff --git a/dev/Kernel/HALKit/RISCV/Storage/.gitkeep b/dev/Kernel/HALKit/RISCV/Storage/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/RISCV/Storage/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/X86S/.gitkeep b/dev/Kernel/HALKit/X86S/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/X86S/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/X86S/ACPI/.gitkeep b/dev/Kernel/HALKit/X86S/ACPI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/X86S/ACPI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/X86S/Storage/.gitkeep b/dev/Kernel/HALKit/X86S/Storage/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/X86S/Storage/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/compile_flags.txt b/dev/Kernel/HALKit/compile_flags.txt
deleted file mode 100644
index 26779833..00000000
--- a/dev/Kernel/HALKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__NEWOS_AMD64__
diff --git a/dev/Kernel/HintKit/CompilerHint.hxx b/dev/Kernel/HintKit/CompilerHint.hxx
deleted file mode 100644
index f0316b50..00000000
--- a/dev/Kernel/HintKit/CompilerHint.hxx
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __HINTKIT_COMPILER_HINT_HXX__
-#define __HINTKIT_COMPILER_HINT_HXX__
-
-#pragma compiler(hint_manifest)
-
-#define _Input
-#define _Output
-
-#define _Optional
-
-#define _StrictCheckInput
-#define _StrictCheckOutput
-
-#define _InOut
-#define _StrictInOut
-
-#endif // ifndef __HINTKIT_COMPILER_HINT_HXX__
diff --git a/dev/Kernel/KernelKit/CodeManager.hxx b/dev/Kernel/KernelKit/CodeManager.hxx
deleted file mode 100644
index 08e97e60..00000000
--- a/dev/Kernel/KernelKit/CodeManager.hxx
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: CodeManager.hpp
- Purpose: Code Manager and Shared Objects.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
- 3/8/24: Add UPP struct.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/PECodeManager.hxx>
-#include <KernelKit/PEFCodeManager.hxx>
-#include <KernelKit/PEFSharedObject.hxx>
-
-namespace Kernel
-{
- /// @brief Main process entrypoint.
- typedef void (*MainKind)(void);
-
- /// @brief Executes a new process from a function. kernel code only.
- /// @note This sets up a new stack, anything on the main function that calls the kernel will not be accessible.
- /// @param main the start of the process.
- /// @return if the process was started or not.
- bool execute_from_image(MainKind main, const char* processName) noexcept;
-} // namespace Kernel \ No newline at end of file
diff --git a/dev/Kernel/KernelKit/DebugOutput.hxx b/dev/Kernel/KernelKit/DebugOutput.hxx
deleted file mode 100644
index 2205acfe..00000000
--- a/dev/Kernel/KernelKit/DebugOutput.hxx
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/DeviceManager.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-#include <NewKit/OwnPtr.hxx>
-#include <NewKit/Stream.hxx>
-
-#define kDebugMaxPorts 16
-
-#define kDebugUnboundPort 0x0FEED
-
-#define kDebugMag0 'N'
-#define kDebugMag1 'D'
-#define kDebugMag2 'B'
-#define kDebugMag3 'G'
-
-#define kDebugSourceFile 0
-#define kDebugLine 33
-#define kDebugTeam 43
-#define kDebugEOP 49
-
-namespace Kernel
-{
- class TerminalDevice;
-
- inline TerminalDevice end_line();
- inline TerminalDevice number(const Long& x);
- inline TerminalDevice hex_number(const Long& x);
-
- // @brief Emulates a VT100 terminal.
- class TerminalDevice final : public DeviceInterface<const Char*>
- {
- public:
- TerminalDevice(void (*print)(const Char*), void (*get)(const Char*))
- : DeviceInterface<const Char*>(print, get)
- {
- }
-
- virtual ~TerminalDevice() = default;
-
- /// @brief returns device name (terminal name)
- /// @return string type (const char*)
- virtual const char* Name() const override
- {
- return ("TerminalDevice");
- }
-
- NEWOS_COPY_DEFAULT(TerminalDevice);
-
- STATIC TerminalDevice The() noexcept;
- };
-
- inline TerminalDevice end_line()
- {
- TerminalDevice selfTerm = TerminalDevice::The();
- selfTerm << "\r";
- return selfTerm;
- }
-
- inline TerminalDevice carriage_return()
- {
- TerminalDevice selfTerm = TerminalDevice::The();
- selfTerm << "\r";
- return selfTerm;
- }
-
- inline TerminalDevice tabulate()
- {
- TerminalDevice selfTerm = TerminalDevice::The();
- selfTerm << "\t";
- return selfTerm;
- }
-
- /// @brief emulate a terminal bell, like the VT100 does.
- inline TerminalDevice bell()
- {
- TerminalDevice selfTerm = TerminalDevice::The();
- selfTerm << "\a";
- return selfTerm;
- }
-
- namespace Detail
- {
- inline TerminalDevice _write_number(const Long& x, TerminalDevice& term)
- {
- UInt64 y = (x > 0 ? x : -x) / 10;
- UInt64 h = (x > 0 ? x : -x) % 10;
-
- if (y)
- _write_number(y, term);
-
- /* fail if the number is not base-10 */
- if (h > 10)
- {
- _write_number('?', term);
- return term;
- }
-
- if (y < 0)
- y = -y;
-
- const char cNumbers[11] = "0123456789";
-
- Char buf[2];
- buf[0] = cNumbers[h];
- buf[1] = 0;
-
- term << buf;
- return term;
- }
-
- inline TerminalDevice _write_number_hex(const Long& x, TerminalDevice& term)
- {
- UInt64 y = (x > 0 ? x : -x) / 16;
- UInt64 h = (x > 0 ? x : -x) % 16;
-
- if (y)
- _write_number_hex(y, term);
-
- /* fail if the hex number is not base-16 */
- if (h > 15)
- {
- _write_number_hex('?', term);
- return term;
- }
-
- if (y < 0)
- y = -y;
-
- const char cNumbers[17] = "0123456789ABCDEF";
-
- Char buf[2];
- buf[0] = cNumbers[h];
- buf[1] = 0;
-
- term << buf;
- return term;
- }
- } // namespace Detail
-
- inline TerminalDevice hex_number(const Long& x)
- {
- TerminalDevice selfTerm = TerminalDevice::The();
-
- selfTerm << "0x";
- Detail::_write_number_hex(x, selfTerm);
-
- return selfTerm;
- }
-
- inline TerminalDevice number(const Long& x)
- {
- TerminalDevice selfTerm = TerminalDevice::The();
-
- Detail::_write_number(x, selfTerm);
-
- return selfTerm;
- }
-
- inline TerminalDevice get_console_in(Char* buf)
- {
- TerminalDevice selfTerm = TerminalDevice::The();
-
- selfTerm >> buf;
-
- return selfTerm;
- }
-
- typedef Char rt_debug_type[255];
-
- class DebuggerPortHeader final
- {
- public:
- Int16 fPort[kDebugMaxPorts];
- Int16 fBoundCnt;
- };
-} // namespace Kernel
-
-#ifdef kcout
-#undef kcout
-#endif // ifdef kcout
-
-#define kcout TerminalDevice::The()
-#define endl kcout << Kernel::end_line()
diff --git a/dev/Kernel/KernelKit/Defines.hxx b/dev/Kernel/KernelKit/Defines.hxx
deleted file mode 100644
index e76b1b2f..00000000
--- a/dev/Kernel/KernelKit/Defines.hxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-#define KERNELKIT_VERSION "1.02"
diff --git a/dev/Kernel/KernelKit/DeviceManager.hxx b/dev/Kernel/KernelKit/DeviceManager.hxx
deleted file mode 100644
index d9497da8..00000000
--- a/dev/Kernel/KernelKit/DeviceManager.hxx
+++ /dev/null
@@ -1,129 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/* -------------------------------------------
-
- Revision History:
-
- 31/01/24: Add kDeviceCnt (amlel)
-
- ------------------------------------------- */
-
-#pragma once
-
-/* Kernel device interface manager. */
-/* @file KernelKit/DeviceManager.hpp */
-/* @brief Device abstraction and I/O buffer. */
-
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Ref.hxx>
-
-// Last Rev
-// Wed, Apr 3, 2024 9:09:41 AM
-
-namespace Kernel
-{
- template <typename T>
- class DeviceInterface;
-
- template <typename T>
- class DeviceInterface
- {
- public:
- explicit DeviceInterface(void (*Out)(T), void (*In)(T))
- : fOut(Out), fIn(In)
- {
- }
-
- virtual ~DeviceInterface() = default;
-
- public:
- DeviceInterface& operator=(const DeviceInterface<T>&) = default;
- DeviceInterface(const DeviceInterface<T>&) = default;
-
- public:
- virtual DeviceInterface<T>& operator<<(T Data)
- {
- fOut(Data);
- return *this;
- }
-
- virtual DeviceInterface<T>& operator>>(T Data)
- {
- fIn(Data);
- return *this;
- }
-
- virtual const char* Name() const
- {
- return "DeviceInterface";
- }
-
- operator bool()
- {
- return fOut && fIn;
- }
- bool operator!()
- {
- return !fOut || !fIn;
- }
-
- private:
- void (*fOut)(T Data) = {nullptr};
- void (*fIn)(T Data) = {nullptr};
- };
-
- ///
- /// @brief Input Output Buffer
- /// Used mainly to communicate between hardware.
- ///
- template <typename T>
- class IOBuf final
- {
- public:
- explicit IOBuf(T Dat)
- : fData(Dat)
- {
- // at least pass something valid when instancating this struct.
- MUST_PASS(Dat);
- }
-
- IOBuf& operator=(const IOBuf<T>&) = default;
- IOBuf(const IOBuf<T>&) = default;
-
- ~IOBuf() = default;
-
- public:
- template <typename R>
- R operator->() const
- {
- return fData;
- }
-
- template <typename R>
- R& operator[](Size index) const
- {
- return fData[index];
- }
-
- private:
- T fData;
- };
-
- ///! @brief Device enum types.
- enum
- {
- kDeviceTypeIDE,
- kDeviceTypeEthernet,
- kDeviceTypeWiFi,
- kDeviceTypeRS232,
- kDeviceTypeSCSI,
- kDeviceTypeSHCI,
- kDeviceTypeUSB,
- kDeviceTypeMedia,
- kDeviceTypeCount,
- };
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/DriveManager.hxx b/dev/Kernel/KernelKit/DriveManager.hxx
deleted file mode 100644
index 6485f995..00000000
--- a/dev/Kernel/KernelKit/DriveManager.hxx
+++ /dev/null
@@ -1,149 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __INC_DRIVE_MANAGER_HXX__
-#define __INC_DRIVE_MANAGER_HXX__
-
-#include <KernelKit/ProcessScheduler.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/DeviceManager.hxx>
-#include <KernelKit/LPC.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-
-#define kDriveManagerCount (4U)
-
-#define kDriveInvalidID (-1)
-#define kDriveNameLen (32)
-
-namespace Kernel
-{
- enum
- {
- kInvalidDrive = -1,
- kBlockDevice = 0xAD,
- kMassStorage = 0xDA,
- kFloppyDisc = 0xCD,
- kOpticalDisc = 0xDC, // CD-ROM/DVD-ROM/Blu-Ray
- /// combine with below.
- kReadOnly = 0x10, // Read only drive
- kEPMDrive = 0x11, // Explicit Partition Map.
- kEPTDrive = 0x12, // ESP w/ EPM partition.
- kMBRDrive = 0x13, // IBM PC classic partition scheme
- kDriveCnt = 9,
- };
-
- typedef Int64 rt_drive_id_type;
-
- /// @brief Media drive trait type.
- struct DriveTrait final
- {
- Char fName[kDriveNameLen]; // /System, /Boot, //./Devices/USB...
- Int32 fKind; // fMassStorage, fFloppy, fOpticalDisc.
- rt_drive_id_type fId; // Drive id.
- Int32 fFlags; // fReadOnly, fXPMDrive, fXPTDrive
-
- /// @brief Packet drive (StorageKit compilant.)
- struct DrivePacket final
- {
- VoidPtr fPacketContent; //! packet body.
- Char fPacketMime[kDriveNameLen]; //! identify what we're sending.
- SizeT fPacketSize; //! packet size
- UInt32 fPacketCRC32; //! sanity crc, in case if good is set to false
- Boolean fPacketGood;
- Lba fLba;
- } fPacket;
-
- Void (*fInput)(DrivePacket* packetPtr);
- Void (*fOutput)(DrivePacket* packetPtr);
- Void (*fVerify)(DrivePacket* packetPtr);
- const Char* (*fDriveKind)(Void);
- };
-
- ///! drive as a device.
- typedef DriveTrait* DriveTraitPtr;
-
- /**
- * @brief Mounted drives interface.
- * @note This class has all of it's drive set to nullptr, allocate them using
- * GetAddressOf(index).
- */
- class MountpointInterface final
- {
- public:
- explicit MountpointInterface() = default;
- ~MountpointInterface() = default;
-
- NEWOS_COPY_DEFAULT(MountpointInterface);
-
- public:
- DriveTrait& A()
- {
- return mA;
- }
- DriveTrait& B()
- {
- return mB;
- }
- DriveTrait& C()
- {
- return mC;
- }
- DriveTrait& D()
- {
- return mD;
- }
-
- DriveTraitPtr GetAddressOf(Int32 index)
- {
- ErrLocal() = kErrorSuccess;
-
- switch (index)
- {
- case 0:
- return &mA;
- case 1:
- return &mB;
- case 2:
- return &mC;
- case 3:
- return &mD;
- default: {
- ErrLocal() = kErrorNoSuchDisk;
- kcout << "newoskrnl: No such disk.\n";
-
- break;
- }
- }
-
- return nullptr;
- }
-
- private:
- DriveTrait mA, mB, mC, mD;
- };
-
- /// @brief Unimplemented drive.
- /// @param pckt
- /// @return
- Void io_drv_unimplemented(DriveTrait::DrivePacket* pckt);
-
- /// @brief Gets the drive kind (ATA, SCSI, AHCI...)
- /// @param
- /// @return the drive kind (ATA, Flash, NVM)
- const Char* io_drive_kind(Void);
-
- /// @brief Makes a new drive.
- /// @return the new drive as a trait.
- DriveTrait io_construct_drive(void) noexcept;
-
- /// @brief Fetches the main drive.
- /// @return the new drive as a trait.
- DriveTrait io_construct_main_drive(void) noexcept;
-} // namespace Kernel
-
-#endif /* ifndef __INC_DRIVE_MANAGER_HXX__ */
diff --git a/dev/Kernel/KernelKit/FileManager.hxx b/dev/Kernel/KernelKit/FileManager.hxx
deleted file mode 100644
index 68fa1eb5..00000000
--- a/dev/Kernel/KernelKit/FileManager.hxx
+++ /dev/null
@@ -1,419 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/* -------------------------------------------
-
- Revision History:
-
- 31/01/24: Update documentation (amlel)
- 05/07/24: NewFS support, and fork support, updated constants and specs
- as well.
-
- ------------------------------------------- */
-
-#pragma once
-
-#ifdef __FSKIT_USE_NEWFS__
-#include <FSKit/NewFS.hxx>
-#endif // __FSKIT_USE_NEWFS__
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <HintKit/CompilerHint.hxx>
-#include <KernelKit/LPC.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/Stream.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Ref.hxx>
-
-/// @brief Filesystem manager, abstraction over mounted filesystem.
-/// Works like the VFS or IFS.
-
-#define cRestrictR "r"
-#define cRestrictRB "rb"
-#define cRestrictW "w"
-#define cRestrictWB "rw"
-#define cRestrictRWB "rwb"
-
-#define cRestrictMax 5
-
-#define node_cast(PTR) reinterpret_cast<Kernel::NodePtr>(PTR)
-
-/**
- @note Refer to first enum.
-*/
-#define cFileOpsCount 4
-#define cFileMimeGeneric "n-application-kind/all"
-
-/** @brief invalid position. (n-pos) */
-#define kNPos (SizeT)(-1);
-
-namespace Kernel
-{
- enum
- {
- cFileWriteAll = 100,
- cFileReadAll = 101,
- cFileReadChunk = 102,
- cFileWriteChunk = 103,
- cFileIOCnt = (cFileWriteChunk - cFileWriteAll) + 1,
- };
-
- /// @brief filesystem node generic type.
- struct PACKED FMNode final
- {
- VoidPtr _Unused;
- };
-
- typedef FMNode* NodePtr;
-
- /**
- @brief Filesystem Manager Interface class
- @brief Used to provide common I/O for a specific filesystem.
-*/
- class FilesystemManagerInterface
- {
- public:
- explicit FilesystemManagerInterface() = default;
- virtual ~FilesystemManagerInterface() = default;
-
- public:
- NEWOS_COPY_DEFAULT(FilesystemManagerInterface);
-
- public:
- /// @brief Mounts a new filesystem into an active state.
- /// @param interface the filesystem interface
- /// @return
- static bool Mount(FilesystemManagerInterface* interface);
-
- /// @brief Unmounts the active filesystem
- /// @return
- static FilesystemManagerInterface* Unmount();
-
- /// @brief Getter, gets the active filesystem.
- /// @return
- static FilesystemManagerInterface* GetMounted();
-
- public:
- virtual NodePtr Create(_Input const char* path) = 0;
- virtual NodePtr CreateAlias(_Input const char* path) = 0;
- virtual NodePtr CreateDirectory(_Input const char* path) = 0;
-
- public:
- virtual bool Remove(_Input const char* path) = 0;
-
- public:
- virtual NodePtr Open(_Input const char* path, _Input const char* r) = 0;
-
- public:
- virtual Void Write(_Input NodePtr node, _Input VoidPtr data, _Input Int32 flags, _Input SizeT size) = 0;
-
- virtual _Output VoidPtr Read(_Input NodePtr node,
- _Input Int32 flags,
- _Input SizeT sz) = 0;
-
- virtual Void Write(_Input const Char* name,
- _Input NodePtr node,
- _Input VoidPtr data,
- _Input Int32 flags,
- _Input SizeT size) = 0;
-
- virtual _Output VoidPtr Read(_Input const Char* name,
- _Input NodePtr node,
- _Input Int32 flags,
- _Input SizeT sz) = 0;
-
- public:
- virtual bool Seek(_Input NodePtr node, _Input SizeT off) = 0;
-
- public:
- virtual SizeT Tell(_Input NodePtr node) = 0;
- virtual bool Rewind(_Input NodePtr node) = 0;
- };
-
-#ifdef __FSKIT_USE_NEWFS__
- /**
- * @brief Based of FilesystemManagerInterface, takes care of managing NewFS
- * disks.
- */
- class NewFilesystemManager final : public FilesystemManagerInterface
- {
- public:
- explicit NewFilesystemManager();
- ~NewFilesystemManager() override;
-
- public:
- NEWOS_COPY_DEFAULT(NewFilesystemManager);
-
- public:
- NodePtr Create(const Char* path) override;
- NodePtr CreateAlias(const Char* path) override;
- NodePtr CreateDirectory(const Char* path) override;
-
- public:
- bool Remove(const Char* path) override;
- NodePtr Open(const Char* path, const Char* r) override;
- Void Write(NodePtr node, VoidPtr data, Int32 flags, SizeT sz) override;
- VoidPtr Read(NodePtr node, Int32 flags, SizeT sz) override;
- bool Seek(NodePtr node, SizeT off) override;
- SizeT Tell(NodePtr node) override;
- bool Rewind(NodePtr node) override;
-
- Void Write(_Input const Char* name,
- _Input NodePtr node,
- _Input VoidPtr data,
- _Input Int32 flags,
- _Input SizeT size) override;
-
- _Output VoidPtr Read(_Input const Char* name,
- _Input NodePtr node,
- _Input Int32 flags,
- _Input SizeT sz) override;
-
- public:
- void SetResourceFork(const char* forkName);
- void SetDataFork(const char* forkName);
-
- /// @brief Get internal parser.
- /// @return
- NewFSParser* GetParser() noexcept;
-
- private:
- NewFSParser* fImpl{nullptr};
- };
-
-#endif // ifdef __FSKIT_USE_NEWFS__
-
- /**
- * Usable FileStream
- * @tparam Encoding file encoding (char, wchar_t...)
- * @tparam FSClass Filesystem contract who takes care of it.
- */
- template <typename Encoding = char,
- typename FSClass = FilesystemManagerInterface>
- class FileStream final
- {
- public:
- explicit FileStream(const Encoding* path, const Encoding* restrict_type);
- ~FileStream();
-
- public:
- FileStream& operator=(const FileStream&);
- FileStream(const FileStream&);
-
- public:
- ErrorOr<Int64> WriteAll(const VoidPtr data) noexcept
- {
- if (this->fFileRestrict != eRestrictReadWrite &&
- this->fFileRestrict != eRestrictReadWriteBinary &&
- this->fFileRestrict != eRestrictWrite &&
- this->fFileRestrict != eRestrictWriteBinary)
- return ErrorOr<Int64>(kErrorInvalidData);
-
- if (data == nullptr)
- return ErrorOr<Int64>(kErrorInvalidData);
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- man->Write(fFile, data, cFileWriteAll);
- return ErrorOr<Int64>(0);
- }
-
- return ErrorOr<Int64>(kErrorInvalidData);
- }
-
- VoidPtr ReadAll() noexcept
- {
- if (this->fFileRestrict != eRestrictReadWrite &&
- this->fFileRestrict != eRestrictReadWriteBinary &&
- this->fFileRestrict != eRestrictRead &&
- this->fFileRestrict != eRestrictReadBinary)
- return nullptr;
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- VoidPtr ret = man->Read(fFile, cFileReadAll, 0);
- return ret;
- }
-
- return nullptr;
- }
-
- ErrorOr<Int64> WriteAll(const char* fName, const VoidPtr data) noexcept
- {
- if (this->fFileRestrict != eRestrictReadWrite &&
- this->fFileRestrict != eRestrictReadWriteBinary &&
- this->fFileRestrict != eRestrictWrite &&
- this->fFileRestrict != eRestrictWriteBinary)
- return ErrorOr<Int64>(kErrorInvalidData);
-
- if (data == nullptr)
- return ErrorOr<Int64>(kErrorInvalidData);
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- man->Write(fName, fFile, data, cFileWriteAll);
- return ErrorOr<Int64>(0);
- }
-
- return ErrorOr<Int64>(kErrorInvalidData);
- }
-
- VoidPtr Read(const char* fName) noexcept
- {
- if (this->fFileRestrict != eRestrictReadWrite &&
- this->fFileRestrict != eRestrictReadWriteBinary &&
- this->fFileRestrict != eRestrictRead &&
- this->fFileRestrict != eRestrictReadBinary)
- return nullptr;
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- VoidPtr ret = man->Read(fName, fFile, cFileReadAll, 0);
- return ret;
- }
-
- return nullptr;
- }
-
- VoidPtr Read(SizeT offset, SizeT sz)
- {
- if (this->fFileRestrict != eRestrictReadWrite &&
- this->fFileRestrict != eRestrictReadWriteBinary &&
- this->fFileRestrict != eRestrictRead &&
- this->fFileRestrict != eRestrictReadBinary)
- return nullptr;
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- man->Seek(fFile, offset);
- auto ret = man->Read(fFile, cFileReadChunk, sz);
-
- return ret;
- }
-
- return nullptr;
- }
-
- Void Write(SizeT offset, voidPtr data, SizeT sz)
- {
- if (this->fFileRestrict != eRestrictReadWrite &&
- this->fFileRestrict != eRestrictReadWriteBinary &&
- this->fFileRestrict != eRestrictWrite &&
- this->fFileRestrict != eRestrictWriteBinary)
- return;
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- man->Seek(fFile, offset);
- man->Write(fFile, data, sz, cFileReadChunk);
- }
- }
-
- public:
- /// @brief Leak node pointer.
- /// @return The node pointer.
- NodePtr Leak()
- {
- return fFile;
- }
-
- /// @brief Leak MIME.
- /// @return The MIME.
- Char* MIME() noexcept
- {
- return const_cast<char*>(fMime);
- }
-
- enum
- {
- eRestrictRead,
- eRestrictReadBinary,
- eRestrictWrite,
- eRestrictWriteBinary,
- eRestrictReadWrite,
- eRestrictReadWriteBinary,
- };
-
- private:
- NodePtr fFile{nullptr};
- Int32 fFileRestrict{};
- const Char* fMime{cFileMimeGeneric};
- };
-
- using FileStreamUTF8 = FileStream<Char>;
- using FileStreamUTF16 = FileStream<WideChar>;
-
- typedef UInt64 CursorType;
-
- /// @brief constructor
- template <typename Encoding, typename Class>
- FileStream<Encoding, Class>::FileStream(const Encoding* path,
- const Encoding* restrict_type)
- : fFile(Class::GetMounted()->Open(path, restrict_type))
- {
- static const auto cLength = 255;
-
- struct StringMap final
- {
- Char fRestrict[cLength];
- Int32 fMappedTo;
- };
-
- const SizeT cRestrictCount = cRestrictMax;
- const StringMap cRestrictList[] = {
- {
- .fRestrict = cRestrictR,
- .fMappedTo = eRestrictRead,
- },
- {
- .fRestrict = cRestrictRB,
- .fMappedTo = eRestrictReadBinary,
- },
- {
- .fRestrict = cRestrictRWB,
- .fMappedTo = eRestrictReadWriteBinary,
- },
- {
- .fRestrict = cRestrictW,
- .fMappedTo = eRestrictWrite,
- },
- {
- .fRestrict = cRestrictWB,
- .fMappedTo = eRestrictReadWrite,
- }};
-
- for (SizeT index = 0; index < cRestrictCount; ++index)
- {
- if (rt_string_cmp(restrict_type, cRestrictList[index].fRestrict,
- rt_string_len(cRestrictList[index].fRestrict)) == 0)
- {
- fFileRestrict = cRestrictList[index].fMappedTo;
- break;
- }
- }
-
- kcout << "newoskrnl: new file: " << path << ".\r";
- }
-
- /// @brief destructor
- template <typename Encoding, typename Class>
- FileStream<Encoding, Class>::~FileStream()
- {
- delete fFile;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/Framebuffer.hxx b/dev/Kernel/KernelKit/Framebuffer.hxx
deleted file mode 100644
index dac9b514..00000000
--- a/dev/Kernel/KernelKit/Framebuffer.hxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Framebuffer.hpp
- Purpose: Framebuffer object.
-
-------------------------------------------- */
-
-#ifndef __INC_FB_HPP__
-#define __INC_FB_HPP__
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- enum class FramebufferColorKind : UChar
- {
- RGB32,
- RGB16,
- RGB8,
- INVALID,
- };
-
- class FramebufferContext final
- {
- public:
- UIntPtr fBase;
- UIntPtr fBpp;
- UInt fWidth;
- UInt fHeight;
- };
-
- class Framebuffer final
- {
- public:
- explicit Framebuffer(Ref<FramebufferContext*>& addr);
- ~Framebuffer() = default;
-
- Framebuffer& operator=(const Framebuffer&) = delete;
- Framebuffer(const Framebuffer&) = default;
-
- volatile UIntPtr* operator[](const UIntPtr& pos);
-
- operator bool();
-
- const FramebufferColorKind& Color(
- const FramebufferColorKind& colour = FramebufferColorKind::INVALID);
-
- Ref<FramebufferContext*>& Leak();
-
- /// @brief Draws a rectangle inside the fb.
- /// @param width the width of it
- /// @param height the height of it
- /// @param x its x coord.
- /// @param y its y coord.
- /// @param color the color of it.
- /// @return the framebuffer object.
- Framebuffer& DrawRect(SizeT width, SizeT height, SizeT x, SizeT y, UInt32 color);
-
- /// @brief Puts a pixel on the screen.
- /// @param x where in X
- /// @param y where in Y
- /// @param color the color of it.
- /// @return the framebuffer object.
- Framebuffer& PutPixel(SizeT x, SizeT y, UInt32 color);
-
- private:
- Ref<FramebufferContext*> fFrameBufferAddr;
- FramebufferColorKind fColour;
- };
-
- /***********************************************************************************/
- /// Some common colors.
- /***********************************************************************************/
-
- extern const UInt32 kRgbRed;
- extern const UInt32 kRgbGreen;
- extern const UInt32 kRgbBlue;
- extern const UInt32 kRgbBlack;
- extern const UInt32 kRgbWhite;
-} // namespace Kernel
-
-#endif /* ifndef __INC_FB_HPP__ */
diff --git a/dev/Kernel/KernelKit/Heap.hxx b/dev/Kernel/KernelKit/Heap.hxx
deleted file mode 100644
index 0046fc58..00000000
--- a/dev/Kernel/KernelKit/Heap.hxx
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_KERNEL_HEAP_HXX_
-#define _INC_KERNEL_HEAP_HXX_
-
-// last-rev 30/01/24
-// file: KernelHeap.hxx
-// description: heap allocation for the kernel.
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- /// @brief Declare pointer as free.
- /// @param allocatedPtr the pointer.
- /// @return
- Int32 mm_delete_ke_heap(voidPtr allocatedPtr);
-
- /// @brief Declare a new size for allocatedPtr.
- /// @param allocatedPtr the pointer.
- /// @return
- voidPtr mm_realloc_ke_heap(voidPtr allocatedPtr, SizeT newSz);
-
- /// @brief Check if pointer is a valid kernel pointer.
- /// @param allocatedPtr the pointer
- /// @return if it exists.
- Boolean mm_is_valid_heap(VoidPtr allocatedPtr);
-
- /// @brief allocate chunk of memory.
- /// @param sz size of pointer
- /// @param rw read write (true to enable it)
- /// @param user is it accesible by user processes?
- /// @return The newly allocated pointer.
- voidPtr mm_new_ke_heap(const SizeT sz, const Bool rw, const Bool user);
-
- /// @brief Protect the heap with a CRC value.
- /// @param allocatedPtr pointer.
- /// @return if it valid: point has crc now., otherwise fail.
- Boolean mm_protect_ke_heap(VoidPtr allocatedPtr);
-
- /// @brief Makes a kernel heap page.
- /// @param allocatedPtr the page pointer.
- /// @return
- Int32 mm_make_ke_page(VoidPtr allocatedPtr);
-} // namespace Kernel
-
-#endif // !_INC_KERNEL_HEAP_HXX_
diff --git a/dev/Kernel/KernelKit/LPC.hxx b/dev/Kernel/KernelKit/LPC.hxx
deleted file mode 100644
index fec1d637..00000000
--- a/dev/Kernel/KernelKit/LPC.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-/// @file LPC.hxx
-/// @brief Local Process Codes.
-
-#define ErrLocalIsOk() (Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().GetLocalCode() == Kernel::kErrorSuccess)
-#define ErrLocalFailed() (Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().GetLocalCode() != Kernel::kErrorSuccess)
-#define ErrLocal() Kernel::ProcessScheduler::The().Leak().TheCurrent().Leak().GetLocalCode()
-
-namespace Kernel
-{
- typedef Int32 HError;
-
- inline constexpr HError kErrorSuccess = 0;
- inline constexpr HError kErrorExecutable = 33;
- inline constexpr HError kErrorExecutableLib = 34;
- inline constexpr HError kErrorFileNotFound = 35;
- inline constexpr HError kErrorDirectoryNotFound = 36;
- inline constexpr HError kErrorDiskReadOnly = 37;
- inline constexpr HError kErrorDiskIsFull = 38;
- inline constexpr HError kErrorProcessFault = 39;
- inline constexpr HError kErrorSocketHangUp = 40;
- inline constexpr HError kErrorThreadLocalStorage = 41;
- inline constexpr HError kErrorMath = 42;
- inline constexpr HError kErrorNoNetwork = 43;
- inline constexpr HError kErrorHeapOutOfMemory = 44;
- inline constexpr HError kErrorNoSuchDisk = 45;
- inline constexpr HError kErrorFileExists = 46;
- inline constexpr HError kErrorFormatFailed = 47;
- inline constexpr HError kErrorNetworkTimeout = 48;
- inline constexpr HError kErrorInternal = 49;
- inline constexpr HError kErrorForkAlreadyExists = 50;
- inline constexpr HError kErrorOutOfTeamSlot = 51;
- inline constexpr HError kErrorHeapNotPresent = 52;
- inline constexpr HError kErrorNoEntrypoint = 53;
- inline constexpr HError kErrorDiskIsCorrupted = 54;
- inline constexpr HError kErrorDisk = 55;
- inline constexpr HError kErrorInvalidData = 56;
- inline constexpr HError kErrorAsync = 57;
- inline constexpr HError kErrorNonBlocking = 58;
- inline constexpr HError kErrorIPC = 59;
- inline constexpr HError kErrorSign = 60;
- inline constexpr HError kErrorInvalidCreds = 61;
- inline constexpr HError kErrorUnimplemented = 0;
-
- Void err_bug_check_raise(void) noexcept;
- Boolean err_bug_check(void) noexcept;
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/LoaderInterface.hxx b/dev/Kernel/KernelKit/LoaderInterface.hxx
deleted file mode 100644
index 7dcf41d4..00000000
--- a/dev/Kernel/KernelKit/LoaderInterface.hxx
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <HintKit/CompilerHint.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/ErrorOr.hxx>
-
-namespace Kernel
-{
- /// @brief This interface is used to make loader contracts (MSCOFF, PEF).
- /// @author @Amlal-El-Mahrouss
- class LoaderInterface
- {
- public:
- explicit LoaderInterface() = default;
- virtual ~LoaderInterface() = default;
-
- NEWOS_COPY_DEFAULT(LoaderInterface);
-
- public:
- virtual _Output const char* AsString() = 0;
- virtual _Output const char* MIME() = 0;
- virtual _Output const char* Path() = 0;
- virtual _Output ErrorOr<VoidPtr> FindStart() = 0;
- virtual _Output VoidPtr FindSymbol(_Input const char* name, _Input Int32 kind) = 0;
- };
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/LockDelegate.hxx b/dev/Kernel/KernelKit/LockDelegate.hxx
deleted file mode 100644
index d678e3d4..00000000
--- a/dev/Kernel/KernelKit/LockDelegate.hxx
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Atom.hxx>
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- enum
- {
- kLockDone = 200,
- kLockTimedOut,
- };
-
- /// @brief Lock condition pointer.
- typedef Boolean* LockPtr;
-
- /// @brief Locking delegate class, hangs until limit.
- /// @tparam N the amount of cycles to wait.
- template <SizeT N>
- class LockDelegate final
- {
- public:
- LockDelegate() = delete;
-
- public:
- explicit LockDelegate(LockPtr expr)
- {
- auto spin = 0U;
-
- while (spin != N)
- {
- if (*expr)
- {
- fLockStatus | kLockDone;
- break;
- }
- }
-
- if (spin == N)
- fLockStatus | kLockTimedOut;
- }
-
- ~LockDelegate() = default;
-
- LockDelegate& operator=(const LockDelegate&) = delete;
- LockDelegate(const LockDelegate&) = delete;
-
- bool Done()
- {
- return fLockStatus[kLockDone] == kLockDone;
- }
-
- bool HasTimedOut()
- {
- return fLockStatus[kLockTimedOut] != kLockTimedOut;
- }
-
- private:
- Atom<UInt> fLockStatus;
- };
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/MP.hxx b/dev/Kernel/KernelKit/MP.hxx
deleted file mode 100644
index bc94102e..00000000
--- a/dev/Kernel/KernelKit/MP.hxx
+++ /dev/null
@@ -1,130 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __INC_MP_MANAGER_HPP__
-#define __INC_MP_MANAGER_HPP__
-
-#include <ArchKit/ArchKit.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-#include <NewKit/Ref.hxx>
-
-/// @note Last Rev Sun 28 Jul CET 2024
-/// @note Last Rev Thu, Aug 1, 2024 9:07:38 AM
-
-#define cMaxHWThreads (8U)
-
-namespace Kernel
-{
- class HardwareThread;
- class HardwareThreadScheduler;
-
- using ThreadID = UInt32;
-
- enum ThreadKind
- {
- kHartSystemReserved, // System reserved thread, well user can't use it
- kHartStandard, // user thread, cannot be used by kernel
- kHartFallback, // fallback thread, cannot be used by user if not clear or
- // used by kernel.
- kHartBoot, // The core we booted from, the mama.
- kInvalidHart,
- kHartCount,
- };
-
- typedef enum ThreadKind SmThreadKind;
- typedef ThreadID SmThreadID;
-
- ///
- /// \name HardwareThread
- /// \brief Abstraction over the CPU's core, used to run processes or threads.
- ///
-
- class HardwareThread final
- {
- public:
- explicit HardwareThread();
- ~HardwareThread();
-
- public:
- NEWOS_COPY_DEFAULT(HardwareThread)
-
- public:
- operator bool();
-
- public:
- void Wake(const bool wakeup = false) noexcept;
- void Busy(const bool busy = false) noexcept;
-
- public:
- bool Switch(HAL::StackFrame* stack);
- bool IsWakeup() noexcept;
-
- public:
- HAL::StackFrame* StackFrame() noexcept;
- const ThreadKind& Kind() noexcept;
- bool IsBusy() noexcept;
- const ThreadID& ID() noexcept;
-
- private:
- HAL::StackFrame* fStack{nullptr};
- ThreadKind fKind{ThreadKind::kInvalidHart};
- ThreadID fID{0};
- ProcessID fSourcePID{-1};
- bool fWakeup{false};
- bool fBusy{false};
-
- private:
- friend class HardwareThreadScheduler;
- };
-
- ///
- /// \name HardwareThreadScheduler
- /// \brief Class to manage the thread scheduling.
- ///
-
- class HardwareThreadScheduler final
- {
- private:
- explicit HardwareThreadScheduler();
-
- public:
- ~HardwareThreadScheduler();
- NEWOS_COPY_DEFAULT(HardwareThreadScheduler);
-
- public:
- bool Switch(HAL::StackFramePtr the);
- HAL::StackFramePtr Leak() noexcept;
-
- public:
- Ref<HardwareThread*> operator[](const SizeT& idx);
- bool operator!() noexcept;
- operator bool() noexcept;
-
- public:
- /// @brief Shared instance of the MP Manager.
- /// @return the reference to the mp manager class.
- static Ref<HardwareThreadScheduler> The();
-
- public:
- /// @brief Returns the amount of threads present in the system.
- /// @returns SizeT the amount of cores present.
- SizeT Count() noexcept;
-
- private:
- Array<HardwareThread, cMaxHWThreads> fThreadList;
- ThreadID fCurrentThread{0};
- };
-
- /// @brief wakes up thread.
- /// wakes up thread from hang.
- Void mp_wakeup_thread(HAL::StackFramePtr stack);
-
- /// @brief makes thread sleep.
- /// hooks and hangs thread to prevent code from executing.
- Void mp_hang_thread(HAL::StackFramePtr stack);
-} // namespace Kernel
-
-#endif // !__INC_MP_MANAGER_HPP__
diff --git a/dev/Kernel/KernelKit/MSDOS.hxx b/dev/Kernel/KernelKit/MSDOS.hxx
deleted file mode 100644
index 6ce11cbd..00000000
--- a/dev/Kernel/KernelKit/MSDOS.hxx
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: MSDOS.hpp
- Purpose: MS-DOS header for Kernel.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-------------------------------------------- */
-
-#ifndef __MSDOS_EXEC__
-#define __MSDOS_EXEC__
-
-#include <KernelKit/PE.hxx>
-#include <NewKit/Defines.hxx>
-
-// Last Rev
-// Sat Feb 24 CET 2024
-
-#define kMagMz0 'M'
-#define kMagMz1 'Z'
-
-typedef Kernel::UInt32 DosWord;
-typedef Kernel::Long DosLong;
-
-typedef struct _DosHeader
-{
- Kernel::UInt8 eMagic[2];
- DosWord eMagLen;
- DosWord ePagesCount;
- DosWord eCrlc;
- DosWord eCParHdr;
- DosWord eMinAlloc;
- DosWord eMaxAlloc;
- DosWord eStackSeg;
- DosWord eStackPtr;
- DosWord eChksum;
- DosWord eIp;
- DosWord eCs;
- DosWord eLfarlc;
- DosWord eOvno;
- DosWord eRes[4];
- DosWord eOemid;
- DosWord eOeminfo;
- DosWord eRes2[10];
- DosLong eLfanew;
-} DosHeader, *DosHeaderPtr;
-
-#endif /* ifndef __MSDOS_EXEC__ */
diff --git a/dev/Kernel/KernelKit/PCI/Database.hxx b/dev/Kernel/KernelKit/PCI/Database.hxx
deleted file mode 100644
index c5f3c953..00000000
--- a/dev/Kernel/KernelKit/PCI/Database.hxx
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <KernelKit/PCI/Device.hxx>
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- namespace Types
- {
- // https://wiki.osdev.org/PCI
- enum class PciDeviceKind : UChar
- {
- MassStorageController = 0x1,
- NetworkController = 0x2,
- DisplayController = 0x3,
- MultimediaController = 0x4,
- MemoryController = 0x5,
- Bridge = 0x6,
- CommunicationController = 0x7,
- GenericSystemPeripheral = 0x8,
- InputDeviceController = 0x9,
- DockingStation = 0xa,
- Processor = 0xb,
- SerialBusController = 0xc,
- WirelessController = 0xd,
- IntelligentController = 0xe,
- SatelliteCommunicationsController = 0xf,
- CoProcessor = 0x40,
- Unassgined = 0xf,
- Invalid = Unassgined,
- };
- } // namespace Types
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/PCI/Device.hxx b/dev/Kernel/KernelKit/PCI/Device.hxx
deleted file mode 100644
index a562219a..00000000
--- a/dev/Kernel/KernelKit/PCI/Device.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel::PCI
-{
- enum class PciConfigKind : UShort
- {
- ConfigAddress = 0xCF8,
- ConfigData = 0xCFC,
- Invalid = 0xFFF
- };
-
- class Device final
- {
- public:
- Device() = default;
-
- public:
- explicit Device(UShort bus, UShort device, UShort function, UShort bar);
-
- Device& operator=(const Device&) = default;
-
- Device(const Device&) = default;
-
- ~Device();
-
- public:
- UInt Read(UInt bar, Size szData);
- void Write(UInt bar, UIntPtr data, Size szData);
-
- public:
- operator bool();
-
- public:
- template <typename T>
- UInt Read(UInt bar)
- {
- static_assert(sizeof(T) <= 4, "64-bit PCI addressing is unsupported");
- return Read(bar, sizeof(T));
- }
-
- template <typename T>
- void Write(UInt bar, UIntPtr data)
- {
- static_assert(sizeof(T) <= 4, "64-bit PCI addressing is unsupported");
- Write(bar, data, sizeof(T));
- }
-
- public:
- UShort DeviceId();
- UShort VendorId();
- UShort InterfaceId();
- UChar Class();
- UChar Subclass();
- UChar ProgIf();
- UChar HeaderType();
-
- public:
- void EnableMmio();
- void BecomeBusMaster(); // for PCI-DMA, PC-DMA does not need that.
-
- UShort Vendor();
-
- private:
- UShort fBus;
- UShort fDevice;
- UShort fFunction;
- UShort fBar;
- };
-} // namespace Kernel::PCI
-
-EXTERN_C void NewOSPCISetCfgTarget(Kernel::UInt bar);
-EXTERN_C Kernel::UInt NewOSPCIReadRaw(Kernel::UInt bar);
diff --git a/dev/Kernel/KernelKit/PCI/Dma.hxx b/dev/Kernel/KernelKit/PCI/Dma.hxx
deleted file mode 100644
index 70292c19..00000000
--- a/dev/Kernel/KernelKit/PCI/Dma.hxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/DeviceManager.hxx>
-#include <KernelKit/PCI/Device.hxx>
-#include <NewKit/Array.hxx>
-#include <NewKit/OwnPtr.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- enum class DmaKind
- {
- PCI, // Bus mastering is required to be turned on. Basiaclly a request
- // control system. 64-Bit access depends on the PAE bit and the device
- // (if Double Address Cycle is available)
- ISA, // Four DMA channels 0-3; 8 bit transfers and only a megabyte of RAM.
- Invalid,
- };
-
- class DMAWrapper final
- {
- public:
- explicit DMAWrapper() = delete;
-
- public:
- explicit DMAWrapper(nullPtr) = delete;
- explicit DMAWrapper(voidPtr Ptr, DmaKind Kind = DmaKind::PCI)
- : fAddress(Ptr), fKind(Kind)
- {
- }
-
- public:
- DMAWrapper& operator=(voidPtr Ptr);
-
- public:
- DMAWrapper& operator=(const DMAWrapper&) = default;
- DMAWrapper(const DMAWrapper&) = default;
-
- public:
- ~DMAWrapper() = default;
-
- template <class T>
- T* operator->();
-
- template <class T>
- T* Get(const UIntPtr off = 0);
-
- public:
- operator bool();
- bool operator!();
-
- public:
- bool Write(const UIntPtr& bit, const UIntPtr& offset);
- UIntPtr Read(const UIntPtr& offset);
- Boolean Check(UIntPtr offset) const;
-
- public:
- UIntPtr operator[](const UIntPtr& offset);
-
- private:
- voidPtr fAddress{nullptr};
- DmaKind fKind{DmaKind::Invalid};
-
- private:
- friend class DMAFactory;
- };
-
- class DMAFactory final
- {
- public:
- static OwnPtr<IOBuf<Char*>> Construct(OwnPtr<DMAWrapper>& dma);
- };
-} // namespace Kernel
-
-#include <KernelKit/PCI/Dma.inl>
diff --git a/dev/Kernel/KernelKit/PCI/Dma.inl b/dev/Kernel/KernelKit/PCI/Dma.inl
deleted file mode 100644
index 1c164af8..00000000
--- a/dev/Kernel/KernelKit/PCI/Dma.inl
+++ /dev/null
@@ -1,20 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-namespace Kernel
-{
- template <class T>
- T* DMAWrapper::operator->()
- {
- return fAddress;
- }
-
- template <class T>
- T* DMAWrapper::Get(const UIntPtr offset)
- {
- return reinterpret_cast<T*>((UIntPtr)fAddress + offset);
- }
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/PCI/Express.hxx b/dev/Kernel/KernelKit/PCI/Express.hxx
deleted file mode 100644
index 1d6a86d0..00000000
--- a/dev/Kernel/KernelKit/PCI/Express.hxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-#define PCI_EXPRESS_BUS_COUNT (4096)
diff --git a/dev/Kernel/KernelKit/PCI/IO-Impl-AMD64.inl b/dev/Kernel/KernelKit/PCI/IO-Impl-AMD64.inl
deleted file mode 100644
index b0252e63..00000000
--- a/dev/Kernel/KernelKit/PCI/IO-Impl-AMD64.inl
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: IO-Impl-AMD64.hpp
- Purpose: I/O for AMD64.
-
- Revision History:
-
- 30/01/24: Add file. (amlel)
- 02/02/24: Update I/O routines. (amlel)
-
-------------------------------------------- */
-
-namespace Kernel
-{
- template <SizeT Sz>
- template <typename T>
- T IOArray<Sz>::In(SizeT index)
- {
- switch (sizeof(T))
- {
-#ifdef __NEWOS_AMD64__
- case 4:
- return HAL::In32(fPorts[index].Leak());
- case 2:
- return HAL::In16(fPorts[index].Leak());
- case 1:
- return HAL::In8(fPorts[index].Leak());
-#endif
- default:
- return 0xFFFF;
- }
- }
-
- template <SizeT Sz>
- template <typename T>
- void IOArray<Sz>::Out(SizeT index, T value)
- {
- switch (sizeof(T))
- {
-#ifdef __NEWOS_AMD64__
- case 4:
- HAL::Out32(fPorts[index].Leak(), value);
- case 2:
- HAL::Out16(fPorts[index].Leak(), value);
- case 1:
- HAL::Out8(fPorts[index].Leak(), value);
-#endif
- default:
- break;
- }
- }
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/PCI/IO.hxx b/dev/Kernel/KernelKit/PCI/IO.hxx
deleted file mode 100644
index a86bcc52..00000000
--- a/dev/Kernel/KernelKit/PCI/IO.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <ArchKit/ArchKit.hxx>
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- template <SizeT Sz>
- class IOArray final
- {
- public:
- IOArray() = delete;
-
- IOArray(nullPtr) = delete;
-
- explicit IOArray(Array<UShort, Sz>& ports)
- : fPorts(ports)
- {
- }
- ~IOArray()
- {
- }
-
- IOArray& operator=(const IOArray&) = default;
-
- IOArray(const IOArray&) = default;
-
- operator bool()
- {
- return !fPorts.Empty();
- }
-
- public:
- template <typename T>
- T In(SizeT index);
-
- template <typename T>
- void Out(SizeT index, T value);
-
- private:
- Array<UShort, Sz> fPorts;
- };
-
- using IOArray16 = IOArray<16>;
-} // namespace Kernel
-
-#ifdef __x86_64__
-#include <KernelKit/PCI/IO-Impl-AMD64.inl>
-#else
-#error Please provide platform specific code for the I/O
-#endif // ifdef __x86_64__
diff --git a/dev/Kernel/KernelKit/PCI/Iterator.hxx b/dev/Kernel/KernelKit/PCI/Iterator.hxx
deleted file mode 100644
index 5f2ca089..00000000
--- a/dev/Kernel/KernelKit/PCI/Iterator.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __PCI_ITERATOR_HPP__
-#define __PCI_ITERATOR_HPP__
-
-#include <KernelKit/PCI/Database.hxx>
-#include <KernelKit/PCI/Device.hxx>
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-
-#define NEWOS_BUS_COUNT (256)
-#define NEWOS_DEVICE_COUNT (33)
-#define NEWOS_FUNCTION_COUNT (8)
-
-namespace Kernel::PCI
-{
- class Iterator final
- {
- public:
- Iterator() = delete;
-
- public:
- explicit Iterator(const Types::PciDeviceKind& deviceType);
-
- Iterator& operator=(const Iterator&) = default;
- Iterator(const Iterator&) = default;
-
- ~Iterator();
-
- public:
- Ref<PCI::Device> operator[](const Size& sz);
-
- private:
- Array<PCI::Device, NEWOS_BUS_COUNT> fDevices;
- };
-} // namespace Kernel::PCI
-
-#endif // __PCI_ITERATOR_HPP__
diff --git a/dev/Kernel/KernelKit/PCI/PCI.hxx b/dev/Kernel/KernelKit/PCI/PCI.hxx
deleted file mode 100644
index 8654defa..00000000
--- a/dev/Kernel/KernelKit/PCI/PCI.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-#define cPCIConfigAddressPort (0xCF8)
-#define cPCIConfigDataPort (0xCFC)
-
-#define cPCIDeviceCount (32)
-#define cPCIFuncCount (8)
-#define cPCIBusCount (255)
-
-namespace Kernel::PCI
-{
- // model
- struct DeviceHeader
- {
- UInt16 VendorId;
- UInt16 DeviceId;
- UInt8 Command;
- UInt8 Status;
- UInt8 RevisionId;
- UInt8 ProgIf;
- UInt8 SubClass;
- UInt8 Class;
- UInt8 CacheLineSz;
- UInt8 LatencyTimer;
- UInt8 HeaderType;
- UInt8 Bist;
- UInt8 Bus;
- UInt8 Device;
- UInt8 Function;
- };
-
- namespace Detail
- {
- class BAR
- {
- public:
- UIntPtr BAR;
- SizeT Size;
- };
- } // namespace Detail
-
- class BAR
- {
- public:
- Detail::BAR BAR1;
- Detail::BAR BAR2;
- Detail::BAR BAR3;
- Detail::BAR BAR4;
- Detail::BAR BAR5;
- };
-} // namespace Kernel::PCI
diff --git a/dev/Kernel/KernelKit/PE.hxx b/dev/Kernel/KernelKit/PE.hxx
deleted file mode 100644
index 11cc564e..00000000
--- a/dev/Kernel/KernelKit/PE.hxx
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: PE.hxx
- Purpose: Portable Executable for Kernel.
-
- Revision History:
-
- 30/01/24: Added file (amlel)
-
-------------------------------------------- */
-
-#ifndef __KERNELKIT_INC_PE_HXX__
-#define __KERNELKIT_INC_PE_HXX__
-
-#include <NewKit/Defines.hxx>
-
-#define kPeMagic 0x00004550
-
-#define kMagPE32 0x010b
-#define kMagPE64 0x020b
-
-#define kPeMachineAMD64 0x8664
-#define kPeMachineARM64 0xaa64
-
-typedef struct ExecHeader final
-{
- Kernel::UInt32 mSignature;
- Kernel::UInt16 mMachine;
- Kernel::UInt16 mNumberOfSections;
- Kernel::UInt32 mTimeDateStamp;
- Kernel::UInt32 mPointerToSymbolTable;
- Kernel::UInt32 mNumberOfSymbols;
- Kernel::UInt16 mSizeOfOptionalHeader;
- Kernel::UInt16 mCharacteristics;
-} ExecHeader, *ExecHeaderPtr;
-
-typedef struct ExecOptionalHeader final
-{
- Kernel::UInt16 mMagic; // 0x010b - PE32, 0x020b - PE32+ (64 bit)
- Kernel::UInt8 mMajorLinkerVersion;
- Kernel::UInt8 mMinorLinkerVersion;
- Kernel::UInt32 mSizeOfCode;
- Kernel::UInt32 mSizeOfInitializedData;
- Kernel::UInt32 mSizeOfUninitializedData;
- Kernel::UInt32 mAddressOfEntryPoint;
- Kernel::UInt32 mBaseOfCode;
- Kernel::UInt32 mBaseOfData;
- Kernel::UInt32 mImageBase;
- Kernel::UInt32 mSectionAlignment;
- Kernel::UInt32 mFileAlignment;
- Kernel::UInt16 mMajorOperatingSystemVersion;
- Kernel::UInt16 mMinorOperatingSystemVersion;
- Kernel::UInt16 mMajorImageVersion;
- Kernel::UInt16 mMinorImageVersion;
- Kernel::UInt16 mMajorSubsystemVersion;
- Kernel::UInt16 mMinorSubsystemVersion;
- Kernel::UInt32 mWin32VersionValue;
- Kernel::UInt32 mSizeOfImage;
- Kernel::UInt32 mSizeOfHeaders;
- Kernel::UInt32 mCheckSum;
- Kernel::UInt16 mSubsystem;
- Kernel::UInt16 mDllCharacteristics;
- Kernel::UInt32 mSizeOfStackReserve;
- Kernel::UInt32 mSizeOfStackCommit;
- Kernel::UInt32 mSizeOfHeapReserve;
- Kernel::UInt32 mSizeOfHeapCommit;
- Kernel::UInt32 mLoaderFlags;
- Kernel::UInt32 mNumberOfRvaAndSizes;
-} ExecOptionalHeader, *ExecOptionalHeaderPtr;
-
-typedef struct ExecSectionHeader final
-{
- Kernel::Char mName[8];
- Kernel::UInt32 mVirtualSize;
- Kernel::UInt32 mVirtualAddress;
- Kernel::UInt32 mSizeOfRawData;
- Kernel::UInt32 mPointerToRawData;
- Kernel::UInt32 mPointerToRelocations;
- Kernel::UInt32 mPointerToLineNumbers;
- Kernel::UInt16 mNumberOfRelocations;
- Kernel::UInt16 mNumberOfLinenumbers;
- Kernel::UInt32 mCharacteristics;
-} ExecSectionHeader, *ExecSectionHeaderPtr;
-
-enum kExecDataDirParams
-{
- kExecExport,
- kExecImport,
- kExecInvalid,
- kExecCount,
-};
-
-typedef struct ExecExportDirectory
-{
- Kernel::UInt32 mCharacteristics;
- Kernel::UInt32 mTimeDateStamp;
- Kernel::UInt16 mMajorVersion;
- Kernel::UInt16 mMinorVersion;
- Kernel::UInt32 mName;
- Kernel::UInt32 mBase;
- Kernel::UInt32 mNumberOfFunctions;
- Kernel::UInt32 mNumberOfNames;
- Kernel::UInt32 mAddressOfFunctions; // export table rva
- Kernel::UInt32 mAddressOfNames;
- Kernel::UInt32 mAddressOfNameOrdinal; // ordinal table rva
-} ExecExportDirectory, *ExecExportDirectoryPtr;
-
-typedef struct ExecImportDirectory
-{
- union {
- Kernel::UInt32 mCharacteristics;
- Kernel::UInt32 mOriginalFirstThunk;
- };
- Kernel::UInt32 mTimeDateStamp;
- Kernel::UInt32 mForwarderChain;
- Kernel::UInt32 mNameRva;
- Kernel::UInt32 mThunkTableRva;
-} ExecImportDirectory, *ExecImportDirectoryPtr;
-
-typedef struct ExecDataDirectory {
- Kernel::UInt32 VirtualAddress;
- Kernel::UInt32 Size;
-} ExecDataDirectory, *ExecDataDirectoryPtr;
-
-typedef struct ExecImageHeader {
- ExecHeader mHeader;
- ExecOptionalHeader mOptHdr;
-} ExecImageHeader, *ExecImageHeaderPtr;
-
-enum
-{
- eUserSection = 0x00000020,
-};
-
-#endif /* ifndef __KERNELKIT_INC_PE_HXX__ */
diff --git a/dev/Kernel/KernelKit/PECodeManager.hxx b/dev/Kernel/KernelKit/PECodeManager.hxx
deleted file mode 100644
index f42c7c21..00000000
--- a/dev/Kernel/KernelKit/PECodeManager.hxx
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: PECodeManager.hxx
- Purpose: PE32+ Code Manager and Shared Objects.
-
- Revision History:
-
- 12/02/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-////////////////////////////////////////////////////
-
-// LAST REV: Mon Feb 12 13:52:01 CET 2024
-
-////////////////////////////////////////////////////
-
-#include <KernelKit/PE.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/String.hxx>
diff --git a/dev/Kernel/KernelKit/PEF.hxx b/dev/Kernel/KernelKit/PEF.hxx
deleted file mode 100644
index d02cd4f9..00000000
--- a/dev/Kernel/KernelKit/PEF.hxx
+++ /dev/null
@@ -1,115 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: PEF.hxx
- Purpose: Preferred Executable Format for Kernel.
-
- Revision History:
-
- ?/?/23: Added file (amlel)
-
-------------------------------------------- */
-
-#ifndef __KERNELKIT_INC_PEF_HXX__
-#define __KERNELKIT_INC_PEF_HXX__
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <KernelKit/LoaderInterface.hxx>
-#include <NewKit/Defines.hxx>
-
-#define kPefMagic "Joy!"
-#define kPefMagicFat "yoJ!"
-
-#define kPefMagicLen 5
-
-#define kPefVersion 3
-#define kPefNameLen 255
-
-namespace Kernel
-{
- enum
- {
- kPefArchIntel86S,
- kPefArchAMD64,
- kPefArchRISCV,
- kPefArch64x0, /* 64x0. ISA */
- kPefArch32x0, /* 32x0. ISA */
- kPefArchPowerPC,
- kPefArchARM64,
- kPefArchCount = (kPefArchPowerPC - kPefArchIntel86S) + 1,
- kPefArchInvalid = 0xFF,
- };
-
- enum
- {
- kPefSubArchAMD,
- kPefSubArchIntel,
- kPefSubArchGeneric,
- kPefSubArchIBM,
- };
-
- enum
- {
- kPefKindExec = 1, /* .exe */
- kPefKindSharedObject = 2, /* .lib */
- kPefKindObject = 4, /* .obj */
- kPefKindDebug = 5, /* .dbg */
- kPefKindDriver = 6,
- kPefKindCount,
- };
-
- typedef struct PEFContainer final
- {
- Char Magic[kPefMagicLen];
- UInt32 Linker;
- UInt32 Version;
- UInt32 Kind;
- UInt32 Abi;
- UInt32 Cpu;
- UInt32 SubCpu; /* Cpu specific information */
- UIntPtr Start;
- SizeT HdrSz; /* Size of header */
- SizeT Count; /* container header count */
- } PACKED PEFContainer;
-
- /* First PEFCommandHeader starts after PEFContainer */
-
- typedef struct PEFCommandHeader final
- {
- Char Name[kPefNameLen]; /* container name */
- UInt32 Cpu; /* container cpu */
- UInt32 SubCpu; /* container sub-cpu */
- UInt32 Flags; /* container flags */
- UInt16 Kind; /* container kind */
- UIntPtr Offset; /* content offset */
- SizeT Size; /* content Size */
- } PACKED PEFCommandHeader;
-
- enum
- {
- kPefCode = 0xC,
- kPefData = 0xD,
- kPefZero = 0xE,
- kPefLinkerID = 0x1,
- };
-} // namespace Kernel
-
-/* not mandatory, only for non fork based filesystems */
-#define kPefExt ".exe"
-#define kPefDylibExt ".dll"
-#define kPefLibExt ".lib"
-#define kPefObjectExt ".obj"
-#define kPefDebugExt ".dbg"
-
-// Kernel System Binary Interface.
-#define kPefAbi (0x5046)
-
-#define kPefBaseOrigin (0x40000000)
-
-#define kPefStart "__ImageStart"
-
-#define kPefForkKind kPefMagic
-#define kPefForkKindFAT kPefMagicFat
-
-#endif /* ifndef __KERNELKIT_INC_PEF_HXX__ */
diff --git a/dev/Kernel/KernelKit/PEFCodeManager.hxx b/dev/Kernel/KernelKit/PEFCodeManager.hxx
deleted file mode 100644
index 325ca9a3..00000000
--- a/dev/Kernel/KernelKit/PEFCodeManager.hxx
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_CODE_MANAGER_PEF_HXX_
-#define _INC_CODE_MANAGER_PEF_HXX_
-
-#include <KernelKit/PEF.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/String.hxx>
-#include <KernelKit/FileManager.hxx>
-
-#define kPefApplicationMime "application/x-newos-exec"
-
-namespace Kernel
-{
- ///
- /// \name PEFLoader
- /// \brief PEF loader class.
- ///
- class PEFLoader : public LoaderInterface
- {
- private:
- explicit PEFLoader() = delete;
-
- public:
- explicit PEFLoader(const VoidPtr blob);
- explicit PEFLoader(const Char* path);
- ~PEFLoader() override;
-
- public:
- NEWOS_COPY_DEFAULT(PEFLoader);
-
- public:
- const char* Path() override;
- const char* AsString() override;
- const char* MIME() override;
-
- public:
- ErrorOr<VoidPtr> FindStart() override;
- VoidPtr FindSymbol(const char* name, Int32 kind) override;
-
- public:
- bool IsLoaded() noexcept;
-
- private:
- OwnPtr<FileStream<Char>> fFile;
- Ref<StringView> fPath;
- VoidPtr fCachedBlob;
- bool fFatBinary;
- bool fBad;
- };
-
- namespace Utils
- {
- bool execute_from_image(PEFLoader& exec, const Int32& procKind) noexcept;
- } // namespace Utils
-} // namespace Kernel
-
-#endif // ifndef _INC_CODE_MANAGER_PEF_HXX_
diff --git a/dev/Kernel/KernelKit/PEFSharedObject.hxx b/dev/Kernel/KernelKit/PEFSharedObject.hxx
deleted file mode 100644
index 2ce87c1d..00000000
--- a/dev/Kernel/KernelKit/PEFSharedObject.hxx
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * ========================================================
- *
- * Kernel
- * Copyright ZKA Technologies., all rights reserved.
- *
- * ========================================================
- */
-
-#ifndef __KERNELKIT_SHARED_OBJECT_HXX__
-#define __KERNELKIT_SHARED_OBJECT_HXX__
-
-#include <KernelKit/LoaderInterface.hxx>
-#include <KernelKit/PEF.hxx>
-#include <KernelKit/PEFCodeManager.hxx>
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- /// @brief Pure implementation, missing method/function handler.
- extern "C" void __mh_purecall(void);
-
- /**
- * @brief Shared Library class
- * Load library from this class
- */
- class PEFSharedObjectInterface final
- {
- public:
- struct PEF_SHARED_OBJECT_TRAITS final
- {
- VoidPtr fImageObject{nullptr};
- VoidPtr fImageEntrypointOffset{nullptr};
-
- Bool IsValid() { return fImageObject && fImageEntrypointOffset; }
- };
-
- public:
- explicit PEFSharedObjectInterface() = default;
- ~PEFSharedObjectInterface() = default;
-
- public:
- NEWOS_COPY_DEFAULT(PEFSharedObjectInterface);
-
- private:
- PEF_SHARED_OBJECT_TRAITS* fMounted{nullptr};
-
- public:
- PEF_SHARED_OBJECT_TRAITS** GetAddressOf()
- {
- return &fMounted;
- }
-
- PEF_SHARED_OBJECT_TRAITS* Get()
- {
- return fMounted;
- }
-
- public:
- void Mount(PEF_SHARED_OBJECT_TRAITS* to_mount)
- {
- if (!to_mount || !to_mount->fImageObject)
- return;
-
- fMounted = to_mount;
-
- if (fLoader && to_mount)
- {
- delete fLoader;
- fLoader = nullptr;
- }
-
- if (!fLoader)
- {
- fLoader = new PEFLoader(fMounted->fImageObject);
- }
- }
-
- void Unmount()
- {
- if (fMounted)
- fMounted = nullptr;
- };
-
- template <typename SymbolType>
- SymbolType Load(const char* symbol_name, SizeT len, Int32 kind)
- {
- if (symbol_name == nullptr || *symbol_name == 0)
- return nullptr;
- if (len > kPathLen || len < 1)
- return nullptr;
-
- auto ret =
- reinterpret_cast<SymbolType>(fLoader->FindSymbol(symbol_name, kind));
-
- if (!ret)
- {
- if (kind == kPefCode)
- return (VoidPtr)__mh_purecall;
-
- return nullptr;
- }
-
- return ret;
- }
-
- private:
- PEFLoader* fLoader{nullptr};
- };
-
- typedef PEFSharedObjectInterface* SharedObjectPtr;
-
- EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header);
- EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectPtr lib, Bool* successful);
-} // namespace Kernel
-
-#endif /* ifndef __KERNELKIT_SHARED_OBJECT_HXX__ */
-
diff --git a/dev/Kernel/KernelKit/ProcessHeap.hxx b/dev/Kernel/KernelKit/ProcessHeap.hxx
deleted file mode 100644
index b6b6352c..00000000
--- a/dev/Kernel/KernelKit/ProcessHeap.hxx
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Array.hxx>
-#include <NewKit/ArrayList.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/PageManager.hxx>
-#include <NewKit/Ref.hxx>
-#include <NewKit/Pmm.hxx>
-
-/// @version 5/11/23
-/// @file ProcessHeap.hxx
-/// @brief Process heap allocator.
-
-#define kProcessHeapMag (0xFAF0FEF0)
-
-namespace Kernel
-{
- typedef enum
- {
- /// @brief Shared heap.
- kProcessHeapShared = 0x4,
- /// @brief User and private heap.
- kProcessHeapUser = 0x6,
- /// @brief Read and Write heap.
- kProcessHeapRw = 0x8,
- } UserHeapFlags;
-
- /// @brief Allocate a process heap, no zero out is done here.
- /// @param flags the heap's flags.
- /// @param len_in_gib the heap in GB.
- /// @return The process's heap.
- VoidPtr sched_new_heap(Int32 flags, SizeT len_in_gib);
-
- /// @brief Frees the process heap.
- /// @param pointer The process heap pointer.
- /// @return status code of the freeing.
- Int32 sched_free_heap(voidPtr pointer);
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/ProcessScheduler.hxx b/dev/Kernel/KernelKit/ProcessScheduler.hxx
deleted file mode 100644
index 277334cc..00000000
--- a/dev/Kernel/KernelKit/ProcessScheduler.hxx
+++ /dev/null
@@ -1,302 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_PROCESS_SCHEDULER_HXX_
-#define _INC_PROCESS_SCHEDULER_HXX_
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/LockDelegate.hxx>
-#include <KernelKit/User.hxx>
-#include <KernelKit/ProcessHeap.hxx>
-#include <NewKit/MutableArray.hxx>
-
-#define kSchedMinMicroTime (AffinityKind::kStandard)
-#define kSchedInvalidPID (-1)
-
-#define kSchedProcessLimitPerTeam (16U)
-
-////////////////////////////////////////////////////
-
-// LAST REV: Mon Feb 12 13:52:01 CET 2024
-
-////////////////////////////////////////////////////
-
-namespace Kernel
-{
- //! @brief Forward declarations.
- struct PROCESS_HEADER_BLOCK;
-
- class PEFSharedObjectInterface;
- class ProcessTeam;
- class ProcessScheduler;
- class ProcessHelper;
-
- //! @brief Process identifier.
- typedef Int64 ProcessID;
-
- //! @brief Process name length.
- inline constexpr SizeT kProcessLen = 256U;
-
-
- //! @brief Process status enum.
- enum class ProcessStatus : Int32
- {
- kStarting,
- kRunning,
- kKilled,
- kFrozen,
- kDead
- };
-
- //! @brief Affinity is the amount of nano-seconds this process is going
- //! to run.
- enum class AffinityKind : Int32
- {
- kInvalid = 300,
- kVeryHigh = 250,
- kHigh = 200,
- kStandard = 150,
- kLowUsage = 100,
- kVeryLowUsage = 50,
- };
-
- // operator overloading.
-
- inline bool operator<(AffinityKind lhs, AffinityKind rhs)
- {
- Int32 lhs_int = static_cast<Int>(lhs);
- Int32 rhs_int = static_cast<Int>(rhs);
-
- return lhs_int < rhs_int;
- }
-
- inline bool operator>(AffinityKind lhs, AffinityKind rhs)
- {
- Int32 lhs_int = static_cast<Int>(lhs);
- Int32 rhs_int = static_cast<Int>(rhs);
-
- return lhs_int > rhs_int;
- }
-
- inline bool operator<=(AffinityKind lhs, AffinityKind rhs)
- {
- Int32 lhs_int = static_cast<Int>(lhs);
- Int32 rhs_int = static_cast<Int>(rhs);
-
- return lhs_int <= rhs_int;
- }
-
- inline bool operator>=(AffinityKind lhs, AffinityKind rhs)
- {
- Int32 lhs_int = static_cast<Int>(lhs);
- Int32 rhs_int = static_cast<Int>(rhs);
-
- return lhs_int >= rhs_int;
- }
-
- // end of operator overloading.
-
- enum ProcessSubsystemEnum
- {
- eProcessSubsystemSecurity,
- eProcessSubsystemNative,
- eProcessSubsystemInvalid,
- eProcessSubsystemCount,
- };
-
- using ProcessSubsystem = ProcessSubsystemEnum;
- using ProcessTime = UInt64;
- using PID = Int64;
-
- // for permission manager, tells where we run the code.
- enum class ProcessLevelRing : Int32
- {
- kRingStdUser = 1,
- kRingSuperUser = 2,
- kRingGuestUser = 5,
- kRingCount = 5,
- };
-
- // Helper types.
- using ImagePtr = VoidPtr;
- using HeapPtrKind = VoidPtr;
-
- /// @name PROCESS_HEADER_BLOCK
- /// @brief Process Header (PHB). Holds information about the running process. Thread execution the THREAD_INFORMATION_BLOCK.
- struct PROCESS_HEADER_BLOCK final
- {
- public:
- explicit PROCESS_HEADER_BLOCK(VoidPtr startImage = nullptr)
- : Image(startImage)
- {
- }
-
- ~PROCESS_HEADER_BLOCK() = default;
-
- NEWOS_COPY_DEFAULT(PROCESS_HEADER_BLOCK)
-
- public:
- void SetEntrypoint(UIntPtr& imageStart) noexcept;
- const Int32& GetExitCode() noexcept;
-
- public:
- Char Name[kProcessLen] = {"PROCESS"};
- ProcessSubsystem SubSystem{ProcessSubsystem::eProcessSubsystemInvalid};
- ProcessLevelRing Selector{ProcessLevelRing::kRingStdUser};
- HAL::StackFramePtr StackFrame{nullptr};
- AffinityKind Affinity{AffinityKind::kStandard};
- ProcessStatus Status{ProcessStatus::kDead};
-
- // Memory, images pointers.
- HeapPtrKind HeapCursor{nullptr};
- ImagePtr Image{nullptr};
- HeapPtrKind HeapPtr{nullptr};
-
- // shared library handle, reserved for kSharedObjectKind types of executables only.
- PEFSharedObjectInterface* DLLPtr{nullptr};
-
- // Memory usage.
- SizeT UsedMemory{0};
- SizeT FreeMemory{0};
- SizeT SizeMemory{gib_cast(4)};
-
- enum
- {
- kAppKind = 1,
- kSharedObjectKind = 2,
- kKindCount,
- };
-
- ProcessTime PTime{0};
- PID ProcessId{kSchedInvalidPID};
- Int32 Kind{kAppKind};
-
- public:
- //! @brief boolean operator, check status.
- operator bool()
- {
- return Status != ProcessStatus::kDead;
- }
-
- ///! @brief Crashes the app, exits with code ~0.
- Void Crash();
-
- ///! @brief Exits the app.
- Void Exit(const Int32& exit_code = 0);
-
- ///! @brief TLS allocate.
- ///! @param sz size of new ptr.
- VoidPtr New(const SizeT& sz);
-
- ///! @brief TLS free.
- ///! @param ptr the pointer to free.
- ///! @param sz the size of it.
- Boolean Delete(VoidPtr ptr, const SizeT& sz);
-
- ///! @brief Wakes up threads.
- Void Wake(const bool wakeup = false);
-
- // PROCESS_HEADER_BLOCK getters.
- public:
- ///! @brief Get the process's name
- ///! @example 'C Runtime Library'
- const Char* GetProcessName() noexcept;
-
- //! @brief return local error code of process.
- //! @return Int32 local error code.
- Int32& GetLocalCode() noexcept;
-
- const ProcessLevelRing& GetLevelRing() noexcept;
- const ProcessStatus& GetStatus() noexcept;
- const AffinityKind& GetAffinity() noexcept;
-
- private:
- Int32 fLastExitCode{0};
- Int32 fLocalCode{0};
-
- friend ProcessScheduler;
- friend ProcessHelper;
- };
-
- /// \brief Processs Team (contains multiple processes inside it.)
- /// Equivalent to a process batch
- class ProcessTeam final
- {
- public:
- explicit ProcessTeam() = default;
- ~ProcessTeam() = default;
-
- NEWOS_COPY_DEFAULT(ProcessTeam);
-
- MutableArray<Ref<PROCESS_HEADER_BLOCK>>& AsArray();
- Ref<PROCESS_HEADER_BLOCK>& AsRef();
- UInt64& Id() noexcept;
-
- public:
- MutableArray<Ref<PROCESS_HEADER_BLOCK>> mProcessList;
- Ref<PROCESS_HEADER_BLOCK> mCurrentProcess;
- UInt64 mTeamId{0};
- };
-
- using ProcessHeaderRef = PROCESS_HEADER_BLOCK*;
-
- /// @brief PROCESS_HEADER_BLOCK manager class.
- /// The main class which you call to schedule an app.
- class ProcessScheduler final
- {
- explicit ProcessScheduler() = default;
-
- public:
- ~ProcessScheduler() = default;
-
- NEWOS_COPY_DEFAULT(ProcessScheduler)
-
- operator bool();
- bool operator!();
-
- public:
- ProcessTeam& CurrentTeam();
-
- public:
- SizeT Add(Ref<PROCESS_HEADER_BLOCK>& processRef);
- Bool Remove(SizeT processSlot);
-
- public:
- Ref<PROCESS_HEADER_BLOCK>& TheCurrent();
- SizeT Run() noexcept;
-
- public:
- STATIC Ref<ProcessScheduler>& The();
-
- private:
- ProcessTeam mTeam;
- };
-
- /*
- * Just a helper class, which contains some utilities for the scheduler.
- */
-
- class ProcessHelper final
- {
- public:
- STATIC bool Switch(HAL::StackFrame* newStack, const PID& newPid);
- STATIC bool CanBeScheduled(Ref<PROCESS_HEADER_BLOCK>& process);
- STATIC PID& TheCurrentPID();
- STATIC SizeT StartScheduling();
- };
-
- const Int32& sched_get_exit_code(void) noexcept;
-} // namespace Kernel
-
-#include <KernelKit/ThreadLocalStorage.hxx>
-
-////////////////////////////////////////////////////
-
-// END
-
-////////////////////////////////////////////////////
-
-#endif /* ifndef _INC_PROCESS_SCHEDULER_HXX_ */
diff --git a/dev/Kernel/KernelKit/RLE.hxx b/dev/Kernel/KernelKit/RLE.hxx
deleted file mode 100644
index 31e37619..00000000
--- a/dev/Kernel/KernelKit/RLE.hxx
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __KERNELKIT_RLE_HXX__
-#define __KERNELKIT_RLE_HXX__
-
-#include <NewKit/Defines.hxx>
-
-EXTERN_C void rle_compress(void* data, long sz, void* out, long out_sz);
-EXTERN_C void rle_decompress(void* data, long sz, void* out, long out_sz);
-
-#endif // !ifndef __KERNELKIT_RLE_HXX__
diff --git a/dev/Kernel/KernelKit/Semaphore.hxx b/dev/Kernel/KernelKit/Semaphore.hxx
deleted file mode 100644
index 33dfe651..00000000
--- a/dev/Kernel/KernelKit/Semaphore.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <KernelKit/Timer.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-
-namespace Kernel
-{
- class PROCESS_HEADER_BLOCK;
-
- typedef PROCESS_HEADER_BLOCK* ProcessHeaderRef;
-
- /// @brief Access control class, which locks a task until one is done.
- class Semaphore final
- {
- public:
- explicit Semaphore() = default;
- ~Semaphore() = default;
-
- public:
- bool IsLocked() const;
- bool Unlock() noexcept;
-
- public:
- void WaitForProcess() noexcept;
-
- public:
- bool Lock(PROCESS_HEADER_BLOCK* process);
- bool LockOrWait(PROCESS_HEADER_BLOCK* process, HardwareTimerInterface* timer);
-
- public:
- NEWOS_COPY_DEFAULT(Semaphore);
-
- private:
- ProcessHeaderRef fLockingProcess{nullptr};
- };
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/ThreadLocalStorage.hxx b/dev/Kernel/KernelKit/ThreadLocalStorage.hxx
deleted file mode 100644
index afc4940f..00000000
--- a/dev/Kernel/KernelKit/ThreadLocalStorage.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _KERNELKIT_TLS_HPP
-#define _KERNELKIT_TLS_HPP
-
-#include <NewKit/Defines.hxx>
-
-//! @brief TLS implementation in C++
-
-#define kCookieMag0 'H'
-#define kCookieMag1 'C'
-#define kCookieMag2 'R'
-
-#define kTLSCookieLen (3U)
-
-struct THREAD_INFORMATION_BLOCK;
-
-/// @brief Thread Information Block.
-/// Located in GS on AMD64, other architectures have their own stuff. (64x0, 32x0, ARM64)
-struct PACKED THREAD_INFORMATION_BLOCK final
-{
- Kernel::Char f_Cookie[kTLSCookieLen]; // Process cookie.
- Kernel::UIntPtr f_Code; // Start address (Instruction Pointer)
- Kernel::UIntPtr f_Data; // Allocated Heap for process.
- Kernel::UIntPtr f_Stack; // Application Stack pointer.
- Kernel::Int32 f_ID; // Thread execution ID.
- Kernel::Int64 f_UsedHeapPercent; // used heap in percent.
- Kernel::Int64 f_FreeHeapPercent; // heap free in percent.
-};
-
-///! @brief Cookie Sanity check.
-Kernel::Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* the_tib);
-
-///! @brief new ptr syscall.
-template <typename T>
-T* tls_new_ptr(void);
-
-///! @brief delete ptr syscall.
-template <typename T>
-Kernel::Boolean tls_delete_ptr(T* ptr);
-
-template <typename T, typename... Args>
-T* tls_new_class(Args&&... args);
-
-/// @brief TLS install TIB and PIB. (syscall)
-EXTERN_C void rt_install_tib(THREAD_INFORMATION_BLOCK* TIB, THREAD_INFORMATION_BLOCK* PIB);
-
-/// @brief TLS check (syscall)
-EXTERN_C Kernel::Bool tls_check_syscall_impl(Kernel::VoidPtr TIB) noexcept;
-
-#include <KernelKit/ThreadLocalStorage.inl>
-
-// last rev 7/7/24
-
-#endif /* ifndef _KERNELKIT_TLS_HPP */
diff --git a/dev/Kernel/KernelKit/ThreadLocalStorage.inl b/dev/Kernel/KernelKit/ThreadLocalStorage.inl
deleted file mode 100644
index a5bb1adb..00000000
--- a/dev/Kernel/KernelKit/ThreadLocalStorage.inl
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-//! @brief Allocates a pointer from the process's tls.
-
-#ifndef _INC_PROCESS_SCHEDULER_HXX_
-#include <KernelKit/ProcessScheduler.hxx>
-#endif
-
-template <typename T>
-inline T* tls_new_ptr(void)
-{
- using namespace Kernel;
-
- MUST_PASS(ProcessScheduler::The().Leak().TheCurrent());
-
- auto ref_process = ProcessScheduler::The().Leak().TheCurrent();
-
- T* pointer = (T*)ref_process.Leak().New(sizeof(T));
- return pointer;
-}
-
-//! @brief TLS delete implementation.
-template <typename T>
-inline Kernel::Bool tls_delete_ptr(T* ptr)
-{
- if (!ptr)
- return false;
-
- using namespace Kernel;
-
- MUST_PASS(ProcessScheduler::The().Leak().TheCurrent());
-
- auto ref_process = ProcessScheduler::The().Leak().TheCurrent();
- return ref_process.Leak().Delete(ptr, sizeof(T));
-}
-
-/// @brief Allocate a C++ class, and then call the constructor of it.
-/// @tparam T
-/// @tparam ...Args
-/// @param ...args
-/// @return
-template <typename T, typename... Args>
-T* tls_new_class(Args&&... args)
-{
- T* ptr = tls_new_ptr<T>();
-
- using namespace Kernel;
-
- if (ptr)
- {
- *ptr = T(forward(args)...);
- return ptr;
- }
-
- return nullptr;
-}
-
-/// @brief Delete a C++ class (call constructor first.)
-/// @tparam T
-/// @param ptr
-/// @return
-template <typename T>
-inline Kernel::Bool tls_delete_class(T* ptr)
-{
- if (!ptr)
- return false;
-
- ptr->~T();
- return tls_delete_ptr(ptr);
-}
diff --git a/dev/Kernel/KernelKit/Timer.hxx b/dev/Kernel/KernelKit/Timer.hxx
deleted file mode 100644
index e6ef5d03..00000000
--- a/dev/Kernel/KernelKit/Timer.hxx
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <ArchKit/ArchKit.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-#include <KernelKit/LPC.hxx>
-
-namespace Kernel
-{
- class HardwareTimer;
- class HardwareTimerInterface;
-
- class HardwareTimerInterface
- {
- public:
- /// @brief Default constructor
- explicit HardwareTimerInterface() = default;
- virtual ~HardwareTimerInterface() = default;
-
- public:
- NEWOS_COPY_DEFAULT(HardwareTimerInterface);
-
- public:
- virtual Int32 Wait() noexcept;
- };
-
- class HardwareTimer final : public HardwareTimerInterface
- {
- public:
- explicit HardwareTimer(Int64 seconds);
- ~HardwareTimer() override;
-
- public:
- NEWOS_COPY_DEFAULT(HardwareTimer);
-
- public:
- Int32 Wait() noexcept override;
-
- public:
- IntPtr* fDigitalTimer{nullptr};
- Int64 fWaitFor{0};
- };
-
- inline Int64 Seconds(Int64 time)
- {
- if (time < 0)
- return 0;
-
- return 1000 / time;
- }
-
- inline Int64 Milliseconds(Int64 time)
- {
- if (time < 0)
- return 0;
-
- return 1000 / Seconds(time);
- }
-} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/User.hxx b/dev/Kernel/KernelKit/User.hxx
deleted file mode 100644
index 56014c9b..00000000
--- a/dev/Kernel/KernelKit/User.hxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_PERMISSION_SEL_HXX_
-#define _INC_PERMISSION_SEL_HXX_
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <KernelKit/LPC.hxx>
-#include <NewKit/String.hxx>
-#include <NewKit/Defines.hxx>
-
-// user mode users.
-#define kSuperUser "\\Local\\Super"
-#define kGuestUser "\\Local\\Guest"
-
-#define kUsersFile "\\Users\\$MANIFEST"
-
-#define kMaxUserNameLen (255)
-#define kMaxUserTokenLen (4096)
-
-// hash 'password' -> base64+md5 encoded data
-// use this data to then fetch specific data of the user..
-
-namespace Kernel
-{
- class UserManager;
- class User;
-
- enum class RingKind
- {
- kRingStdUser = 1,
- kRingSuperUser = 2,
- kRingGuestUser = 5,
- kRingCount = 5,
- };
-
- class User final
- {
- public:
- explicit User() = delete;
-
- User(const Int32& sel, const Char* userName);
- User(const RingKind& kind, const Char* userName);
-
- ~User();
-
- public:
- NEWOS_COPY_DEFAULT(User)
-
- public:
- bool operator==(const User& lhs);
- bool operator!=(const User& lhs);
-
- public:
- /// @brief Get software ring
- const RingKind& Ring() noexcept;
-
- /// @brief Get user name
- StringView& Name() noexcept;
-
- /// @brief Is he a standard user?
- Bool IsStdUser() noexcept;
-
- /// @brief Is she a super user?
- Bool IsSuperUser() noexcept;
-
- Bool TrySave(const Char* password) noexcept;
-
- private:
- RingKind fRing{RingKind::kRingStdUser};
- StringView fUserName;
- VoidPtr fUserToken{nullptr};
-
- friend UserManager;
- };
-
- class UserManager final
- {
- UserManager() = default;
- ~UserManager() = default;
-
- User* fCurrentUser = nullptr;
- User* fLastLoggedOffUser = nullptr;
-
- public:
- User* fRootUser = nullptr;
-
- public:
- NEWOS_COPY_DELETE(UserManager);
-
- STATIC UserManager* The() noexcept;
- Bool TryLogIn(User* user, const Char* password) noexcept;
- User* GetCurrent() noexcept;
- Void TryLogOff() noexcept;
- };
-} // namespace Kernel
-
-#endif /* ifndef _INC_PERMISSION_SEL_HXX_ */
diff --git a/dev/Kernel/KernelKit/XCOFF.hxx b/dev/Kernel/KernelKit/XCOFF.hxx
deleted file mode 100644
index 82c6dd35..00000000
--- a/dev/Kernel/KernelKit/XCOFF.hxx
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: XCOFF.hpp
- Purpose: XCOFF for Kernel.
-
- Revision History:
-
- 04/07/24: Added file (amlel)
-
-------------------------------------------- */
-
-#ifndef __INC_XCOFF_HXX__
-#define __INC_XCOFF_HXX__
-
-#include <NewKit/Defines.hxx>
-
-#define cXCOFF64Magic (0x01F7)
-
-#define cXCOFFRelFlg (0x0001)
-#define cXCOFFExecutable (0x0002)
-#define cXCOFFLnno (0x0004)
-#define cXCOFFLSyms (0x0008)
-
-struct XCoffFileHeader;
-struct XCoffForkHeader;
-
-/// @brief XCoff file header, meant for POWER apps.
-typedef struct XCoffFileHeader
-{
- Kernel::UInt16 fMagic;
- Kernel::UInt16 fTarget;
- Kernel::UInt16 fNumSecs;
- Kernel::UInt32 fTimeDat;
- Kernel::UIntPtr fSymPtr;
- Kernel::UInt32 fNumSyms;
- Kernel::UInt16 fOptHdr; // ?: Number of bytes in optional header
-} XCoffFileHeader32, XCoffFileHeader64;
-
-#define cForkNameLen (255)
-
-/// @brief This the executable manifest fork.
-typedef struct XCoffForkHeader
-{
- Kernel::Char fPropertiesXMLFork[cForkNameLen];
- Kernel::Char fDynamicLoaderFork[cForkNameLen];
- Kernel::Char fCodeSignFork[cForkNameLen];
-} XCoffForkHeader;
-
-#endif // ifndef __INC_XCOFF_HXX__
diff --git a/dev/Kernel/KernelKit/compile_flags.txt b/dev/Kernel/KernelKit/compile_flags.txt
deleted file mode 100644
index 39b236a9..00000000
--- a/dev/Kernel/KernelKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ED__
diff --git a/dev/Kernel/KernelRsrc.rsrc b/dev/Kernel/KernelRsrc.rsrc
deleted file mode 100644
index 113b2176..00000000
--- a/dev/Kernel/KernelRsrc.rsrc
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "CompilerKit/Version.hxx"
-
-1 VERSIONINFO
-FILEVERSION 1,0,0,0
-PRODUCTVERSION 1,0,0,0
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "080904E4"
- BEGIN
- VALUE "CompanyName", "ZKA Technologies"
- VALUE "FileDescription", "NewOS Kernel."
- VALUE "FileVersion", KERNEL_VERSION
- VALUE "InternalName", "newoskrnl"
- VALUE "LegalCopyright", "(c) ZKA Technologies, all rights reserved."
- VALUE "OriginalFilename", "newoskrnl.dll"
- VALUE "ProductName", "newoskrnl"
- VALUE "ProductVersion", KERNEL_VERSION
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x809, 1252
- END
-END
diff --git a/dev/Kernel/Linker/16x0.json b/dev/Kernel/Linker/16x0.json
deleted file mode 100644
index 9c284b53..00000000
--- a/dev/Kernel/Linker/16x0.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "linker": "link.exe",
- "executable_type": "kernel",
- "output_name": "newoskrnl.dll",
- "start_proc": "__ImageStart",
- "arch": "16x0",
- "format": "PEF"
-}
diff --git a/dev/Kernel/Linker/32x0.json b/dev/Kernel/Linker/32x0.json
deleted file mode 100644
index 05a3db9b..00000000
--- a/dev/Kernel/Linker/32x0.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "linker": "link.exe",
- "executable_type": "kernel",
- "output_name": "newoskrnl.dll",
- "start_proc": "__ImageStart",
- "arch": "32x0",
- "format": "PEF"
-}
diff --git a/dev/Kernel/Linker/64x0.json b/dev/Kernel/Linker/64x0.json
deleted file mode 100644
index c1d0e388..00000000
--- a/dev/Kernel/Linker/64x0.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "linker": "link.exe",
- "executable_type": "kernel",
- "output_name": "newoskrnl.dll",
- "start_proc": "__ImageStart",
- "arch": "64x0",
- "format": "PEF"
-}
diff --git a/dev/Kernel/Linker/arm64.json b/dev/Kernel/Linker/arm64.json
deleted file mode 100644
index 99c190bf..00000000
--- a/dev/Kernel/Linker/arm64.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "linker": "link.exe",
- "executable_type": "kernel",
- "output_name": "newoskrnl.dll",
- "start_proc": "__ImageStart",
- "arch": "arm64",
- "format": "PEF"
-}
diff --git a/dev/Kernel/Modules/.gitkeep b/dev/Kernel/Modules/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/ACPI/.gitkeep b/dev/Kernel/Modules/ACPI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/ACPI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/ACPI/ACPI.hxx b/dev/Kernel/Modules/ACPI/ACPI.hxx
deleted file mode 100644
index 7ea34bd0..00000000
--- a/dev/Kernel/Modules/ACPI/ACPI.hxx
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __ACPI__
-#define __ACPI__
-
-/**
- https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html
-*/
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- class PACKED SDT
- {
- public:
- Char Signature[4];
- UInt32 Length;
- UInt8 Revision;
- Char Checksum;
- Char OemId[6];
- Char OemTableId[8];
- UInt32 OemRev;
- UInt32 CreatorID;
- UInt32 CreatorRevision;
- };
-
- class PACKED RSDP : public SDT
- {
- public:
- UInt32 RsdtAddress;
- UIntPtr XsdtAddress;
- UInt8 ExtendedChecksum;
- UInt8 Reserved0[3];
- };
-
- class PACKED ConfigHeader
- {
- public:
- UInt64 BaseAddress;
- UInt16 PciSegGroup;
- UInt8 StartBus;
- UInt8 EndBus;
- UInt32 Reserved;
- };
-
- enum class AddressSpace : UInt8
- {
- SystemMemory = 0,
- SystemIO = 1,
- Pci = 2,
- Controller = 3,
- SmBus = 4,
- Count = 5,
- Invalid = 0xFF,
- };
-
- class PACKED Address
- {
- public:
- AddressSpace AddressSpaceId;
- UInt8 RegisterBitWidth;
- UInt8 RegisterBitOffset;
- UInt8 Reserved;
- UIntPtr Address;
- };
-
- class PACKED RSDT
- {
- public:
- Char Signature[4];
- UInt32 Length;
- UInt8 Revision;
- Char Checksum;
- Char OemId[6];
- Char OemTableId[8];
- UInt32 OemRev;
- UInt32 CreatorID;
- UInt32 CreatorRevision;
- UInt32 AddressArr[];
- };
-} // namespace Kernel
-
-#endif // !__ACPI__
diff --git a/dev/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx b/dev/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
deleted file mode 100644
index 6405dc1b..00000000
--- a/dev/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __MOD_ACPI_HXX__
-#define __MOD_ACPI_HXX__
-
-#include <KernelKit/DebugOutput.hxx>
-#include <Modules/ACPI/ACPI.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- class ACPIFactoryInterface;
-
- typedef ACPIFactoryInterface PowerFactoryInterface;
-
- class ACPIFactoryInterface final
- {
- public:
- explicit ACPIFactoryInterface(voidPtr rsdPtr);
- ~ACPIFactoryInterface() = default;
-
- ACPIFactoryInterface& operator=(const ACPIFactoryInterface&) = default;
- ACPIFactoryInterface(const ACPIFactoryInterface&) = default;
-
- public:
- void Shutdown(); // shutdown
- void Reboot(); // soft-reboot
-
- public:
- /// @brief Descriptor find factory.
- /// @param signature The signature of the descriptor table (MADT, ACPI...)
- /// @return the blob inside an ErrorOr object.
- ErrorOr<voidPtr> Find(const char* signature);
-
- /// @brief Checksum factory.
- /// @param checksum the data to checksum
- /// @param len it's size
- /// @return if it succeed
- bool Checksum(const char* checksum, SSizeT len); // watch for collides!
-
- public:
- ErrorOr<voidPtr> operator[](const char* signature)
- {
- return this->Find(signature);
- }
-
- private:
- VoidPtr fRsdp; // pointer to root descriptor.
- SSizeT fEntries; // number of entries, -1 tells that no invalid entries were
- // found.
- };
-} // namespace Kernel
-
-#endif // !__MOD_ACPI_HXX__
diff --git a/dev/Kernel/Modules/ACPI/compile_flags.txt b/dev/Kernel/Modules/ACPI/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/Kernel/Modules/ACPI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/Kernel/Modules/AHCI/.gitkeep b/dev/Kernel/Modules/AHCI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/AHCI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/AHCI/AHCI.hxx b/dev/Kernel/Modules/AHCI/AHCI.hxx
deleted file mode 100644
index 6e6e5dba..00000000
--- a/dev/Kernel/Modules/AHCI/AHCI.hxx
+++ /dev/null
@@ -1,368 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Defines.hxx
- Purpose: AHCI header.
-
- Revision History:
-
- 03/02/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <Modules/ACPI/ACPI.hxx>
-
-// Forward declarations of structs.
-
-struct HbaPort;
-struct FisData;
-struct FisRegD2H;
-struct FisRegH2D;
-
-/// @brief Frame information type.
-enum
-{
- kFISTypeRegH2D = 0x27, // Register FIS - host to device
- kFISTypeRegD2H = 0x34, // Register FIS - device to host
- kFISTypeDMAAct = 0x39, // DMA activate FIS - device to host
- kFISTypeDMASetup = 0x41, // DMA setup FIS - bidirectional
- kFISTypeData = 0x46, // Data FIS - bidirectional
- kFISTypeBIST = 0x58, // BIST activate FIS - bidirectional
- kFISTypePIOSetup = 0x5F, // PIO setup FIS - device to host
- kFISTypeDevBits = 0xA1, // Set device bits FIS - device to host
-};
-
-enum
-{
- kAHCICmdIdentify = 0xEC,
- kAHCICmdReadDma = 0xC8,
- kAHCICmdReadDmaEx = 0x25,
- kAHCICmdWriteDma = 0xCA,
- kAHCICmdWriteDmaEx = 0x35
-};
-
-typedef struct FisRegH2D final
-{
- // DWORD 0
- Kernel::UInt8 FisType; // FIS_TYPE_REG_H2D
-
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 3; // Reserved
- Kernel::UInt8 CmdOrCtrl : 1; // 1: Command, 0: Control
-
- Kernel::UInt8 Command; // Command register
- Kernel::UInt8 Featurel; // Feature register, 7:0
-
- // DWORD 1
- Kernel::UInt8 Lba0; // LBA low register, 7:0
- Kernel::UInt8 Lba1; // LBA mid register, 15:8
- Kernel::UInt8 Lba2; // LBA high register, 23:16
- Kernel::UInt8 Device; // Device register
-
- // DWORD 2
- Kernel::UInt8 Lba3; // LBA register, 31:24
- Kernel::UInt8 Lba4; // LBA register, 39:32
- Kernel::UInt8 Lba5; // LBA register, 47:40
- Kernel::UInt8 FeatureHigh; // Feature register, 15:8
-
- // DWORD 3
- Kernel::UInt8 CountLow; // Count register, 7:0
- Kernel::UInt8 CountHigh; // Count register, 15:8
- Kernel::UInt8 Icc; // Isochronous command completion
- Kernel::UInt8 Control; // Control register
-
- // DWORD 4
- Kernel::UInt8 Reserved1[4]; // Reserved
-} FisRegH2D;
-
-typedef struct FisRegD2H final
-{
- // DWORD 0
- Kernel::UInt8 FisType; // FIS_TYPE_REG_D2H
-
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 2; // Reserved
- Kernel::UInt8 InterruptBit : 1; // Interrupt bit
- Kernel::UInt8 Reserved1 : 1; // Reserved
-
- Kernel::UInt8 Status; // Status register
- Kernel::UInt8 Rrror; // Error register
-
- // DWORD 1
- Kernel::UInt8 Lba0; // LBA low register, 7:0
- Kernel::UInt8 Lba1; // LBA mid register, 15:8
- Kernel::UInt8 Lba2; // LBA high register, 23:16
- Kernel::UInt8 Device; // Device register
-
- // DWORD 2
- Kernel::UInt8 Lba3; // LBA register, 31:24
- Kernel::UInt8 Lba4; // LBA register, 39:32
- Kernel::UInt8 Lba5; // LBA register, 47:40
- Kernel::UInt8 Rsv2; // Reserved
-
- // DWORD 3
- Kernel::UInt8 CountLow; // Count register, 7:0
- Kernel::UInt8 CountHigh; // Count register, 15:8
- Kernel::UInt8 Rsv3[2]; // Reserved
-
- // DWORD 4
- Kernel::UInt8 Rsv4[4]; // Reserved
-} FisRegD2H;
-
-typedef struct FisData final
-{
- // DWORD 0
- Kernel::UInt8 FisType; // FIS_TYPE_DATA
-
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 4; // Reserved
-
- Kernel::UInt8 Reserved1[2]; // Reserved
-
- // DWORD 1 ~ N
- Kernel::UInt32 Data[1]; // Payload
-} FisData;
-
-typedef struct FisPioSetup final
-{
- // DWORD 0
- Kernel::UInt8 FisType; // FIS_TYPE_PIO_SETUP
-
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 1; // Reserved
- Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
- Kernel::UInt8 InterruptBit : 1; // Interrupt bit
- Kernel::UInt8 Reserved1 : 1;
-
- Kernel::UInt8 Status; // Status register
- Kernel::UInt8 Error; // Error register
-
- // DWORD 1
- Kernel::UInt8 Lba0; // LBA low register, 7:0
- Kernel::UInt8 Lba1; // LBA mid register, 15:8
- Kernel::UInt8 Lba2; // LBA high register, 23:16
- Kernel::UInt8 Device; // Device register
-
- // DWORD 2
- Kernel::UInt8 Lba3; // LBA register, 31:24
- Kernel::UInt8 Lba4; // LBA register, 39:32
- Kernel::UInt8 Lba5; // LBA register, 47:40
- Kernel::UInt8 Rsv2; // Reserved
-
- // DWORD 3
- Kernel::UInt8 CountLow; // Count register, 7:0
- Kernel::UInt8 CountHigh; // Count register, 15:8
- Kernel::UInt8 Rsv3; // Reserved
- Kernel::UInt8 EStatus; // New value of status register
-
- // DWORD 4
- Kernel::UInt16 TranferCount; // Transfer count
- Kernel::UInt8 Rsv4[2]; // Reserved
-} FisPioSetup;
-
-typedef struct FisDmaSetup final
-{
- // DWORD 0
- Kernel::UInt8 FisType; // FIS_TYPE_DMA_SETUP
-
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 1; // Reserved
- Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
- Kernel::UInt8 InterruptBit : 1; // Interrupt bit
- Kernel::UInt8 AutoEnable : 1; // Auto-activate. Specifies if DMA Activate FIS is needed
-
- Kernel::UInt8 Reserved1[2]; // Reserved
-
- // DWORD 1&2
- Kernel::UInt64 DmaBufferId; // DMA Buffer Identifier. Used to Identify DMA buffer in
- // host memory. SATA Spec says host specific and not in
- // Spec. Trying AHCI spec might work.
-
- // DWORD 3
- Kernel::UInt32 Rsvd; // More reserved
-
- // DWORD 4
- Kernel::UInt32 DmabufOffset; // Byte offset into buffer. First 2 bits must be 0
-
- // DWORD 5
- Kernel::UInt32 TransferCount; // Number of bytes to transfer. Bit 0 must be 0
-
- // DWORD 6
- Kernel::UInt32 Reserved3; // Reserved
-} FisDmaSetup;
-
-typedef struct FisDevBits final
-{
- // DWORD 0
- Kernel::UInt8 FisType; // FIS_TYPE_DMA_SETUP (A1h)
-
- Kernel::UInt8 Reserved0 : 5; // Reserved
- Kernel::UInt8 R0 : 1;
- Kernel::UInt8 InterruptBit : 1;
- Kernel::UInt8 N : 1;
-
- Kernel::UInt8 StatusLow : 3;
- Kernel::UInt8 R1 : 1;
- Kernel::UInt8 StatusHigh : 3;
-
- Kernel::UInt8 R2 : 1;
- Kernel::UInt8 Error;
-
- // DWORD 1
- Kernel::UInt32 Act;
-} FisDevBits;
-
-/// \brief Enable AHCI device bit in GHC register.
-#ifndef kAhciGHC_AE
-#define kAhciGHC_AE (31)
-#endif //! ifndef kAhciGHC_AE
-
-typedef struct HbaPort final
-{
- Kernel::UInt32 Clb; // 0x00, command list base address, 1K-byte aligned
- Kernel::UInt32 Clbu; // 0x04, command list base address upper 32 bits
- Kernel::UInt32 Fb; // 0x08, FIS base address, 256-byte aligned
- Kernel::UInt32 Fbu; // 0x0C, FIS base address upper 32 bits
- Kernel::UInt32 Is; // 0x10, interrupt status
- Kernel::UInt32 Ie; // 0x14, interrupt enable
- Kernel::UInt32 Cmd; // 0x18, command and status
- Kernel::UInt32 Reserved0; // 0x1C, Reserved
- Kernel::UInt32 Tfd; // 0x20, task file data
- Kernel::UInt32 Sig; // 0x24, signature
- Kernel::UInt32 Ssts; // 0x28, SATA status (SCR0:SStatus)
- Kernel::UInt32 Sctl; // 0x2C, SATA control (SCR2:SControl)
- Kernel::UInt32 Serr; // 0x30, SATA error (SCR1:SError)
- Kernel::UInt32 Sact; // 0x34, SATA active (SCR3:SActive)
- Kernel::UInt32 Ci; // 0x38, command issue
- Kernel::UInt32 Sntf; // 0x20, SATA notification (SCR4:SNotification)
- Kernel::UInt32 Fbs; // 0x40, FIS-based switch control
- Kernel::UInt32 Reserved1[11]; // 0x44 ~ 0x6F, Reserved
- Kernel::UInt32 Vendor[4]; // 0x70 ~ 0x7F, vendor specific
-} HbaPort;
-
-typedef struct HbaMem final
-{
- // 0x00 - 0x2B, Generic Host Control
- Kernel::UInt32 Cap; // 0x00, Host capability
- Kernel::UInt32 Ghc; // 0x04, Global host control
- Kernel::UInt32 Is; // 0x08, Interrupt status
- Kernel::UInt32 Pi; // 0x0C, Port implemented
- Kernel::UInt32 Vs; // 0x10, Version
- Kernel::UInt32 Ccc_ctl; // 0x14, Command completion coalescing control
- Kernel::UInt32 Ccc_pts; // 0x18, Command completion coalescing ports
- Kernel::UInt32 Em_loc; // 0x1C, Enclosure management location
- Kernel::UInt32 Em_ctl; // 0x20, Enclosure management control
- Kernel::UInt32 Cap2; // 0x24, Host capabilities extended
- Kernel::UInt32 Bohc; // 0x28, BIOS/OS handoff control and status
-
- Kernel::UInt16 Resv0;
- Kernel::UInt32 Resv2;
-
- HbaPort Ports[1]; // 1 ~ 32
-} HbaMem;
-
-typedef struct HbaCmdHeader final
-{
- // DW0
- Kernel::UInt8 Cfl : 5; // Command FIS length in DWORDS, 2 ~ 16
- Kernel::UInt8 Atapi : 1; // ATAPI
- Kernel::UInt8 Write : 1; // Write, 1: H2D, 0: D2H
- Kernel::UInt8 Prefetchable : 1; // Prefetchable
-
- Kernel::UInt8 Reset : 1; // Reset
- Kernel::UInt8 BIST : 1; // BIST
- Kernel::UInt8 Clear : 1; // Clear busy upon R_OK
- Kernel::UInt8 Reserved0 : 1; // Reserved
- Kernel::UInt8 Pmp : 4; // Port multiplier port
-
- Kernel::UInt16 Prdtl; // Physical region descriptor table length in entries
- volatile Kernel::UInt32 Prdbc; // Physical region descriptor byte count transferred
-
- Kernel::UInt32 Ctba; // Command table descriptor base address
- Kernel::UInt32 Ctbau; // Command table descriptor base address upper 32 bits
-
- Kernel::UInt32 Reserved1[4]; // Reserved
-} HbaCmdHeader;
-
-typedef struct HbaFis final
-{
- // 0x00
- FisDmaSetup Dsfis; // DMA Setup FIS
- Kernel::UInt8 Pad0[4];
- // 0x20
- FisPioSetup Psfis; // PIO Setup FIS
- Kernel::UInt8 Pad1[12];
- // 0x40
- FisRegD2H Rfis; // Register – Device to Host FIS
- Kernel::UInt8 Pad2[4];
- // 0x58
- FisDevBits Sdbfis; // Set Device Bit FIS
- // 0x60
- Kernel::UInt8 Ufis[64];
- // 0xA0
- Kernel::UInt8 Rsv[0x100 - 0xA0];
-} HbaFis;
-
-typedef struct HbaPrdtEntry final
-{
- Kernel::UInt32 Dba; // Data base address
- Kernel::UInt32 Dbau; // Data base address upper 32 bits
- Kernel::UInt32 Reserved0; // Reserved
- // DW3
- Kernel::UInt32 Dbc : 22; // Byte count, 4M max
- Kernel::UInt32 Reserved1 : 9; // Reserved
- Kernel::UInt32 InterruptBit : 1; // Interrupt on completion
-} HbaPrdtEntry;
-
-typedef struct HbaCmdTbl final
-{
- Kernel::UInt8 Cfis[64]; // Command FIS
- Kernel::UInt8 Acmd[16]; // ATAPI command, 12 or 16 bytes
- Kernel::UInt8 Rsv[48]; // Reserved
- struct HbaPrdtEntry prdtEntries[1]; // Physical region descriptor table entries, 0 ~ 65535
-} HbaCmdTbl;
-
-/* EOF */
-
-#if defined(__AHCI__)
-
-/// @brief Initializes an AHCI disk.
-/// @param PortsImplemented the amount of port that have been detected.
-/// @return
-Kernel::Boolean drv_std_init(Kernel::UInt16& PortsImplemented);
-
-Kernel::Boolean drv_std_detected(Kernel::Void);
-
-/// @brief Read from disk.
-/// @param Lba
-/// @param Buf
-/// @param SectorSz
-/// @param Size
-/// @return
-Kernel::Void drv_std_read(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT SectorSz, Kernel::SizeT Size);
-
-/// @brief Write to disk.
-/// @param Lba
-/// @param Buf
-/// @param SectorSz
-/// @param Size
-/// @return
-Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::Char* Buf, Kernel::SizeT SectorSz, Kernel::SizeT Size);
-
-/// @brief get sector count.
-Kernel::SizeT drv_std_get_sector_count();
-
-/// @brief get device size.
-Kernel::SizeT drv_std_get_drv_size();
-
-/// @brief get sector count.
-Kernel::SizeT drv_std_get_sector_count();
-
-/// @brief get device size.
-Kernel::SizeT drv_std_get_drv_size();
-
-#endif // ifdef __NEWOSKRNL__
diff --git a/dev/Kernel/Modules/AHCI/compile_flags.txt b/dev/Kernel/Modules/AHCI/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/Kernel/Modules/AHCI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/Kernel/Modules/APM/.gitkeep b/dev/Kernel/Modules/APM/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/APM/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/ATA/ATA.hxx b/dev/Kernel/Modules/ATA/ATA.hxx
deleted file mode 100644
index 81705712..00000000
--- a/dev/Kernel/Modules/ATA/ATA.hxx
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Defines.hxx
- Purpose: ATA header.
-
- Revision History:
-
- 03/02/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#ifndef __AHCI__
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <NewKit/Defines.hxx>
-
-///! Status register
-#define ATA_SR_BSY 0x80
-#define ATA_SR_DRDY 0x40
-#define ATA_SR_DF 0x20
-#define ATA_SR_DSC 0x10
-#define ATA_SR_DRQ 0x08
-#define ATA_SR_CORR 0x04
-#define ATA_SR_IDX 0x02
-#define ATA_SR_ERR 0x01
-
-///! Error register
-#define ATA_ER_BBK 0x80
-#define ATA_ER_UNC 0x40
-#define ATA_ER_MC 0x20
-#define ATA_ER_IDNF 0x10
-#define ATA_ER_MCR 0x08
-#define ATA_ER_ABRT 0x04
-#define ATA_ER_TK0NF 0x02
-#define ATA_ER_AMNF 0x01
-
-#define ATA_CMD_READ_PIO 0x20
-#define ATA_CMD_READ_PIO_EXT 0x24
-#define ATA_CMD_READ_DMA 0xC8
-#define ATA_CMD_READ_DMA_EXT 0x25
-#define ATA_CMD_WRITE_PIO 0x30
-#define ATA_CMD_WRITE_PIO_EXT 0x34
-#define ATA_CMD_WRITE_DMA 0xCA
-#define ATA_CMD_WRITE_DMA_EXT 0x35
-#define ATA_CMD_CACHE_FLUSH 0xE7
-#define ATA_CMD_CACHE_FLUSH_EXT 0xEA
-#define ATA_CMD_PACKET 0xA0
-#define ATA_CMD_IDENTIFY_PACKET 0xA1
-#define ATA_CMD_IDENTIFY 0xEC
-
-///! ident offsets, use with data that we got from ATA_CMD_IDENTIFY.
-#define ATA_IDENT_DEVICE_TYPE 0
-#define ATA_IDENT_CYLINDERS 2
-#define ATA_IDENT_HEADS 6
-#define ATA_IDENT_SECTORS 12
-#define ATA_IDENT_SERIAL 20
-#define ATA_IDENT_MODEL 54
-#define ATA_IDENT_CAPABILITIES 98
-#define ATA_IDENT_FIELDVALID 106
-#define ATA_IDENT_MAX_LBA 120
-#define ATA_IDENT_COMMANDSETS 164
-#define ATA_IDENT_MAX_LBA_EXT 200
-
-#define ATA_MASTER 0x00
-#define ATA_SLAVE 0x01
-
-///! Register
-#define ATA_REG_DATA 0x00
-#define ATA_REG_ERROR 0x01
-#define ATA_REG_FEATURES 0x01
-#define ATA_REG_SEC_COUNT0 0x02
-#define ATA_REG_LBA0 0x03
-#define ATA_REG_LBA1 0x04
-#define ATA_REG_LBA2 0x05
-#define ATA_REG_HDDEVSEL 0x06
-#define ATA_REG_COMMAND 0x07
-#define ATA_REG_STATUS 0x07
-#define ATA_REG_SEC_COUNT1 0x08
-#define ATA_REG_LBA3 0x09
-#define ATA_REG_LBA4 0x0A
-#define ATA_REG_LBA5 0x0B
-#define ATA_REG_CONTROL 0x0C
-#define ATA_REG_ALT_STATUS 0x0C
-#define ATA_REG_DEV_ADDRESS 0x0D
-
-#define ATA_REG_NEIN 0x01
-
-#define ATA_PRIMARY_IO 0x1F0
-#define ATA_SECONDARY_IO 0x170
-#define ATA_PRIMARY_DCR_AS 0x3F6
-#define ATA_SECONDARY_DCR_AS 0x376
-
-///! Irq
-#define ATA_PRIMARY_IRQ 14
-#define ATA_SECONDARY_IRQ 15
-
-///! Channels
-#define ATA_PRIMARY 0x00
-#define ATA_SECONDARY 0x01
-
-#define ATA_CYL_LOW 3
-#define ATA_CYL_MID 4
-#define ATA_CYL_HIGH 5
-
-///! IO Direction
-#define ATA_READ 0x00
-#define ATA_WRITE 0x013
-
-#define ATA_PRIMARY_SEL 0xA0
-#define ATA_SECONDARY_SEL 0xB0
-
-///! ATA address register.
-#define ATA_ADDRESS1(x) (x + 3)
-#define ATA_ADDRESS2(x) (x + 4)
-#define ATA_ADDRESS3(x) (x + 5)
-
-///! ATA command register.
-#define ATA_COMMAND(x) (x + 7)
-
-#define kATASectorSize (512U)
-
-enum
-{
- kATADevicePATA,
- kATADeviceSATA,
- kATADevicePATA_PI,
- kATADeviceSATA_PI,
- kATADeviceCount,
-};
-
-#if defined(__ATA_PIO__) || defined(__ATA_DMA__)
-
-Kernel::Boolean drv_std_init(Kernel::UInt16 Bus, Kernel::UInt8 Drive, Kernel::UInt16& OutBus, Kernel::UInt8& OutMaster);
-
-Kernel::Boolean drv_std_detected(Kernel::Void);
-
-Kernel::Void drv_std_select(Kernel::UInt16 Bus);
-
-Kernel::Boolean drv_std_wait_io(Kernel::UInt16 IO);
-
-Kernel::Void drv_std_read(Kernel::UInt64 Lba, Kernel::UInt16 IO, Kernel::UInt8 Master, Kernel::Char* Buf, Kernel::SizeT SectorSz, Kernel::SizeT Size);
-
-Kernel::Void drv_std_write(Kernel::UInt64 Lba, Kernel::UInt16 IO, Kernel::UInt8 Master, Kernel::Char* Buf, Kernel::SizeT SectorSz, Kernel::SizeT Size);
-
-/// @brief get sector count.
-Kernel::SizeT drv_std_get_sector_count();
-
-/// @brief get device size.
-Kernel::SizeT drv_std_get_drv_size();
-
-#endif // ifdef __NEWOSKRNL__
-#endif // ifndef __ATA_PIO__ || __AHCI__
diff --git a/dev/Kernel/Modules/ATA/compile_flags.txt b/dev/Kernel/Modules/ATA/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/Kernel/Modules/ATA/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/Kernel/Modules/CoreCG/Accessibility.hxx b/dev/Kernel/Modules/CoreCG/Accessibility.hxx
deleted file mode 100644
index 743b81ee..00000000
--- a/dev/Kernel/Modules/CoreCG/Accessibility.hxx
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __CORECG_ACCESS_HXX__
-#define __CORECG_ACCESS_HXX__
-
-#include <NewKit/NewKit.hxx>
-#include <KernelKit/LPC.hxx>
-#include <Modules/CoreCG/FbRenderer.hxx>
-#include <Modules/CoreCG/Lerp.hxx>
-#include <ArchKit/ArchKit.hxx>
-
-namespace Kernel
-{
- inline Bool cKTSyncCall = false;
-
- inline float cDeviceWidthAlert = 150;
- inline float cDeviceHeightAlert = 141;
-
- /// @brief common user interface class.
- class UIAccessibilty final
- {
- explicit UIAccessibilty() = default;
-
- public:
- NEWOS_COPY_DELETE(UIAccessibilty);
-
- static UIAccessibilty& The()
- {
- static UIAccessibilty the;
- return the;
- }
-
- Int64 Width() noexcept
- {
- return kHandoverHeader->f_GOP.f_Width;
- }
-
- Int64 Height() noexcept
- {
- return kHandoverHeader->f_GOP.f_Height;
- }
- };
-} // namespace Kernel
-
-#endif // !__CORECG_ACCESS_HXX__
diff --git a/dev/Kernel/Modules/CoreCG/FbRenderer.hxx b/dev/Kernel/Modules/CoreCG/FbRenderer.hxx
deleted file mode 100644
index 06c27949..00000000
--- a/dev/Kernel/Modules/CoreCG/FbRenderer.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-#define CGInit() Kernel::SizeT __GXCursor = 0
-
-#define CGColor(R, G, B) RGB(R, G, B)
-
-#define cCGClearClr CGColor(0x0, 0x0, 0x0)
-
-#define CGFini() __GXCursor = 0
-
-/// @brief Performs OR drawing on the framebuffer.
-#define CGDrawBitMapInRegionA(ImgPtr, _Height, _Width, BaseX, BaseY) \
- __GXCursor = 0; \
- \
- for (Kernel::SizeT i = BaseX; i < (_Height + BaseX); ++i) \
- { \
- for (Kernel::SizeT u = BaseY; u < (_Width + BaseY); ++u) \
- { \
- *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) |= (ImgPtr)[__GXCursor]; \
- \
- ++__GXCursor; \
- } \
- }
-
-/// @brief Draws a resource.
-#define CGDrawBitMapInRegion(ImgPtr, _Height, _Width, BaseX, BaseY) \
- __GXCursor = 0; \
- \
- for (Kernel::SizeT i = BaseX; i < (_Height + BaseX); ++i) \
- { \
- for (Kernel::SizeT u = BaseY; u < (_Width + BaseY); ++u) \
- { \
- *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) = (ImgPtr)[__GXCursor]; \
- \
- ++__GXCursor; \
- } \
- }
-
-/// @brief Cleans a resource.
-#define CGClearRegion(_Height, _Width, BaseX, BaseY) \
- \
- for (Kernel::SizeT i = BaseX; i < _Height + BaseX; ++i) \
- { \
- for (Kernel::SizeT u = BaseY; u < _Width + BaseY; ++u) \
- { \
- *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) = cCGClearClr; \
- } \
- }
-
-/// @brief Draws inside a zone.
-#define CGDrawInRegion(_Clr, _Height, _Width, BaseX, BaseY) \
- \
- for (Kernel::SizeT x_base = BaseX; x_base < (_Width + BaseX); ++x_base) \
- { \
- for (Kernel::SizeT y_base = BaseY; y_base < (_Height + BaseY); ++y_base) \
- { \
- *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- x_base + \
- 4 * y_base))) = _Clr; \
- } \
- }
diff --git a/dev/Kernel/Modules/CoreCG/Lerp.hxx b/dev/Kernel/Modules/CoreCG/Lerp.hxx
deleted file mode 100644
index 2b3addb1..00000000
--- a/dev/Kernel/Modules/CoreCG/Lerp.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-/// @file Lerp.hxx
-/// @brief Linear interpolation implementation.
-
-typedef float GXReal;
-
-/// @brief Linear interpolation equation solver.
-/// @param from where?
-/// @param to to?
-/// @param at which state we're at **to**.
-inline GXReal GXLerp(GXReal to, GXReal from, GXReal stat)
-{
- GXReal difference = to - from;
- return from + (difference * stat);
-}
diff --git a/dev/Kernel/Modules/CoreCG/Rsrc/Cursor.rsrc b/dev/Kernel/Modules/CoreCG/Rsrc/Cursor.rsrc
deleted file mode 100644
index 2283cb32..00000000
--- a/dev/Kernel/Modules/CoreCG/Rsrc/Cursor.rsrc
+++ /dev/null
@@ -1,64 +0,0 @@
-#define cCurHeight (57)
-#define cCurWidth (53)
-
-#define cCurLength (3021)
-
-static const unsigned int Cursor[cCurLength] = {
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0x474747, 0x474747, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x363636, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x363636, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xa5a5a5, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x686868, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x686868, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x585858, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0x585858, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x363636, 0x000000, 0x000000, 0x000000, 0x686868, 0xebebeb, 0xf9f9f9, 0x969696, 0x000000, 0x000000, 0x000000, 0x222222, 0xdedede, 0xf9f9f9, 0xdedede, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x000000, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x575757, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xdedede, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x000000, 0x000000, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0x575757, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x000000, 0x585858, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x686868, 0x000000, 0x000000, 0x777777, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0x474747, 0x474747, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x777777, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xcfcfcf, 0x000000, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x000000, 0x000000, 0x363636, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0xb3b3b3, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x686868, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x363636, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x222222, 0x222222, 0x363636, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x686868, 0x686868, 0xcfcfcf, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xcfcfcf, 0xd0d0d0, 0xdedede, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x222222, 0x000000, 0x000000, 0xa5a5a5, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x000000, 0x686868, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xcfcfcf, 0x000000, 0x000000, 0x585858, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x363636, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x686868, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xd0d0d0, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x686868, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x474747, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x585858, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xb3b3b3, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xa5a5a5, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x0e0e0e, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x686868, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x969696, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xcfcfcf, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xb3b3b3, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x0e0e0e, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x686868, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x787878, 0x000000, 0x777777, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x0e0e0e, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0xb4b4b4, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x0e0e0e, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x686868, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0xb4b4b4, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x000000, 0x000000, 0xebebeb, 0xf9f9f9, 0xdedede, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x686868, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xcfcfcf, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x979797, 0x000000, 0x474747, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x474747, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0x363636, 0x000000, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xececec, 0x0e0e0e, 0x000000, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0x878787, 0x000000, 0x777777, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xa5a5a5, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x343434, 0xebebeb, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x575757, 0x000000, 0x878787, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xb3b3b3, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x343434, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x0e0e0e, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x222222, 0x222222, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xc2c2c2, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x686868, 0xdedede, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x686868, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x777777, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xdedede, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xcfcfcf, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0x585858, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0xc2c2c2, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xf9f9f9, 0xebebeb, 0x585858, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x474747, 0x878787, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0xa5a5a5, 0x979797, 0x686868, 0x0e0e0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
- 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000
-};
diff --git a/dev/Kernel/Modules/CoreCG/TextRenderer.hxx b/dev/Kernel/Modules/CoreCG/TextRenderer.hxx
deleted file mode 100644
index eada9b9f..00000000
--- a/dev/Kernel/Modules/CoreCG/TextRenderer.hxx
+++ /dev/null
@@ -1,177 +0,0 @@
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <Modules/CoreCG/FbRenderer.hxx>
-
-#define FONT_SIZE_X 8
-#define FONT_SIZE_Y 8
-#define FONT_NOF_CHARS 128
-
-inline const Kernel::UInt8 cFontBitmap[FONT_NOF_CHARS][FONT_SIZE_X] = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul)
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space)
- {0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!)
- {0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (")
- {0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#)
- {0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($)
- {0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%)
- {0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&)
- {0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (')
- {0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (()
- {0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ())
- {0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*)
- {0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+)
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,)
- {0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-)
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.)
- {0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/)
- {0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0)
- {0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1)
- {0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2)
- {0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3)
- {0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4)
- {0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5)
- {0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6)
- {0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7)
- {0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8)
- {0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9)
- {0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:)
- {0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (;)
- {0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<)
- {0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=)
- {0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>)
- {0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?)
- {0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@)
- {0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A)
- {0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B)
- {0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C)
- {0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D)
- {0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E)
- {0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F)
- {0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G)
- {0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H)
- {0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I)
- {0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J)
- {0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K)
- {0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L)
- {0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M)
- {0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N)
- {0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O)
- {0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P)
- {0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q)
- {0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R)
- {0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S)
- {0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T)
- {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U)
- {0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V)
- {0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W)
- {0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X)
- {0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y)
- {0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z)
- {0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([)
- {0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\)
- {0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (])
- {0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^)
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_)
- {0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`)
- {0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a)
- {0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b)
- {0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c)
- {0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d)
- {0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e)
- {0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f)
- {0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g)
- {0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h)
- {0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i)
- {0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j)
- {0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k)
- {0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l)
- {0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m)
- {0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n)
- {0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o)
- {0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p)
- {0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q)
- {0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r)
- {0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s)
- {0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t)
- {0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u)
- {0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v)
- {0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w)
- {0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x)
- {0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y)
- {0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z)
- {0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({)
- {0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|)
- {0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (})
- {0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~)
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F
-
-};
-
-inline Kernel::Void cg_render_text_font(const Kernel::UInt8* bitmap, Kernel::Int32& x_dst, Kernel::Int32& y_dst, Kernel::Int32& color)
-{
- Kernel::Int32 x, y;
- Kernel::Int32 set;
-
- x = 0;
- y = 0;
-
- for (; y < FONT_SIZE_Y; y++)
- {
- for (x = 0; x < FONT_SIZE_X; x++)
- {
- set = bitmap[x] & 1 << y;
-
- if (set)
- CGDrawInRegion(color, 1, 1, ((x_dst) + x), ((y_dst) + y));
- }
- }
-}
-
-inline Kernel::Void cg_write_text(const Kernel::Char* text, Kernel::Int32 x_dst, Kernel::Int32 y_dst, Kernel::Int32 color)
-{
- for (Kernel::SizeT i = 0; text[i] != 0; ++i)
- {
- if (text[i] == '\r' ||
- text[i] == '\n')
- {
- y_dst += FONT_SIZE_Y;
-
- continue;
- }
-
- cg_render_text_font(&cFontBitmap[text[i]][0], x_dst, y_dst, color);
- y_dst += FONT_SIZE_Y;
- }
-} \ No newline at end of file
diff --git a/dev/Kernel/Modules/Flash/Flash.hxx b/dev/Kernel/Modules/Flash/Flash.hxx
deleted file mode 100644
index d8cfc28f..00000000
--- a/dev/Kernel/Modules/Flash/Flash.hxx
+++ /dev/null
@@ -1,19 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#ifdef __FLASH_MEM__
-
-/// @brief get sector count.
-/// @return drive sector count.
-Kernel::SizeT drv_std_get_sector_count();
-
-/// @brief get device size.
-/// @return drive size
-Kernel::SizeT drv_std_get_drv_size();
-
-#endif // ifdef __FLASH_MEM__
diff --git a/dev/Kernel/Modules/GL/.keepme b/dev/Kernel/Modules/GL/.keepme
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/GL/.keepme
+++ /dev/null
diff --git a/dev/Kernel/Modules/GPRS/.keepme b/dev/Kernel/Modules/GPRS/.keepme
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/GPRS/.keepme
+++ /dev/null
diff --git a/dev/Kernel/Modules/HPET/.gitkeep b/dev/Kernel/Modules/HPET/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/HPET/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/HPET/Defines.hxx b/dev/Kernel/Modules/HPET/Defines.hxx
deleted file mode 100644
index 7b6e4589..00000000
--- a/dev/Kernel/Modules/HPET/Defines.hxx
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: HPET.hxx
- Purpose: HPET builtin.
-
- Revision History:
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <Modules/ACPI/ACPI.hxx>
-
-namespace Kernel
-{
- struct PACKED HPETAddressStructure final
- {
- Kernel::UInt8 AddressSpaceId; // 0 - system memory, 1 - system I/O
- Kernel::UInt8 RegisterBitWidth;
- Kernel::UInt8 RegisterBitOffset;
- Kernel::UInt8 Reserved;
- Kernel::UInt64 Address;
- };
-
- struct PACKED HPETHeader final : public SDT
- {
- Kernel::UInt8 HardwareRevId;
- Kernel::UInt8 ComparatorCount : 5;
- Kernel::UInt8 CounterSize : 1;
- Kernel::UInt8 Reserved : 1;
- Kernel::UInt8 LegacyReplacement : 1;
- Kernel::UInt16 PciVendorId;
- HPETAddressStructure Address;
- Kernel::UInt8 HpetNumber;
- Kernel::UInt16 MinimumTick;
- Kernel::UInt8 PageProtection;
- };
-
-} // namespace Kernel
diff --git a/dev/Kernel/Modules/IEEE802/.gitkeep b/dev/Kernel/Modules/IEEE802/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/IEEE802/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/IEEE802/compile_flags.txt b/dev/Kernel/Modules/IEEE802/compile_flags.txt
deleted file mode 100644
index 1fbcad21..00000000
--- a/dev/Kernel/Modules/IEEE802/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../Kernel
--std=c++20
diff --git a/dev/Kernel/Modules/LTE/.keepme b/dev/Kernel/Modules/LTE/.keepme
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/LTE/.keepme
+++ /dev/null
diff --git a/dev/Kernel/Modules/LTE/IO.hxx b/dev/Kernel/Modules/LTE/IO.hxx
deleted file mode 100644
index 15546515..00000000
--- a/dev/Kernel/Modules/LTE/IO.hxx
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -------------------------------------------
-
-Copyright ZKA Technologies..
-
-File: LTE\IO.hxx.
-Purpose: LTE I/O.
-
-------------------------------------------- */
-
-#ifndef _INC_NETWORK_LTE_IO_HXX_
-#define _INC_NETWORK_LTE_IO_HXX_
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-
-/// @brief Long Term Evolution I/O routines.
-
-/// @brief Turn on SIM slot.
-Kernel::Boolean lte_turn_on_slot(Kernel::Int32 slot);
-
-/// @brief Turn off SIM slot.
-Kernel::Boolean lte_turn_off_slot(Kernel::Int32 slot);
-
-/// @brief Send AT command.
-Kernel::Boolean lte_send_at_command(Kernel::Char* buf,
- Kernel::Size bufSz);
-
-#endif // ifndef _INC_NETWORK_LTE_IO_HXX_
diff --git a/dev/Kernel/Modules/MBCI/Interface.hxx b/dev/Kernel/Modules/MBCI/Interface.hxx
deleted file mode 100644
index b3d5debb..00000000
--- a/dev/Kernel/Modules/MBCI/Interface.hxx
+++ /dev/null
@@ -1,10 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <Modules/MBCI/MBCI.hxx>
diff --git a/dev/Kernel/Modules/MBCI/MBCI.hxx b/dev/Kernel/Modules/MBCI/MBCI.hxx
deleted file mode 100644
index 6e15762e..00000000
--- a/dev/Kernel/Modules/MBCI/MBCI.hxx
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _INC_MODULE_MBCI_HXX_
-#define _INC_MODULE_MBCI_HXX_
-
-#include <NewKit/Defines.hxx>
-#include <Modules/ACPI/ACPI.hxx>
-
-/**
-- VCC (IN) (OUT for MCU)
-- CLK (IN) (OUT for MCU)
-- ACK (BI) (Contains an Acknowledge Packet Frame)
-- D0- (IN) (Starts with the Host Interface Packet Frame)
-- D1- (IN) (Starts with the Host Interface Packet Frame)
-- D0+ (OUT) (Starts with the Host Interface Packet Frame)
-- D1+ (OUT) (Starts with the Host Interface Packet Frame)
-- GND (IN) (OUT for MCU)
- */
-
-#define cMBCIZeroSz (8)
-#define cMBCIMagic "MBCI "
-
-namespace Kernel
-{
- struct MBCIHostInterface;
- struct MBCIHostInterfacePacketFrame;
-
- /// @brief MBCI Packet frame header
- struct PACKED MBCIHostInterfacePacketFrame final
- {
- UInt32 Magic;
- UInt32 HostId;
- UInt32 Flags;
- UInt32 VendorId;
- UInt32 DeviceId;
- UInt32 DeviceSpeed;
- Bool Acknowledge;
- Char Zero[cMBCIZeroSz];
- };
-
- enum
- {
- eMBCISpeedDeviceInvalid,
- eMBCILowSpeedDevice,
- eMBCIHighSpeedDevice,
- eMBCISpeedDeviceCount,
- };
-
- /// @brief MBCI Host Interface header.
- struct PACKED MBCIHostInterface final
- {
- UInt32 Magic;
- UInt32 HostId;
- UInt16 VendorId;
- UInt16 DeviceId;
- UInt8 MemoryType;
- UInt16 HostType;
- UInt16 HostFlags;
- UInt8 Error;
- UInt8 Status;
- UInt8 InterruptEnable;
- UInt64 BaseAddressRegister;
- UInt64 BaseAddressRegisterSize;
- Char Zero[cMBCIZeroSz];
- };
-
- /// @brief MBCI host flags.
- enum MBCIHostFlags
- {
- eMBCIHostFlagsSupportsNothing, // Invalid MBCI device.
- eMBCIHostFlagsSupportsAPM, // Advanced Power Management.
- eMBCIHostFlagsSupportsDaisyChain, // Is daisy chained.
- eMBCIHostFlagsSupportsHWInterrupts, // Has HW interrupts.
- eMBCIHostFlagsSupportsDMA, // Has DMA.
- eMBCIHostFlagsExtended = __UINT16_MAX__, // Extended flags table.
- };
-
- enum MBCIHostKind
- {
- eMBCIHostKindHardDisk,
- eMBCIHostKindOpticalDisk,
- eMBCIHostKindKeyboardLow,
- eMBCIHostKindMouseLow,
- eMBCIHostKindMouseHigh,
- eMBCIHostKindKeyboardHigh,
- eMBCIHostKindNetworkInterface,
- eMBCIHostKindDaisyChain,
- eMBCIHostKindStartExtended = __UINT16_MAX__, // Extended vendor table.
- };
-
- /// @brief An AuthKey is a context used to decrpy data from an MBCI packet.
- typedef UInt64 MBCIAuthyKeyType;
-} // namespace Kernel
-
-#endif // ifndef _INC_MODULE_MBCI_HXX_
diff --git a/dev/Kernel/Modules/MBCI/compile_flags.txt b/dev/Kernel/Modules/MBCI/compile_flags.txt
deleted file mode 100644
index df83bf4c..00000000
--- a/dev/Kernel/Modules/MBCI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../../
--I../../Kernel
--std=c++20
diff --git a/dev/Kernel/Modules/NVME/.gitkeep b/dev/Kernel/Modules/NVME/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/NVME/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/NVME/Defines.hxx b/dev/Kernel/Modules/NVME/Defines.hxx
deleted file mode 100644
index 6ab57ccb..00000000
--- a/dev/Kernel/Modules/NVME/Defines.hxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- Revision History:
-
- ??/??/24: Added file (amlel)
- 23 Jul 24: Update filename to Defines.hxx and using ALIGN_NVME for NVME structs. (amlel)
-
-------------------------------------------- */
-
-#ifndef __MODULE_NVME_HXX__
-#define __MODULE_NVME_HXX__
-
-#include <NewKit/Defines.hxx>
-
-/// TODO: checklist in: https://wiki.osdev.org/NVMe
-
-#define ALIGN_NVME ATTRIBUTE(aligned(sizeof(Kernel::NVMEInt32)))
-
-namespace Kernel
-{
- typedef UInt32 NVMEInt32;
-
- struct ALIGN_NVME NVMEBar0 final
- {
- NVMEInt32 fCap;
- NVMEInt32 fVer;
- NVMEInt32 fIntMaskSet;
- NVMEInt32 fIntMaskClr;
- NVMEInt32 fContrlConf;
- NVMEInt32 fContrlStat;
- NVMEInt32 fAdminQueueAttr;
- NVMEInt32 fAdminSubmissionQueue;
- NVMEInt32 fAdminCompletionQueue;
- };
-
- struct ALIGN_NVME NVMEQueue final
- {
- NVMEInt32 fOpcode;
- NVMEInt32 fNSID;
- NVMEInt32 fReserved[3];
- NVMEInt32 fMetadataPtr[5];
- NVMEInt32 fDataPtr[9];
- NVMEInt32 CommandSpecific[15];
- };
-
- enum
- {
- eCreateCompletionQueueNVME = 0x05,
- eCreateSubmissionQueueNVME = 0x01,
- eIdentifyNVME = 0x06,
- eReadNVME = 0x02,
- eWriteNVME = 0x01,
- };
-
- template <Int32 Opcode>
- inline Bool nvme_create_admin_command(NVMEQueue* entry, UInt32 nsid,
- UInt32 prpTransfer[3],
- UInt32 startingLba[2], UInt32 lowTransferBlocks)
- {
- if (entry == nullptr)
- return false;
-
- entry->CommandSpecific[9] = startingLba[0];
- entry->CommandSpecific[10] = startingLba[1];
-
- entry->CommandSpecific[11] = lowTransferBlocks;
-
- entry->CommandSpecific[5] = prpTransfer[0];
- entry->CommandSpecific[6] = prpTransfer[1];
- entry->CommandSpecific[7] = prpTransfer[2];
-
- entry->CommandSpecific[0] = nsid;
-
- return true;
- }
-
- template <Int32 Opcode>
- inline Bool nvme_create_io_command(NVMEQueue* entry, UInt64 baseAddress,
- UInt32 identLoAndQueueSizeHi, UInt32 flagsLoAndQueueComplIdHi,
- UInt32 identify, Bool provideIdentify = false, Bool namespaceIdentify = false)
- {
- if (entry == nullptr)
- return false;
-
- if (baseAddress == 0)
- return false;
-
- entry->fOpcode = Opcode;
-
- entry->CommandSpecific[5] = (baseAddress & 0xFF);
- entry->CommandSpecific[6] = static_cast<UInt32>(baseAddress);
-
- if (!provideIdentify)
- {
- entry->CommandSpecific[9] = identLoAndQueueSizeHi;
- entry->CommandSpecific[10] = flagsLoAndQueueComplIdHi;
- }
- else
- {
- entry->CommandSpecific[9] = identify;
-
- if (namespaceIdentify)
- {
- entry->CommandSpecific[0] = 1;
- }
- }
-
- // use (1 << 0) as contigunous is better supported.
-
- return true;
- }
-} // namespace Kernel
-
-#endif // ifndef __MODULE_NVME_HXX__
diff --git a/dev/Kernel/Modules/NVME/compile_flags.txt b/dev/Kernel/Modules/NVME/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/Kernel/Modules/NVME/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/Kernel/Modules/OHCI/.gitkeep b/dev/Kernel/Modules/OHCI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/OHCI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/PS2/PS2MouseInterface.hxx b/dev/Kernel/Modules/PS2/PS2MouseInterface.hxx
deleted file mode 100644
index 0a0f4aa8..00000000
--- a/dev/Kernel/Modules/PS2/PS2MouseInterface.hxx
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: PS2MouseInterface.hxx
- Purpose: PS/2 mouse.
-
- Revision History:
-
- 03/02/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#include <ArchKit/ArchKit.hxx>
-#include <CompilerKit/CompilerKit.hxx>
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- /// @brief PS/2 Mouse driver interface
- class PS2MouseInterface final
- {
- public:
- explicit PS2MouseInterface() = default;
- ~PS2MouseInterface() = default;
-
- NEWOS_COPY_DEFAULT(PS2MouseInterface);
-
- public:
- /// @brief Enables PS2 mouse for kernel.
- /// @return
- Void Init() noexcept
- {
- HAL::rt_cli();
-
- HAL::Out8(0x64, 0xA8); // enabling the auxiliary device - mouse
-
- this->Wait();
- HAL::Out8(0x64, 0x20); // tells the keyboard controller that we want to send a command to the mouse
- this->WaitInput();
-
- UInt8 status = HAL::In8(0x60);
- status |= 0b10;
-
- this->Wait();
- HAL::Out8(0x64, 0x60);
- this->Wait();
- HAL::Out8(0x60, status); // setting the correct bit is the "compaq" status byte
-
- this->Write(0xF6);
- this->Read();
-
- this->Write(0xF4);
- this->Read();
-
- HAL::rt_sti();
- }
-
- public:
- Bool WaitInput() noexcept
- {
- UInt64 timeout = 100000;
-
- while (timeout)
- {
- if ((HAL::In8(0x64) & 0x1))
- {
- return true;
- }
-
- --timeout;
- } // wait until we can read
-
- // return the ack bit.
- return false;
- }
-
- Bool Wait() noexcept
- {
- UInt64 timeout = 100000;
-
- while (timeout)
- {
- if ((HAL::In8(0x64) & 0b10) == 0)
- {
- return true;
- }
-
- --timeout;
- } // wait until we can read
-
- // return the ack bit.
- return false;
- }
-
- Void Write(UInt8 val)
- {
- HAL::Out8(0x64, 0xD4);
- this->Wait();
- HAL::Out8(0x60, val);
- this->Wait();
- }
-
- UInt8 Read()
- {
- this->WaitInput();
- return HAL::In8(0x60);
- }
- };
-} // namespace Kernel
diff --git a/dev/Kernel/Modules/ReadMe.md b/dev/Kernel/Modules/ReadMe.md
deleted file mode 100644
index dde14fe4..00000000
--- a/dev/Kernel/Modules/ReadMe.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Kernel modules
-
-Pluggable modules for builtin hardware support within the kernel.
-
-## Maintainers
-
-ACPI: Amlal EL Mahrouss.
-AHCI: Amlal EL Mahrouss.
-CoreCG: Amlal EL Mahrouss.
-PS2: Amlal EL Mahrouss.
-ATA: Amlal EL Mahrouss.
-MBCI: Amlal El Mahrouss.
diff --git a/dev/Kernel/Modules/SCSI/.gitkeep b/dev/Kernel/Modules/SCSI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/SCSI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/SCSI/SCSI.hxx b/dev/Kernel/Modules/SCSI/SCSI.hxx
deleted file mode 100644
index 5283bc01..00000000
--- a/dev/Kernel/Modules/SCSI/SCSI.hxx
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-/// @file SCSI.hxx
-/// @brief Serial SCSI driver.
-
-typedef Kernel::UInt16 scsi_packet_type[12];
diff --git a/dev/Kernel/Modules/WiFi/.gitkeep b/dev/Kernel/Modules/WiFi/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/WiFi/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/WiFi/compile_flags.txt b/dev/Kernel/Modules/WiFi/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/Kernel/Modules/WiFi/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/Kernel/Modules/XHCI/.gitkeep b/dev/Kernel/Modules/XHCI/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Modules/XHCI/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/Modules/XHCI/Defines.hxx b/dev/Kernel/Modules/XHCI/Defines.hxx
deleted file mode 100644
index b882607c..00000000
--- a/dev/Kernel/Modules/XHCI/Defines.hxx
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Defines.hxx
- Purpose: XHCI (and backwards) header.
-
- Revision History:
-
- 01/02/24: Added file (amlel)
- 03/02/24: Update filename to Defines.hxx (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-using namespace Kernel;
-
-#define kUSBCommand (UInt16)0x0
-#define kUSBStatus (UInt16)0x2
-#define kUSBInterruptEnable (UInt16)0x4
-#define kUSBFrameNum (UInt16)0x6
-#define kUSBFrameListBaseAddress (UInt16)0x8
-#define kUSBFrameModifyStart (UInt16)0xC
-#define kUSBPort1StatusCtrl (UInt16)0x10
-#define kUSBPort2StatusCtrl (UInt16)0x12
-
-typedef struct USBCommandRegister final
-{
- UInt8 mReserved[8]; // Reserved
- UInt8
- mMaxPacket; // 0 = Max packet size 32 bits 1 = Max packet size 64 bits
- UInt8 mConfigure;
- UInt8 mSoftwareDebug;
- UInt8 mGlobalResume;
- UInt8 mGlobalSuspend;
- UInt8 mHostCtrlReset;
- UInt8 mRun; // 1 = Controller execute frame list entries
-} USBCommandRegister;
-
-typedef struct USBStatusRegister final
-{
- UInt8 mReserved[8]; // Reserved
- UInt8 mHalted; // 1 = bit 0 in CMD is zero 0 = bit 0 in CMD is 1
- UInt8 mProcessError;
- UInt8 mSystemError;
- UInt8 mResumeDetected;
- UInt8 mErrorInterrupt;
- UInt8 mInterrupt;
-} USBStatusRegister;
-
-typedef struct USBInterruptEnableRegister final
-{
- UInt8 mReserved[4]; // Reserved
- UInt8 mShortPacket; // 1=Enable interrupt 0=Disable interrupt
- UInt8 mComplete; // 1=Enable interrupt 0=Disable interrupt
- UInt8 mResume; // 1=Enable interrupt 0=Disable interrupt
- UInt8 mTimeoutCRC; // 1=Enable interrupt 0=Disable interrupt
-} USBInterruptEnableRegister;
-
-/*
- Some terminology:
-
- Frame Number: Number of processed entry of the Frame List.
- Frame List Base Address:
- 32-bit physical adress of Frame List. Remember that first 12 bytes are
- always 0. The Frame List must contain 1024 entries.
-*/
diff --git a/dev/Kernel/Modules/XHCI/compile_flags.txt b/dev/Kernel/Modules/XHCI/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/Kernel/Modules/XHCI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/Kernel/MoveAll.ARM64.sh b/dev/Kernel/MoveAll.ARM64.sh
deleted file mode 100644
index 5198559f..00000000
--- a/dev/Kernel/MoveAll.ARM64.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#! /bin/sh
-
-for file in *.o; do
- mv -- "$file" "${file%.o}.obj"
-done
-
-mv *.obj Objects/
diff --git a/dev/Kernel/MoveAll.X64.sh b/dev/Kernel/MoveAll.X64.sh
deleted file mode 100644
index 664ad472..00000000
--- a/dev/Kernel/MoveAll.X64.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#! /bin/sh
-
-for file in *.o; do
- mv -- "$file" "${file%.o}.obj"
-done
-
-mv *.obj HALKit/AMD64/*.obj Objects/ \ No newline at end of file
diff --git a/dev/Kernel/NetworkKit/IP.hxx b/dev/Kernel/NetworkKit/IP.hxx
deleted file mode 100644
index 6003021e..00000000
--- a/dev/Kernel/NetworkKit/IP.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-#include <NewKit/String.hxx>
-
-namespace Kernel
-{
- class RawIPAddress6;
- class RawIPAddress;
- class IPFactory;
-
- class RawIPAddress final
- {
- private:
- explicit RawIPAddress(char bytes[4]);
- ~RawIPAddress() = default;
-
- RawIPAddress& operator=(const RawIPAddress&) = delete;
- RawIPAddress(const RawIPAddress&) = default;
-
- public:
- char* Address();
-
- char& operator[](const Size& index);
-
- bool operator==(const RawIPAddress& ipv6);
- bool operator!=(const RawIPAddress& ipv6);
-
- private:
- char fAddr[4];
-
- friend IPFactory; // it is the one creating these addresses, thus this
- // is why the constructors are private.
- };
-
- /**
- * @brief IPv6 address.
- */
- class RawIPAddress6 final
- {
- private:
- explicit RawIPAddress6(char Bytes[8]);
- ~RawIPAddress6() = default;
-
- RawIPAddress6& operator=(const RawIPAddress6&) = delete;
- RawIPAddress6(const RawIPAddress6&) = default;
-
- public:
- char* Address()
- {
- return fAddr;
- }
-
- char& operator[](const Size& index);
-
- bool operator==(const RawIPAddress6& ipv6);
- bool operator!=(const RawIPAddress6& ipv6);
-
- private:
- char fAddr[8];
-
- friend IPFactory;
- };
-
- /**
- * @brief IP Creation helpers
- */
- class IPFactory final
- {
- public:
- static ErrorOr<StringView> ToStringView(Ref<RawIPAddress6>& ipv6);
- static ErrorOr<StringView> ToStringView(Ref<RawIPAddress>& ipv4);
- static bool IpCheckVersion4(const char* ip);
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NetworkKit/IPC.hxx b/dev/Kernel/NetworkKit/IPC.hxx
deleted file mode 100644
index 2a5ae452..00000000
--- a/dev/Kernel/NetworkKit/IPC.hxx
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies..
-
- File: IPC.hxx.
- Purpose: IPC protocol.
-
-------------------------------------------- */
-
-#ifndef _INC_IPC_ENDPOINT_HXX_
-#define _INC_IPC_ENDPOINT_HXX_
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-
-/// @file IPC.hxx
-/// @brief IPC protocol.
-
-/// IA separator.
-#define cRemoteSeparator "."
-
-/// Interchange address, consists of PID:TEAM.
-#define cRemoteInvalid "00:00"
-
-#define cRemoteHeaderMagic (0x4950434)
-
-namespace Kernel
-{
- /// @brief 128-bit IPC address.
- struct PACKED IPC_ADDRESS_STRUCT final
- {
- UInt64 ProcessID;
- UInt64 ProcessTeam;
-
- ////////////////////////////////////
- // some operators.
- ////////////////////////////////////
-
- bool operator==(const IPC_ADDRESS_STRUCT& addr) noexcept
- {
- return addr.ProcessID == this->ProcessID && addr.ProcessTeam == this->ProcessTeam;
- }
-
- bool operator==(IPC_ADDRESS_STRUCT& addr) noexcept
- {
- return addr.ProcessID == this->ProcessID && addr.ProcessTeam == this->ProcessTeam;
- }
- };
-
- typedef struct IPC_ADDRESS_STRUCT IPCEPAddressKind;
-
- enum
- {
- eIPCEPLittleEndian = 0,
- eIPCEPBigEndian = 1
- };
-
- constexpr auto cIPCEPMsgSize = 6094U;
-
- /// @brief IPC connection header, message cannot be greater than 6K.
- typedef struct IPC_MESSAGE_STRUCT final
- {
- UInt32 IpcHeaderMagic; // cRemoteHeaderMagic
- UInt8 IpcEndianess; // 0 : LE, 1 : BE
- SizeT IpcPacketSize;
- IPCEPAddressKind IpcFrom;
- IPCEPAddressKind IpcTo;
- UInt32 IpcCRC32;
- UInt32 IpcMsg;
- UInt32 IpcMsgSz;
- UInt8 IpcData[cIPCEPMsgSize];
- } PACKED IPC_MESSAGE_STRUCT;
-
- /// @brief Sanitize packet function
- /// @retval true packet is correct.
- /// @retval false packet is incorrect and process has crashed.
- Bool ipc_sanitize_packet(IPC_MESSAGE_STRUCT* pckt);
-} // namespace Kernel
-
-#endif // _INC_IPC_ENDPOINT_HXX_
diff --git a/dev/Kernel/NetworkKit/LTE.hxx b/dev/Kernel/NetworkKit/LTE.hxx
deleted file mode 100644
index 2c390163..00000000
--- a/dev/Kernel/NetworkKit/LTE.hxx
+++ /dev/null
@@ -1,16 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies..
-
- File: LTE.hxx.
- Purpose: LTE protocol classes.
-
-------------------------------------------- */
-
-#ifndef _INC_NETWORK_LTE_HXX_
-#define _INC_NETWORK_LTE_HXX_
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-
-#endif // ifndef _INC_NETWORK_LTE_HXX_
diff --git a/dev/Kernel/NetworkKit/MAC.hxx b/dev/Kernel/NetworkKit/MAC.hxx
deleted file mode 100644
index 8a7b141e..00000000
--- a/dev/Kernel/NetworkKit/MAC.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-
-namespace Kernel
-{
- class MacAddressGetter;
-
- /// \brief This retrieves the MAC address of the device.
- /// \note Listens for the current NIC.
- class MacAddressGetter final
- {
- public:
- explicit MacAddressGetter() = default;
-
- public:
- StringView& AsString();
- Array<WideChar, 12>& AsBytes();
- };
-
-} // namespace Kernel
diff --git a/dev/Kernel/NetworkKit/NetworkDevice.hxx b/dev/Kernel/NetworkKit/NetworkDevice.hxx
deleted file mode 100644
index 79c74459..00000000
--- a/dev/Kernel/NetworkKit/NetworkDevice.hxx
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef __INC_NETWORK_DEVICE_HPP__
-#define __INC_NETWORK_DEVICE_HPP__
-
-#include <KernelKit/DeviceManager.hxx>
-#include <NetworkKit/IP.hxx>
-
-/// @note Can either work with: Ethernet, GPRS, WiFi
-
-namespace Kernel
-{
- struct NetworkDeviceCommand;
- class NetworkDevice;
-
- /**
- * \brief Network device interface, establishes a connection to the NIC.
- */
- class NetworkDevice final : public DeviceInterface<NetworkDeviceCommand>
- {
- public:
- NetworkDevice(void (*out)(NetworkDeviceCommand),
- void (*in)(NetworkDeviceCommand),
- void (*onCleanup)(void) = nullptr);
-
- ~NetworkDevice() override;
-
- public:
- NetworkDevice& operator=(const NetworkDevice&) = default;
- NetworkDevice(const NetworkDevice&) = default;
-
- public:
- const char* Name() const override;
- Boolean Name(const char* strView);
-
- private:
- static constexpr auto cNetworkNameLen = 512;
-
- Void (*fCleanup)(void);
- Char fNetworkName[cNetworkNameLen];
- };
-
- struct NetworkDeviceCommand final
- {
- UInt32 CommandName;
- UInt32 CommandType;
- UInt32 CommandFlags;
- VoidPtr CommandBuffer;
- SizeT CommandSizeBuffer;
- };
-
- /// @brief TCP device.
- using TCPNetworkDevice = NetworkDevice;
-
- /// @brief UDP device.
- using UDPNetworkDevice = NetworkDevice;
-
- /// @brief PPP device.
- using PPPNetworkDevice = NetworkDevice;
-
- /// @brief IPC device.
- using IPCEPNetworkDevice = NetworkDevice;
-
- /// @brief GRPS device.
- using GPRSNetworkDevice = NetworkDevice;
-
- /// @brief GSM device.
- using GSMNetworkDevice = NetworkDevice;
-
- /// @brief LTE device.
- using LTENetworkDevice = NetworkDevice;
-} // namespace Kernel
-
-#include <NetworkKit/NetworkDevice.inl>
-
-#endif // !__INC_NETWORK_DEVICE_HPP__
diff --git a/dev/Kernel/NetworkKit/NetworkDevice.inl b/dev/Kernel/NetworkKit/NetworkDevice.inl
deleted file mode 100644
index 5579eba3..00000000
--- a/dev/Kernel/NetworkKit/NetworkDevice.inl
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/***
- Dtor and ctors.
-*/
-
-namespace Kernel
-{
- NetworkDevice::NetworkDevice(void (*out)(NetworkDeviceCommand),
- void (*in)(NetworkDeviceCommand),
- void (*on_cleanup)(void))
- : DeviceInterface<NetworkDeviceCommand>(out, in), fCleanup(on_cleanup)
- {
- kcout << "newoskrnl: NetworkDevice initialized.\r";
-
- MUST_PASS(out && in && on_cleanup);
- }
-
- NetworkDevice::~NetworkDevice()
- {
- MUST_PASS(fCleanup);
-
- kcout << "newoskrnl: NetworkDevice cleanup.\r";
-
- if (fCleanup)
- fCleanup();
- }
-} // namespace Kernel
diff --git a/dev/Kernel/NetworkKit/compile_flags.txt b/dev/Kernel/NetworkKit/compile_flags.txt
deleted file mode 100644
index 39b236a9..00000000
--- a/dev/Kernel/NetworkKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ED__
diff --git a/dev/Kernel/NewKit/Array.hxx b/dev/Kernel/NewKit/Array.hxx
deleted file mode 100644
index 1a2f6e86..00000000
--- a/dev/Kernel/NewKit/Array.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- template <typename T, Size N>
- class Array final
- {
- public:
- explicit Array() = default;
- ~Array() = default;
-
- Array& operator=(const Array&) = default;
- Array(const Array&) = default;
-
- ErrorOr<T*> operator[](Size At)
- {
- if (At > N)
- return {};
-
- return ErrorOr<T*>(&fArray[At]);
- }
-
- Boolean Empty() const
- {
- for (auto Val : fArray)
- {
- if (Val)
- return false;
- }
-
- return true;
- }
-
- SizeT Count() const
- {
- return N;
- }
-
- const T* CData()
- {
- return fArray;
- }
-
- operator bool()
- {
- return !Empty();
- }
-
- private:
- T fArray[N];
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/ArrayList.hxx b/dev/Kernel/NewKit/ArrayList.hxx
deleted file mode 100644
index 03b0a360..00000000
--- a/dev/Kernel/NewKit/ArrayList.hxx
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- template <typename T>
- class ArrayList final
- {
- public:
- explicit ArrayList(T* list)
- : fList(reinterpret_cast<T>(list))
- {
- }
-
- ~ArrayList() = default;
-
- ArrayList& operator=(const ArrayList&) = default;
- ArrayList(const ArrayList&) = default;
-
- T* Data()
- {
- return fList;
- }
-
- const T* CData()
- {
- return fList;
- }
-
- T& operator[](int index) const
- {
- return fList[index];
- }
-
- operator bool()
- {
- return fList;
- }
-
- private:
- T* fList;
-
- friend class InitHelpers;
- };
-
- template <typename ValueType>
- ArrayList<ValueType> make_list(ValueType val)
- {
- return ArrayList<ValueType>{val};
- }
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Atom.hxx b/dev/Kernel/NewKit/Atom.hxx
deleted file mode 100644
index 616179e9..00000000
--- a/dev/Kernel/NewKit/Atom.hxx
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- template <typename T>
- class Atom final
- {
- public:
- explicit Atom() = default;
- ~Atom() = default;
-
- public:
- Atom& operator=(const Atom&) = delete;
- Atom(const Atom&) = delete;
-
- public:
- T operator[](Size sz)
- {
- return (fArrayOfAtoms & sz);
- }
- void operator|(Size sz)
- {
- fArrayOfAtoms |= sz;
- }
-
- friend Boolean operator==(Atom<T>& atomic, const T& idx)
- {
- return atomic[idx] == idx;
- }
-
- friend Boolean operator!=(Atom<T>& atomic, const T& idx)
- {
- return atomic[idx] == idx;
- }
-
- private:
- T fArrayOfAtoms;
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Crc32.hxx b/dev/Kernel/NewKit/Crc32.hxx
deleted file mode 100644
index b050df24..00000000
--- a/dev/Kernel/NewKit/Crc32.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * ========================================================
- *
- * Kernel Date Added: 13/02/2023
- * Copyright ZKA Technologies., all rights reserved.
- *
- * ========================================================
- */
-
-#ifndef __CRC32_H__
-#define __CRC32_H__
-
-#include <NewKit/Defines.hxx>
-
-#define kCrcCnt (256)
-
-namespace Kernel
-{
- UInt ke_calculate_crc32(const Char* crc, UInt len) noexcept;
-} // namespace Kernel
-
-#endif // !__CRC32_H__
diff --git a/dev/Kernel/NewKit/CxxAbi.hxx b/dev/Kernel/NewKit/CxxAbi.hxx
deleted file mode 100644
index f0b3cf51..00000000
--- a/dev/Kernel/NewKit/CxxAbi.hxx
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-#ifndef __NDK__
-
-#define kDSOMaxObjects (128)
-
-struct atexit_func_entry_t
-{
- void (*destructor_func)(void*);
- void* obj_ptr;
- void* dso_handle;
-};
-
-typedef unsigned uarch_t;
-
-namespace cxxabiv1
-{
- typedef void* __guard;
-}
-
-#endif // __GNUC__
diff --git a/dev/Kernel/NewKit/Defines.hxx b/dev/Kernel/NewKit/Defines.hxx
deleted file mode 100644
index e0ad3bf6..00000000
--- a/dev/Kernel/NewKit/Defines.hxx
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Macros.hxx>
-
-#define NEWKIT_VERSION "1.01"
-
-#if !defined(_INC_NO_STDC_HEADERS) && defined(__GNUC__)
-#include <CRTKit/__ndk_defines.hxx>
-#endif
-
-#ifdef __has_feature
-#if !__has_feature(cxx_nullptr)
-#if !__has_nullptr
-#error !!! You must at least have nullptr featured on your C++ compiler. !!!
-#endif
-#endif
-#endif
-
-/// @brief The **newoskrnl** namespace where it's API resides.
-namespace Kernel
-{
- using voidPtr = void*;
- using VoidPtr = void*;
- using nullPtr = decltype(nullptr);
- using NullPtr = decltype(nullptr);
-
- using Int = int;
- using Int32 = int;
- using UShort = unsigned short;
- using UInt16 = unsigned short;
- using Short = short;
- using Int16 = short;
- using UInt = unsigned int;
- using UInt32 = unsigned int;
- using Long = __INT64_TYPE__;
- using Int64 = __INT64_TYPE__;
- using ULong = __UINT64_TYPE__;
- using UInt64 = __UINT64_TYPE__;
- using Boolean = bool;
- using Bool = bool;
- using Char = char;
- using UChar = unsigned char;
- using UInt8 = unsigned char;
-
- using SSize = Int64;
- using SSizeT = Int64;
- using Size = __SIZE_TYPE__;
- using SizeT = __SIZE_TYPE__;
- using IntPtr = __INTPTR_TYPE__;
- using UIntPtr = __UINTPTR_TYPE__;
- using IntFast = __INT_FAST32_TYPE__;
- using IntFast64 = __INT_FAST64_TYPE__;
- using PtrDiff = __PTRDIFF_TYPE__;
-
- typedef UIntPtr* Ptr64;
- typedef UInt32* Ptr32;
-
- using Utf8Char = char8_t;
- using Utf16Char = char16_t;
- using WideChar = wchar_t;
- using Utf32Char = char32_t;
-
- typedef UInt64 PhysicalAddress;
- typedef UInt64 VirtualAddress;
-
- using Void = void;
-
- using Lba = UInt64;
-
- enum class Endian : UChar
- {
- kEndianLittle,
- kEndianBig,
- kEndianMixed,
- kCount
- };
-
- /// @brief Forward object.
- /// @tparam Args the object type.
- /// @param arg the object.
- /// @return object's rvalue
- template <typename Args>
- inline Args&& forward(Args& arg)
- {
- return static_cast<Args&&>(arg);
- }
-
- /// @brief Move object.
- /// @tparam Args the object type.
- /// @param arg the object.
- /// @return object's rvalue
- template <typename Args>
- inline Args&& move(Args&& arg)
- {
- return static_cast<Args&&>(arg);
- }
-
- /// @brief Encoder class
- /// Used to cast A to B or B to A.
- class Encoder final
- {
- public:
- explicit Encoder() = default;
- ~Encoder() = default;
-
- Encoder& operator=(const Encoder&) = default;
- Encoder(const Encoder&) = default;
-
- public:
- /// @brief Convert type to bytes.
- /// @tparam T the type.
- /// @param type (a1) the data.
- /// @return a1 as Char*
- template <typename T>
- Char* AsBytes(T type) noexcept
- {
- return reinterpret_cast<Char*>(type);
- }
-
- /// @brief Convert T class to Y class.
- /// @tparam T the class type of type.
- /// @tparam Y the result class.
- /// @param type the class to cast.
- /// @return the class as Y.
- template <typename T, typename Y>
- Y As(T type) noexcept
- {
- return type.template As<Y>();
- }
- };
-} // namespace Kernel
-
-#define DEDUCE_ENDIAN(address, value) \
- (((reinterpret_cast<Kernel::Char*>(address)[0]) == (value)) \
- ? (Kernel::Endian::kEndianBig) \
- : (Kernel::Endian::kEndianLittle))
-
-#define Yes true
-#define No false
-
-#define VoidStar Kernel::VoidPtr
-
-#ifdef cInitObject
-#undef cInitObject
-#endif // ifdef cInitObject
-
-#define cInitObject(OBJ, TYPE, ...) TYPE OBJ = TYPE(__VA_ARGS__)
diff --git a/dev/Kernel/NewKit/ErrorOr.hxx b/dev/Kernel/NewKit/ErrorOr.hxx
deleted file mode 100644
index ae2763b2..00000000
--- a/dev/Kernel/NewKit/ErrorOr.hxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * ========================================================
- *
- * Kernel
- * Copyright ZKA Technologies., all rights reserved.
- *
- * ========================================================
- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- using ErrorT = UInt;
-
- template <typename T>
- class ErrorOr final
- {
- public:
- ErrorOr() = default;
- ~ErrorOr() = default;
-
- public:
- explicit ErrorOr(Int32 err)
- : mId(err)
- {
- }
-
- explicit ErrorOr(nullPtr Null)
- {
- }
-
- explicit ErrorOr(T Class)
- : mRef(Class, true)
- {
- }
-
- ErrorOr& operator=(const ErrorOr&) = default;
- ErrorOr(const ErrorOr&) = default;
-
- ErrorOr& operator=(const Ref<T>& refErr)
- {
- mRef = refErr;
- return *this;
- }
-
- Ref<T>& Leak()
- {
- return mRef;
- }
-
- Int32 Error()
- {
- return mId;
- }
-
- operator bool()
- {
- return mRef;
- }
-
- private:
- Ref<T> mRef;
- Int32 mId{0};
- };
-
- using ErrorOrAny = ErrorOr<voidPtr>;
-
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Function.hxx b/dev/Kernel/NewKit/Function.hxx
deleted file mode 100644
index e54ff456..00000000
--- a/dev/Kernel/NewKit/Function.hxx
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _INC_FUNCTION_HPP__
-#define _INC_FUNCTION_HPP__
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- template <typename T, typename... Args>
- class Function final
- {
- public:
- Function() = default;
-
- public:
- explicit Function(T (*Fn)(Args... args))
- : fFn(Fn)
- {
- }
-
- ~Function() = default;
-
- Function& operator=(const Function&) = default;
- Function(const Function&) = default;
-
- template <typename... XArgs>
- T operator()(Args... args)
- {
- return fFn(args...);
- }
-
- template <typename... XArgs>
- T Call(Args... args)
- {
- return fFn(args...);
- }
-
- operator bool()
- {
- return fFn;
- }
-
- bool operator!()
- {
- return !fFn;
- }
-
- private:
- T(*fFn)
- (Args... args);
- };
-} // namespace Kernel
-
-#endif // !_INC_FUNCTION_HPP__
diff --git a/dev/Kernel/NewKit/Json.hxx b/dev/Kernel/NewKit/Json.hxx
deleted file mode 100644
index 74566942..00000000
--- a/dev/Kernel/NewKit/Json.hxx
+++ /dev/null
@@ -1,134 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-// last-rev: 30/01/24
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/Stream.hxx>
-#include <NewKit/String.hxx>
-#include <NewKit/Utils.hxx>
-
-#define cMaxJsonPath 4096
-#define cJSONLen 32
-#define cJSONNull "null"
-
-namespace Kernel
-{
- /// @brief Json value class
- class JsonType final
- {
- public:
- explicit JsonType()
- {
- auto len = cJSONLen;
- StringView key = StringView(len);
- key += cJSONNull;
-
- this->AsKey() = key;
- this->AsValue() = key;
- }
-
- explicit JsonType(SizeT lhsLen, SizeT rhsLen)
- : fKey(lhsLen), fValue(rhsLen)
- {
- }
-
- ~JsonType() = default;
-
- NEWOS_COPY_DEFAULT(JsonType);
-
- const Bool& IsUndefined() { return fUndefined; }
-
- private:
- Bool fUndefined; // is this instance undefined?
- StringView fKey;
- StringView fValue;
-
- public:
- /// @brief returns the key of the json
- /// @return the key as string view.
- StringView& AsKey()
- {
- return fKey;
- }
-
- /// @brief returns the value of the json.
- /// @return the key as string view.
- StringView& AsValue()
- {
- return fValue;
- }
-
- static JsonType kNull;
- };
-
- /// @brief Json stream reader helper.
- struct JsonStreamReader final
- {
- STATIC JsonType In(const Char* full_array)
- {
- if (full_array[0] != '{')
- return JsonType::kNull;
-
- SizeT len = rt_string_len(full_array);
- Boolean probe_value = false;
-
- SizeT key_len = 0;
- SizeT value_len = 0;
-
- JsonType type(cMaxJsonPath, cMaxJsonPath);
-
- for (SizeT i = 1; i < len; ++i)
- {
- if (full_array[i] == '\r' ||
- full_array[i] == '\n')
- continue;
-
- if (probe_value)
- {
- if (full_array[i] == '}' ||
- full_array[i] == ',')
- {
- probe_value = false;
-
- ++value_len;
- }
- else
- {
- type.AsValue().Data()[value_len] = full_array[i];
-
- ++value_len;
- }
- }
- else
- {
- if (full_array[i] == ':')
- {
- probe_value = true;
- type.AsKey().Data()[key_len] = 0;
- ++key_len;
- }
- else
- {
- type.AsKey().Data()[key_len] = full_array[i];
-
- ++key_len;
- }
- }
- }
-
- type.AsValue().Data()[value_len] = 0;
-
- return type;
- }
- };
-
- using JsonStream = Stream<JsonStreamReader, JsonType>;
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/KernelCheck.hxx b/dev/Kernel/NewKit/KernelCheck.hxx
deleted file mode 100644
index 78d7506f..00000000
--- a/dev/Kernel/NewKit/KernelCheck.hxx
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- void ke_runtime_check(bool bExpression, const char* file, const char* line);
-}
-
-#define MUST_PASS_COMPILER(EXPR, MSG) static_assert(EXPR, MSG)
-#define __MUST_PASS(EXPR, FILE, LINE) \
- Kernel::ke_runtime_check(EXPR, FILE, STRINGIFY(LINE))
-#define MUST_PASS(EXPR) __MUST_PASS(EXPR, __FILE__, __LINE__)
-#define assert(EXPR) MUST_PASS(EXPR, RUNTIME_CHECK_EXPRESSION)
-
-enum RUNTIME_CHECK
-{
- RUNTIME_CHECK_FAILED = -1,
- RUNTIME_CHECK_POINTER = 0,
- RUNTIME_CHECK_EXPRESSION,
- RUNTIME_CHECK_FILE,
- RUNTIME_CHECK_IPC,
- RUNTIME_CHECK_TLS,
- RUNTIME_CHECK_HANDSHAKE,
- RUNTIME_CHECK_ACPI,
- RUNTIME_CHECK_INVALID_PRIVILEGE,
- RUNTIME_CHECK_PROCESS,
- RUNTIME_CHECK_BAD_BEHAVIOR,
- RUNTIME_CHECK_BOOTSTRAP,
- RUNTIME_CHECK_UNEXCPECTED,
- RUNTIME_CHECK_COUNT,
-};
-
-namespace Kernel
-{
- /// @brief Dumping factory class.
- class RecoveryFactory final
- {
- public:
- STATIC Void Recover() noexcept;
- };
-
- void ke_stop(const Int& id);
-} // namespace Kernel
-
-#ifdef TRY
-#undef TRY
-#endif
-
-#define TRY(FN) \
- if (!FN()) \
- { \
- MUST_PASS(false); \
- }
diff --git a/dev/Kernel/NewKit/Macros.hxx b/dev/Kernel/NewKit/Macros.hxx
deleted file mode 100644
index a17d91fb..00000000
--- a/dev/Kernel/NewKit/Macros.hxx
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#ifndef KIB
-#define KIB(X) ((X) / 1024)
-#endif
-
-#ifndef kib_cast
-#define kib_cast(X) ((X) * 1024)
-#endif
-
-#ifndef MIB
-#define MIB(X) ((UInt64)KIB(X) / 1024)
-#endif
-
-#ifndef mib_cast
-#define mib_cast(X) ((UInt64)kib_cast(X) * 1024)
-#endif
-
-#ifndef GIB
-#define GIB(X) ((UInt64)MIB(X) / 1024)
-#endif
-
-#ifndef gib_cast
-#define gib_cast(X) ((UInt64)mib_cast(X) * 1024)
-#endif
-
-#ifndef TIB
-#define TIB(X) ((UInt64)GIB(X) / 1024)
-#endif
-
-#ifndef tib_cast
-#define tib_cast(X) ((UInt64)gib_cast(X) * 1024)
-#endif
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(a) \
- (((sizeof(a) / sizeof(*(a))) / \
- (static_cast<Kernel::Size>(!(sizeof(a) % sizeof(*(a)))))))
-#endif
-
-#ifndef ALIGN
-#define ALIGN(X) __attribute__((aligned(X)))
-#endif // #ifndef ALIGN
-
-#ifndef ATTRIBUTE
-#define ATTRIBUTE(X) __attribute__((X))
-#endif // #ifndef ATTRIBUTE
-
-#ifndef __MAHROUSS_VER__
-#define __MAHROUSS_VER__ (2024)
-#endif // !__MAHROUSS_VER__
-
-#ifndef EXTERN_C
-#define EXTERN_C extern "C"
-#endif
-
-#ifndef MAKE_ENUM
-#define MAKE_ENUM(NAME) \
- enum NAME \
- {
-#endif
-
-#ifndef END_ENUM
-#define END_ENUM() \
- } \
- ;
-#endif
-
-#ifndef MAKE_STRING_ENUM
-#define MAKE_STRING_ENUM(NAME) \
- namespace NAME \
- {
-#endif
-
-#ifndef ENUM_STRING
-#define ENUM_STRING(NAME, VAL) inline constexpr const char* e##NAME = VAL
-#endif
-
-#ifndef END_STRING_ENUM
-#define END_STRING_ENUM() }
-#endif
-
-#ifndef ALLOCA
-#define ALLOCA(Sz) __builtin_alloca(Sz)
-#endif // #ifndef ALLOCA
-
-#ifndef CANT_REACH
-#define CANT_REACH() __builtin_unreachable()
-#endif
-
-#define kBadPtr 0xFBFBFBFBFBFBFBFB
-#define kMaxAddr 0xFFFFFFFFFFFFFFFF
-#define kPathLen 255
-
-#define PACKED ATTRIBUTE(packed)
-#define NO_EXEC ATTRIBUTE(noexec)
-
-#define EXTERN extern
-#define STATIC static
-
-#define CONST const
-
-#define STRINGIFY(X) #X
-#define NEWOS_UNUSED(X) ((Kernel::Void)X)
-
-#ifndef RGB
-#define RGB(R, G, B) (Kernel::UInt32)(R | G << 0x8 | B << 0x10)
-#endif // !RGB
diff --git a/dev/Kernel/NewKit/MutableArray.hxx b/dev/Kernel/NewKit/MutableArray.hxx
deleted file mode 100644
index 0015f9a9..00000000
--- a/dev/Kernel/NewKit/MutableArray.hxx
+++ /dev/null
@@ -1,239 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <NewKit/Array.hxx>
-#include <NewKit/Defines.hxx>
-
-#define TRY_FIND_NODE(NAME, NODE) \
- auto* NAME = NODE; \
- while (NAME) \
- { \
- if (NAME->fIndex == Index) \
- return NAME->fVal; \
- NAME = NAME->fNext; \
- }
-
-#define TRY_FIND_NODE2(NAME, NODE) \
- auto* NAME = NODE; \
- while (NAME) \
- { \
- if (NAME->fIndex == Index) \
- return Ref<T>{NAME->fVal}; \
- NAME = NAME->fNext; \
- }
-
-#define TRY_REMOVE_NODE(NODE) \
- if (NODE && NODE->fIndex == Index) \
- { \
- NODE->fUsed = false; \
- NODE->fIndex = 0; \
- \
- return true; \
- }
-
-// FIXME: this is a shitty algorithm, which is consumer hungry.
-// Remove and occurences of that, and remove that class.
-namespace Kernel
-{
- template <typename T>
- class MutableArray;
-
- template <typename T, T _PlaceHolderValue>
- class NullableMutableArray;
-
- template <typename T>
- class MutableLinkedList
- {
- public:
- T fVal;
- SizeT fIndex{0};
- Boolean fUsed{false};
-
- MutableLinkedList* fPrev{nullptr};
- MutableLinkedList* fNext{nullptr};
- };
-
- template <typename T, T _PlaceHolderValue>
- class NullableMutableArray
- {
- public:
- // explicit this.
- explicit NullableMutableArray()
- : fFirstNode(new MutableLinkedList<T>())
- {
- }
-
- /*
- * We free all the nodes allocated by the array
- * and store the next one inside "NextIt"
- */
-
- virtual ~NullableMutableArray()
- {
- auto* It = fFirstNode;
- MutableLinkedList<T>* NextIt = nullptr;
-
- while (It)
- {
- NextIt = It->fNext;
- delete It;
-
- It = NextIt;
- }
- }
-
- NullableMutableArray& operator=(const NullableMutableArray&) = default;
- NullableMutableArray(const NullableMutableArray&) = default;
-
- operator bool()
- {
- return Count() > 1;
- }
-
- public:
- T operator[](const SizeT& Index) const
- {
- TRY_FIND_NODE(first, fFirstNode);
- TRY_FIND_NODE(last, fLastNode);
-
- return _PlaceHolderValue;
- }
-
- SizeT Count() const
- {
- return fNodeCount;
- }
-
- public:
- Boolean Remove(const SizeT& Index)
- {
- TRY_REMOVE_NODE(fFirstNode);
- TRY_REMOVE_NODE(fLastNode);
-
- return false;
- }
-
- Boolean Add(const T val)
- {
- auto* iterationNode = fFirstNode;
- MUST_PASS(iterationNode);
-
- while (iterationNode)
- {
- if (!iterationNode->fUsed)
- {
- iterationNode->fVal = val;
- iterationNode->fIndex = 0;
-
- iterationNode->fUsed = true;
-
- ++fNodeCount;
-
- return true;
- }
-
- iterationNode = iterationNode->fNext;
- }
-
- return false;
- }
-
- private:
- /* Avoid useless lookups */
- MutableLinkedList<T>* fLastNode{nullptr};
- MutableLinkedList<T>* fFirstNode{nullptr};
-
- /* Number of nodes inside of this dynamic array. */
- Kernel::SizeT fNodeCount{0};
-
- private:
- // don't remove that
- friend MutableArray<T>;
- };
-
- template <typename T>
- class MutableArray : public NullableMutableArray<voidPtr, nullptr>
- {
- public:
- // explicit this.
- explicit MutableArray() = default;
- virtual ~MutableArray() = default;
-
- NEWOS_COPY_DEFAULT(MutableArray)
-
- public:
- Boolean Add(const T val)
- {
- auto* iterationNode = fFirstNode;
-
- if (!iterationNode)
- {
- fFirstNode = new MutableLinkedList<T>();
- iterationNode = fFirstNode;
- }
-
- MUST_PASS(iterationNode);
-
- while (iterationNode)
- {
- if (!iterationNode->fUsed)
- {
- iterationNode->fVal = val;
- iterationNode->fIndex = 0;
-
- iterationNode->fUsed = true;
-
- ++fNodeCount;
-
- return true;
- }
-
- iterationNode = iterationNode->fNext;
- }
-
- return false;
- }
-
- public:
- Ref<T> operator[](const SizeT& Index) const
- {
- TRY_FIND_NODE2(first, fFirstNode);
- TRY_FIND_NODE2(last, fLastNode);
-
- return {};
- }
-
- SizeT Count() const
- {
- return fNodeCount;
- }
-
- bool Contains(T& value) noexcept
- {
- MutableLinkedList<T>* first = fFirstNode;
-
- while (first)
- {
- if (first->fVal == value && first->fUsed)
- return true;
-
- first = first->fNext;
- }
-
- return false;
- }
-
- private:
- /* Avoid useless lookups */
- MutableLinkedList<T>* fLastNode{nullptr};
- MutableLinkedList<T>* fFirstNode{nullptr};
-
- /* Number of nodes inside of this dynamic array. */
- Kernel::SizeT fNodeCount{0};
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/New.hxx b/dev/Kernel/NewKit/New.hxx
deleted file mode 100644
index 8605b9c3..00000000
--- a/dev/Kernel/NewKit/New.hxx
+++ /dev/null
@@ -1,18 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-#pragma once
-
-#include <KernelKit/Heap.hxx>
-
-typedef __SIZE_TYPE__ size_t; // gcc will complain about that
-
-void* operator new(size_t ptr);
-void* operator new[](size_t ptr);
-
-void operator delete(void* ptr);
-void operator delete(void* ptr, unsigned long);
-void operator delete[](void* ptr);
diff --git a/dev/Kernel/NewKit/NewKit.hxx b/dev/Kernel/NewKit/NewKit.hxx
deleted file mode 100644
index e7766bde..00000000
--- a/dev/Kernel/NewKit/NewKit.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Array.hxx>
-#include <NewKit/ArrayList.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Json.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <KernelKit/LockDelegate.hxx>
-#include <NewKit/MutableArray.hxx>
-#include <NewKit/New.hxx>
-#include <NewKit/OwnPtr.hxx>
-#include <NewKit/Ref.hxx>
-#include <NewKit/Stream.hxx>
-#include <KernelKit/ProcessHeap.hxx>
-#include <NewKit/Utils.hxx>
diff --git a/dev/Kernel/NewKit/OwnPtr.hxx b/dev/Kernel/NewKit/OwnPtr.hxx
deleted file mode 100644
index 6e42b33f..00000000
--- a/dev/Kernel/NewKit/OwnPtr.hxx
+++ /dev/null
@@ -1,94 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- template <typename T>
- class OwnPtr;
-
- template <typename T>
- class NonNullRefPtr;
-
- template <typename T>
- class OwnPtr final
- {
- public:
- OwnPtr()
- {
- }
- ~OwnPtr()
- {
- this->Delete();
- }
-
- OwnPtr& operator=(const OwnPtr&) = default;
- OwnPtr(const OwnPtr&) = default;
-
- public:
- template <typename... Args>
- bool New(Args&&... arg)
- {
- if (fCls)
- {
- return false;
- }
-
- fCls = new T(arg...);
- return fCls;
- }
-
- void Delete()
- {
- if (fCls)
- delete fCls;
-
- fCls = nullptr;
- }
-
- T* operator->() const
- {
- return fCls;
- };
- T* Raw()
- {
- return fCls;
- }
-
- Ref<T> AsRef()
- {
- return Ref<T>(fCls);
- }
-
- operator bool()
- {
- return fCls;
- }
- bool operator!()
- {
- return !fCls;
- }
-
- private:
- T* fCls;
- };
-
- template <typename T, typename... Args>
- OwnPtr<T> make_ptr(Args... args)
- {
- OwnPtr<T> ret;
- ret.template New<Args...>(forward(args)...);
- MUST_PASS(ret);
-
- return ret;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/PageAllocator.hxx b/dev/Kernel/NewKit/PageAllocator.hxx
deleted file mode 100644
index b485e722..00000000
--- a/dev/Kernel/NewKit/PageAllocator.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/PageManager.hxx>
-
-namespace Kernel
-{
- namespace Detail
- {
- VoidPtr create_page_wrapper(Boolean rw, Boolean user, SizeT pageSz);
- void exec_disable(UIntPtr addr);
- bool page_disable(UIntPtr addr);
- } // namespace Detail
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/PageManager.hxx b/dev/Kernel/NewKit/PageManager.hxx
deleted file mode 100644
index 745395ec..00000000
--- a/dev/Kernel/NewKit/PageManager.hxx
+++ /dev/null
@@ -1,81 +0,0 @@
-// a way to create and find our pages.
-// I'm thinking about a separate way of getting a paged area.
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/PageAllocator.hxx>
-#include <NewKit/Ref.hxx>
-
-#ifndef kBadAddress
-#define kBadAddress (0)
-#endif // #ifndef kBadAddress
-
-namespace Kernel
-{
- class PageManager;
-
- class PTEWrapper final
- {
- public:
- explicit PTEWrapper(Boolean Rw = false, Boolean User = false, Boolean ExecDisable = false, UIntPtr Address = 0);
-
- ~PTEWrapper();
-
- PTEWrapper& operator=(const PTEWrapper&) = default;
- PTEWrapper(const PTEWrapper&) = default;
-
- public:
- const UIntPtr VirtualAddress();
-
- void NoExecute(const bool enable = false);
- const bool& NoExecute();
-
- bool Reclaim();
- bool Shareable();
- bool Present();
- bool Access();
-
- private:
- Boolean fRw;
- Boolean fUser;
- Boolean fExecDisable;
- UIntPtr fVirtAddr;
- Boolean fCache;
- Boolean fShareable;
- Boolean fWt;
- Boolean fPresent;
- Boolean fAccessed;
-
- private:
- friend class PageManager;
- friend class Pmm;
- };
-
- struct PageManager final
- {
- public:
- PageManager() = default;
- ~PageManager() = default;
-
- PageManager& operator=(const PageManager&) = default;
- PageManager(const PageManager&) = default;
-
- public:
- PTEWrapper Request(Boolean Rw, Boolean User, Boolean ExecDisable, SizeT Sz);
- bool Free(Ref<PTEWrapper*>& wrapper);
-
- private:
- void FlushTLB(UIntPtr VirtAddr);
-
- private:
- friend PTEWrapper;
- friend class Pmm;
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Pair.hxx b/dev/Kernel/NewKit/Pair.hxx
deleted file mode 100644
index e7ca064a..00000000
--- a/dev/Kernel/NewKit/Pair.hxx
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
-
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Pmm.hxx b/dev/Kernel/NewKit/Pmm.hxx
deleted file mode 100644
index 111b3044..00000000
--- a/dev/Kernel/NewKit/Pmm.hxx
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/PageManager.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- class Pmm;
- class PTEWrapper;
-
- class Pmm final
- {
- public:
- explicit Pmm();
- ~Pmm();
-
- Pmm& operator=(const Pmm&) = delete;
- Pmm(const Pmm&) = default;
-
- Ref<PTEWrapper> RequestPage(Boolean user = false, Boolean readWrite = false);
- Boolean FreePage(Ref<PTEWrapper> refPage);
-
- Boolean ToggleRw(Ref<PTEWrapper> refPage, Boolean enable = true);
- Boolean TogglePresent(Ref<PTEWrapper> refPage, Boolean enable = true);
- Boolean ToggleUser(Ref<PTEWrapper> refPage, Boolean enable = true);
- Boolean ToggleShare(Ref<PTEWrapper> refPage, Boolean enable = true);
-
- /// @brief Get the page manager of this.
- Ref<PageManager>& Leak()
- {
- return fPageManager;
- }
-
- private:
- Ref<PageManager> fPageManager;
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Ref.hxx b/dev/Kernel/NewKit/Ref.hxx
deleted file mode 100644
index 14d66f0a..00000000
--- a/dev/Kernel/NewKit/Ref.hxx
+++ /dev/null
@@ -1,106 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifndef _NEWKIT_REF_HPP_
-#define _NEWKIT_REF_HPP_
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/KernelCheck.hxx>
-
-namespace Kernel
-{
- template <typename T>
- class Ref final
- {
- public:
- Ref() = default;
-
- ~Ref()
- {
- if (fStrong)
- {
- fClass = nullptr;
- }
- }
-
- public:
- Ref(T cls, const bool& strong = false)
- : fClass(&cls), fStrong(strong)
- {
- }
-
- Ref& operator=(T ref)
- {
- *fClass = ref;
- return *this;
- }
-
- public:
- T operator->() const
- {
- return *fClass;
- }
-
- T& Leak() noexcept
- {
- return *fClass;
- }
-
- T& TryLeak() const noexcept
- {
- MUST_PASS(*fClass);
- return *fClass;
- }
-
- T operator*()
- {
- return *fClass;
- }
-
- bool IsStrong() const
- {
- return fStrong;
- }
-
- operator bool() noexcept
- {
- return fStrong;
- }
-
- private:
- T* fClass;
- Bool fStrong{false};
- };
-
- template <typename T>
- class NonNullRef final
- {
- public:
- NonNullRef() = delete;
- NonNullRef(nullPtr) = delete;
-
- NonNullRef(T* ref)
- : fRef(ref, true)
- {
- MUST_PASS(ref != nullptr);
- }
-
- Ref<T>& operator->()
- {
- MUST_PASS(fRef);
- return fRef;
- }
-
- NonNullRef& operator=(const NonNullRef<T>& ref) = delete;
- NonNullRef(const NonNullRef<T>& ref) = default;
-
- private:
- Ref<T> fRef{nullptr};
- };
-} // namespace Kernel
-
-#endif // ifndef _NEWKIT_REF_HPP_
diff --git a/dev/Kernel/NewKit/Stream.hxx b/dev/Kernel/NewKit/Stream.hxx
deleted file mode 100644
index e2f63b17..00000000
--- a/dev/Kernel/NewKit/Stream.hxx
+++ /dev/null
@@ -1,58 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/Ref.hxx>
-
-namespace Kernel
-{
- template <typename StreamTrait, typename Kind>
- class Stream final
- {
- public:
- explicit Stream(Ref<Stream> ref)
- : fStream(ref)
- {
- }
-
- ~Stream() = default;
-
- Stream& operator=(const Stream&) = default;
- Stream(const Stream&) = default;
-
- template <typename Data>
- friend Stream<StreamTrait, Kind>& operator>>(Stream<StreamTrait, Kind>& Ks, Ref<Data>& Buf)
- {
- Ks.fKind = Ks.fStream->In(Buf);
- return *Ks;
- }
-
- template <typename Data>
- friend Stream<StreamTrait, Kind>& operator<<(Stream<StreamTrait, Kind>& Ks, Ref<Data>& Buf)
- {
- Ks.fKind = Buf;
- Ks.fStream->Out(Buf.Leak());
- return *Ks;
- }
-
- Ref<StreamTrait>& AsStreamTrait()
- {
- return fStream;
- }
-
- Ref<Kind>& AsType()
- {
- return fKind;
- }
-
- private:
- Ref<StreamTrait> fStream;
- Ref<Kind> fKind;
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/String.hxx b/dev/Kernel/NewKit/String.hxx
deleted file mode 100644
index 2f3d2096..00000000
--- a/dev/Kernel/NewKit/String.hxx
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/ErrorOr.hxx>
-#include <NewKit/Utils.hxx>
-#include <NewKit/KernelCheck.hxx>
-
-namespace Kernel
-{
- class StringView final
- {
- public:
- explicit StringView()
- {
- fSz = 4096;
-
- fData = new Char[fSz];
- MUST_PASS(fData);
-
- rt_set_memory(fData, 0, fSz);
- }
-
- explicit StringView(Size Sz)
- : fSz(Sz)
- {
- MUST_PASS(Sz > 1);
- fData = new Char[Sz];
- MUST_PASS(fData);
-
- rt_set_memory(fData, 0, Sz);
- }
-
- ~StringView()
- {
- if (fData)
- delete[] fData;
- }
-
- StringView& operator=(const StringView&) = default;
- StringView(const StringView&) = default;
-
- Char* Data();
- const Char* CData() const;
- Size Length() const;
-
- bool operator==(const Char* rhs) const;
- bool operator!=(const Char* rhs) const;
-
- bool operator==(const StringView& rhs) const;
- bool operator!=(const StringView& rhs) const;
-
- StringView& operator+=(const Char* rhs);
- StringView& operator+=(const StringView& rhs);
-
- operator bool()
- {
- return fData;
- }
-
- bool operator!()
- {
- return fData;
- }
-
- private:
- Char* fData{nullptr};
- Size fSz{0};
- Size fCur{0};
-
- friend class StringBuilder;
- };
-
- struct StringBuilder final
- {
- static ErrorOr<StringView> Construct(const Char* data);
- static const char* FromInt(const char* fmt, int n);
- static const char* FromBool(const char* fmt, bool n);
- static const char* Format(const char* fmt, const char* from);
- static bool Equals(const char* lhs, const char* rhs);
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Utils.hxx b/dev/Kernel/NewKit/Utils.hxx
deleted file mode 100644
index a7213b5a..00000000
--- a/dev/Kernel/NewKit/Utils.hxx
+++ /dev/null
@@ -1,29 +0,0 @@
-
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-
-namespace Kernel
-{
- Int rt_copy_memory(const voidPtr src, voidPtr dst, Size len);
- Int rt_move_memory(const voidPtr src, voidPtr dst, Size len);
- voidPtr rt_set_memory(voidPtr dst, Char val, Size len);
- void rt_zero_memory(voidPtr pointer, Size len);
- Int rt_string_cmp(const Char* src, const Char* cmp, Size len);
- const Char* alloc_string(const Char* text);
- Size rt_string_len(const Char* str);
- Size rt_string_len(const Char* str, SizeT _len);
- Boolean rt_to_string(Char* buf, Int limit, Int base);
- Boolean is_newln(Char chr);
- Boolean is_space(Char chr);
- Int rt_to_uppercase(Int c);
- Int rt_to_lower(Int c);
- voidPtr rt_string_in_string(const char* in, const char* needle);
- char* rt_string_has_char(char* str, const char chr);
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/Variant.hxx b/dev/Kernel/NewKit/Variant.hxx
deleted file mode 100644
index b60d2824..00000000
--- a/dev/Kernel/NewKit/Variant.hxx
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <NewKit/Defines.hxx>
-#include <NewKit/String.hxx>
-#include <NewKit/Json.hxx>
-
-namespace Kernel
-{
- class Variant final
- {
- public:
- enum class VariantKind
- {
- kString,
- kBlob,
- kNull,
- kJson,
- };
-
- public:
- explicit Variant() = delete;
-
- public:
- Variant& operator=(const Variant&) = default;
- Variant(const Variant&) = default;
-
- ~Variant() = default;
-
- public:
- explicit Variant(StringView* stringView)
- : fPtr((voidPtr)stringView), fKind(VariantKind::kString)
- {
- }
-
- explicit Variant(JsonType* json)
- : fPtr((voidPtr)json), fKind(VariantKind::kJson)
- {
- }
-
- explicit Variant(nullPtr)
- : fPtr(nullptr), fKind(VariantKind::kNull)
- {
- }
-
- explicit Variant(voidPtr ptr)
- : fPtr(ptr), fKind(VariantKind::kBlob)
- {
- }
-
- public:
- const Char* ToString();
- VoidPtr Leak();
-
- private:
- voidPtr fPtr{nullptr};
- VariantKind fKind{VariantKind::kNull};
- };
-} // namespace Kernel
diff --git a/dev/Kernel/NewKit/compile_flags.txt b/dev/Kernel/NewKit/compile_flags.txt
deleted file mode 100644
index 14c5bc51..00000000
--- a/dev/Kernel/NewKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--I../../../
diff --git a/dev/Kernel/Objects/.hgkeep b/dev/Kernel/Objects/.hgkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/Objects/.hgkeep
+++ /dev/null
diff --git a/dev/Kernel/ReadMe.md b/dev/Kernel/ReadMe.md
deleted file mode 100644
index 76d6aab4..00000000
--- a/dev/Kernel/ReadMe.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# ZKA Minimal Kernel DLL.
-
-A dll which takes the role of the microkernel image. \ No newline at end of file
diff --git a/dev/Kernel/Sources/Array.cxx b/dev/Kernel/Sources/Array.cxx
deleted file mode 100644
index 202bee7e..00000000
--- a/dev/Kernel/Sources/Array.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Array.hxx>
diff --git a/dev/Kernel/Sources/ArrayList.cxx b/dev/Kernel/Sources/ArrayList.cxx
deleted file mode 100644
index 71589c9b..00000000
--- a/dev/Kernel/Sources/ArrayList.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/ArrayList.hxx>
diff --git a/dev/Kernel/Sources/Atom.cxx b/dev/Kernel/Sources/Atom.cxx
deleted file mode 100644
index e5a3f407..00000000
--- a/dev/Kernel/Sources/Atom.cxx
+++ /dev/null
@@ -1,10 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Atom.hxx>
-
-// @file Atom.cpp
-// @brief Atomic primitives
diff --git a/dev/Kernel/Sources/CodeManager.cxx b/dev/Kernel/Sources/CodeManager.cxx
deleted file mode 100644
index c0d1d308..00000000
--- a/dev/Kernel/Sources/CodeManager.cxx
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Utils.hxx>
-#include <KernelKit/CodeManager.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-
-namespace Kernel
-{
- /// @brief Executes a new process from a function. kernel code only.
- /// @note This sets up a new stack, anything on the main function that calls the kernel will not be accessible.
- /// @param main the start of the process.
- /// @return if the process was started or not.
- bool execute_from_image(MainKind main, const char* processName) noexcept
- {
- if (!main)
- return false;
-
- PROCESS_HEADER_BLOCK proc((VoidPtr)main);
- proc.Kind = PROCESS_HEADER_BLOCK::kAppKind;
- rt_copy_memory((VoidPtr)processName, proc.Name, rt_string_len(proc.Name));
-
- Ref<PROCESS_HEADER_BLOCK> refProc = proc;
-
- return ProcessScheduler::The().Leak().Add(refProc);
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Crc32.cxx b/dev/Kernel/Sources/Crc32.cxx
deleted file mode 100644
index 42dc9b8e..00000000
--- a/dev/Kernel/Sources/Crc32.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Crc32.hxx>
-
-// @file CRC32.cpp
-// @brief Check sequence implementation.
-
-namespace Kernel
-{
- /// @brief The CRC32 table.
- UInt kCrcTbl[kCrcCnt] = {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
- 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
- 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
- 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
- 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
- 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
- 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
- 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
- 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
- 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
- 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
- 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
- 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
- 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
- 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
- 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
- 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
- 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
- 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
- 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
- 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
- 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
- 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
- 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
- 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
- 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
- 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
- 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
- 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
- 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
- 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
- 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
- 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
- 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
- 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
- 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
- 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
- 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
- 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d};
-
- /// @brief Calculate CRC32 of p
- /// @param p the data to compute.
- /// @param len the length of the data.
- /// @return the CRC32.
- UInt ke_calculate_crc32(const Char* p, UInt len) noexcept
- {
- UInt crc = 0xffffffff;
-
- while (len-- != 0)
- crc = kCrcTbl[((UInt8)crc ^ *(p++))] ^ (crc >> 8);
-
- // return (~crc); also works, does the same thing.
- return (crc ^ 0xffffffff);
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/CxxAbi-AMD64.cxx b/dev/Kernel/Sources/CxxAbi-AMD64.cxx
deleted file mode 100644
index 5514336e..00000000
--- a/dev/Kernel/Sources/CxxAbi-AMD64.cxx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifdef __NEWOS_AMD64__
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/CxxAbi.hxx>
-#include <KernelKit/LPC.hxx>
-
-atexit_func_entry_t __atexit_funcs[kDSOMaxObjects];
-
-uarch_t __atexit_func_count;
-
-/// @brief Dynamic Shared Object Handle.
-Kernel::UIntPtr __dso_handle;
-
-EXTERN_C void __cxa_pure_virtual()
-{
- Kernel::kcout << "newoskrnl: C++ placeholder method.\n";
-}
-
-EXTERN_C void ___chkstk_ms(void)
-{
- Kernel::err_bug_check_raise();
- Kernel::err_bug_check();
-}
-
-EXTERN_C int atexit(void (*f)(void*), void* arg, void* dso)
-{
- if (__atexit_func_count >= kDSOMaxObjects)
- return -1;
-
- __atexit_funcs[__atexit_func_count].destructor_func = f;
- __atexit_funcs[__atexit_func_count].obj_ptr = arg;
- __atexit_funcs[__atexit_func_count].dso_handle = dso;
-
- __atexit_func_count++;
-
- return 0;
-}
-
-EXTERN_C void __cxa_finalize(void* f)
-{
- uarch_t i = __atexit_func_count;
- if (!f)
- {
- while (i--)
- {
- if (__atexit_funcs[i].destructor_func)
- {
- (*__atexit_funcs[i].destructor_func)(__atexit_funcs[i].obj_ptr);
- };
- }
-
- return;
- }
-
- while (i--)
- {
- if (__atexit_funcs[i].destructor_func)
- {
- (*__atexit_funcs[i].destructor_func)(__atexit_funcs[i].obj_ptr);
- __atexit_funcs[i].destructor_func = 0;
- };
- }
-}
-
-namespace cxxabiv1
-{
- EXTERN_C int __cxa_guard_acquire(__guard* g)
- {
- (void)g;
- return 0;
- }
-
- EXTERN_C int __cxa_guard_release(__guard* g)
- {
- *(char*)g = 1;
- return 0;
- }
-
- EXTERN_C void __cxa_guard_abort(__guard* g)
- {
- (void)g;
- }
-} // namespace cxxabiv1
-
-#endif // ifdef __NEWOS_AMD64__
diff --git a/dev/Kernel/Sources/CxxAbi-ARM64.cxx b/dev/Kernel/Sources/CxxAbi-ARM64.cxx
deleted file mode 100644
index b0cb7354..00000000
--- a/dev/Kernel/Sources/CxxAbi-ARM64.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifdef __NEWOS_ARM64__
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/CxxAbi.hxx>
-#include <KernelKit/LPC.hxx>
-
-EXTERN_C
-{
-#include <limits.h>
-}
-
-int const cUninitialized = 0;
-int const cBeingInitialized = -1;
-int const cEpochStart = INT_MIN;
-
-EXTERN_C
-{
- int _Init_global_epoch = cEpochStart;
- __thread int _Init_thread_epoch = cEpochStart;
-}
-
-Kernel::UInt32 const cNKTimeout = 100; // ms
-
-EXTERN_C void __cdecl _Init_thread_wait(Kernel::UInt32 const timeout)
-{
- MUST_PASS(timeout != INT_MAX);
-}
-
-EXTERN_C void __cdecl _Init_thread_header(int* const pOnce) noexcept
-{
- if (*pOnce == cUninitialized)
- {
- *pOnce = cBeingInitialized;
- }
- else
- {
- while (*pOnce == cBeingInitialized)
- {
- _Init_thread_wait(cNKTimeout);
-
- if (*pOnce == cUninitialized)
- {
- *pOnce = cBeingInitialized;
- return;
- }
- }
- _Init_thread_epoch = _Init_global_epoch;
- }
-}
-
-EXTERN_C void __cdecl _Init_thread_abort(int* const pOnce) noexcept
-{
- *pOnce = cUninitialized;
-}
-
-EXTERN_C void __cdecl _Init_thread_footer(int* const pOnce) noexcept
-{
- ++_Init_global_epoch;
- *pOnce = _Init_global_epoch;
- _Init_thread_epoch = _Init_global_epoch;
-}
-
-EXTERN_C void _purecall()
-{
- Kernel::kcout << "newoskrnl: C++ placeholder method.\n";
-}
-
-#endif // ifdef __NEWOS_ARM64__
diff --git a/dev/Kernel/Sources/Defines.cxx b/dev/Kernel/Sources/Defines.cxx
deleted file mode 100644
index 2e8dde86..00000000
--- a/dev/Kernel/Sources/Defines.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Defines.hxx>
diff --git a/dev/Kernel/Sources/DeviceManager.cxx b/dev/Kernel/Sources/DeviceManager.cxx
deleted file mode 100644
index 229e0fb7..00000000
--- a/dev/Kernel/Sources/DeviceManager.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DeviceManager.hxx>
diff --git a/dev/Kernel/Sources/DriveManager.cxx b/dev/Kernel/Sources/DriveManager.cxx
deleted file mode 100644
index 90bf12f8..00000000
--- a/dev/Kernel/Sources/DriveManager.cxx
+++ /dev/null
@@ -1,151 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/DriveManager.hxx>
-#include <Modules/ATA/ATA.hxx>
-#include <Modules/AHCI/AHCI.hxx>
-#include <NewKit/Utils.hxx>
-
-/// @file DriveManager.cxx
-/// @brief Kernel drive manager.
-
-namespace Kernel
-{
- static UInt16 kATAIO = 0U;
- static UInt8 kATAMaster = 0U;
-
- /// @brief reads from an ATA drive.
- /// @param pckt
- /// @return
- Void ke_drv_input(DriveTrait::DrivePacket* pckt)
- {
- if (!pckt)
- {
- return;
- }
-
- pckt->fPacketGood = false;
-
-#ifdef __AHCI__
- drv_std_read(pckt->fLba, (Char*)pckt->fPacketContent, kAHCISectorSize, pckt->fPacketSize);
-#elif defined(__ATA_PIO__) || defined(__ATA_DMA__)
- drv_std_read(pckt->fLba, kATAIO, kATAMaster, (Char*)pckt->fPacketContent, kATASectorSize, pckt->fPacketSize);
-#endif
-
- pckt->fPacketGood = true;
- }
-
- /// @brief Writes to an ATA drive.
- /// @param pckt
- /// @return
- Void ke_drv_output(DriveTrait::DrivePacket* pckt)
- {
- if (!pckt)
- {
- return;
- }
-
- pckt->fPacketGood = false;
-
-#ifdef __AHCI__
- drv_std_write(pckt->fLba, (Char*)pckt->fPacketContent, kATASectorSize, pckt->fPacketSize);
-#elif defined(__ATA_PIO__) || defined(__ATA_DMA__)
- drv_std_write(pckt->fLba, kATAIO, kATAMaster, (Char*)pckt->fPacketContent, kATASectorSize, pckt->fPacketSize);
-#endif
-
- pckt->fPacketGood = true;
- }
-
- /// @brief Executes a disk check on the ATA drive.
- /// @param pckt
- /// @return
- Void ke_drv_check_disk(DriveTrait::DrivePacket* pckt)
- {
- if (!pckt)
- {
- return;
- }
-
- pckt->fPacketGood = false;
-
-#if defined(__ATA_PIO__) || defined(__ATA_DMA__)
- kATAMaster = true;
- kATAIO = ATA_PRIMARY_IO;
-
- MUST_PASS(drv_std_init(kATAIO, kATAMaster, kATAIO, kATAMaster));
-#endif // if defined(__ATA_PIO__) || defined (__ATA_DMA__)
-
- pckt->fPacketGood = true;
- }
-
-/// @brief Gets the drive kind (ATA, SCSI, AHCI...)
-/// @param
-/// @return
-#ifdef __ATA_PIO__
- const Char* io_drive_kind(Void)
- {
- return "ATA-PIO";
- }
-#endif
-
-#ifdef __ATA_DMA__
- const Char* io_drive_kind(Void)
- {
- return "ATA-DMA";
- }
-#endif
-
-#ifdef __AHCI__
- const Char* io_drive_kind(Void)
- {
- return "AHCI";
- }
-#endif
-
- /// @brief Unimplemented drive.
- /// @param pckt
- /// @return
- Void io_drv_unimplemented(DriveTrait::DrivePacket* pckt)
- {
- }
-
- /// @brief Makes a new drive.
- /// @return the new drive.
- DriveTrait io_construct_drive() noexcept
- {
- DriveTrait trait;
-
- rt_copy_memory((VoidPtr) "/Mount/Null", trait.fName, rt_string_len("/Mount/Null"));
- trait.fKind = kInvalidDrive;
-
- trait.fInput = io_drv_unimplemented;
- trait.fOutput = io_drv_unimplemented;
- trait.fVerify = io_drv_unimplemented;
- trait.fDriveKind = io_drive_kind;
-
- return trait;
- }
-
- /// @brief Fetches the main drive.
- /// @return the new drive.
- DriveTrait io_construct_main_drive() noexcept
- {
- DriveTrait trait;
-
- rt_copy_memory((VoidPtr) "MainDisk", trait.fName, rt_string_len("MainDisk"));
- trait.fKind = kMassStorage;
-
- trait.fInput = ke_drv_input;
- trait.fOutput = ke_drv_output;
- trait.fVerify = ke_drv_check_disk;
- trait.fDriveKind = io_drive_kind;
-
- kcout << "newoskrnl: Construct drive with success.\r";
-
- return trait;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/ErrorOr.cxx b/dev/Kernel/Sources/ErrorOr.cxx
deleted file mode 100644
index 0205506d..00000000
--- a/dev/Kernel/Sources/ErrorOr.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/ErrorOr.hxx>
-
-/***********************************************************************************/
-/// @file ErrorOr.cxx ///
-/// @brief Error Or Value class. ///
-/***********************************************************************************/
diff --git a/dev/Kernel/Sources/FS/NewFS.cxx b/dev/Kernel/Sources/FS/NewFS.cxx
deleted file mode 100644
index 90f48eb2..00000000
--- a/dev/Kernel/Sources/FS/NewFS.cxx
+++ /dev/null
@@ -1,1054 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#ifdef __FSKIT_USE_NEWFS__
-
-#include <Modules/AHCI/AHCI.hxx>
-#include <Modules/ATA/ATA.hxx>
-#include <Modules/Flash/Flash.hxx>
-#include <FSKit/NewFS.hxx>
-#include <KernelKit/LPC.hxx>
-#include <NewKit/Crc32.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <NewKit/String.hxx>
-#include <NewKit/Utils.hxx>
-#include <FirmwareKit/EPM.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/User.hxx>
-
-using namespace Kernel;
-
-#ifdef __ED__
-/**
- Define those external symbols, to make the editor shutup
-*/
-
-/// @brief get sector count.
-Kernel::SizeT drv_std_get_sector_count();
-
-/// @brief get device size.
-Kernel::SizeT drv_std_get_drv_size();
-
-#endif
-
-///! BUGS: 0
-
-/***********************************************************************************/
-/// This file implements the New File System.
-/// New File System implements a B-Tree based algortihm.
-/// \\
-/// \\Path1\\ \\ath2\\
-/// \\readme.rtf \\ListContents.pef \\readme.lnk <-- symlink.
-/// \\Path1\\readme.rtf
-/***********************************************************************************/
-
-STATIC MountpointInterface sMountpointInterface;
-
-/// @brief Creates a new fork inside the New filesystem partition.
-/// @param catalog it's catalog
-/// @param theFork the fork itself.
-/// @return the fork
-_Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* catalog,
- _Input NFS_FORK_STRUCT& theFork)
-{
- if (catalog && theFork.ForkName[0] != 0 &&
- theFork.DataSize == kNewFSForkSize)
- {
- Lba lba = (theFork.Kind == kNewFSDataForkKind) ? catalog->DataFork
- : catalog->ResourceFork;
-
- kcout << "newoskrnl: fork lba: " << hex_number(lba) << endl;
-
- if (lba <= kNewFSCatalogStartAddress)
- return nullptr;
-
- auto drv = sMountpointInterface.A();
-
- /// special treatment.
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drv.fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- NFS_FORK_STRUCT curFork{0};
- NFS_FORK_STRUCT prevFork{0};
- Lba lbaOfPreviousFork = lba;
-
- /// do not check for anything. Loop until we get what we want, that is a free fork zone.
- while (true)
- {
- if (lba <= kNewFSCatalogStartAddress)
- break;
-
- drv.fPacket.fLba = lba;
- drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketContent = &curFork;
-
- drv.fInput(&drv.fPacket);
-
- kcout << "newoskrnl: next fork: " << hex_number(curFork.NextSibling) << endl;
-
- if (curFork.Flags == kNewFSFlagCreated)
- {
- kcout << "newoskrnl: Fork already exists.\r";
-
- /// sanity check.
- if (StringBuilder::Equals(curFork.ForkName, theFork.ForkName) &&
- StringBuilder::Equals(curFork.CatalogName, catalog->Name))
- return nullptr;
-
- kcout << "newoskrnl: next fork: " << hex_number(curFork.NextSibling) << endl;
-
- lbaOfPreviousFork = lba;
- lba = curFork.NextSibling;
-
- prevFork = curFork;
- }
- else
- {
- /// This is a check that we have, in order to link the previous fork
- /// entry.
- if (lba >= kNewFSCatalogStartAddress)
- {
- drv.fPacket.fLba = lbaOfPreviousFork;
- drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketContent = &prevFork;
-
- prevFork.NextSibling = lba;
-
- /// write to disk.
- drv.fOutput(&drv.fPacket);
- }
-
- break;
- }
- }
-
- constexpr auto cForkPadding =
- 4; /// this value gives us space for the data offset.
-
- theFork.Flags = kNewFSFlagCreated;
- theFork.DataOffset = lba - sizeof(NFS_FORK_STRUCT) * cForkPadding;
- theFork.PreviousSibling = lbaOfPreviousFork;
- theFork.NextSibling = theFork.DataOffset - theFork.DataSize;
-
- drv.fPacket.fLba = lba;
- drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketContent = &theFork;
-
- drv.fOutput(&drv.fPacket);
-
- /// log what we have now.
- kcout << "newoskrnl: Wrote fork data at: " << hex_number(theFork.DataOffset)
- << endl;
-
- kcout << "newoskrnl: Wrote fork at: " << hex_number(lba) << endl;
-
- return &theFork;
- }
-
- return nullptr;
-}
-
-/// @brief Find fork inside New filesystem.
-/// @param catalog the catalog.
-/// @param name the fork name.
-/// @return the fork.
-_Output NFS_FORK_STRUCT* NewFSParser::FindFork(_Input NFS_CATALOG_STRUCT* catalog,
- _Input const Char* name,
- Boolean isDataFork)
-{
- auto drv = sMountpointInterface.A();
- NFS_FORK_STRUCT* theFork = nullptr;
-
- Lba lba = isDataFork ? catalog->DataFork : catalog->ResourceFork;
-
- while (lba != 0)
- {
- drv.fPacket.fLba = lba;
- drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketContent = (VoidPtr)theFork;
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drv.fPacket.fPacketMime, 16);
-
- if (auto res =
- fs_newfs_read(&sMountpointInterface, drv, this->fDriveIndex);
- res)
- {
- switch (res)
- {
- case 1:
- ErrLocal() = kErrorDiskReadOnly;
- break;
- case 2:
- ErrLocal() = kErrorDiskIsFull;
- break;
- ErrLocal() = kErrorNoSuchDisk;
- break;
-
- default:
- break;
- }
- return nullptr;
- }
-
- if (StringBuilder::Equals(theFork->ForkName, name))
- {
- break;
- }
-
- lba = theFork->NextSibling;
- }
-
- return theFork;
-}
-
-/// @brief Simpler factory to create a catalog (assumes you want to create a
-/// file.)
-/// @param name
-/// @return catalog pointer.
-_Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name)
-{
- return this->CreateCatalog(name, 0, kNewFSCatalogKindFile);
-}
-
-/// @brief Creates a new catalog into the disk.
-/// @param name the catalog name.
-/// @param flags the flags of the catalog.
-/// @param kind the catalog kind.
-/// @return catalog pointer.
-_Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name,
- _Input const Int32& flags,
- _Input const Int32& kind)
-{
- kcout << "newoskrnl: CreateCatalog(...)\r";
-
- Lba outLba = 0UL;
-
- kcout << "newoskrnl: Checking for extension...\r";
-
- /// a directory should have a slash in the end.
- if (kind == kNewFSCatalogKindDir &&
- name[rt_string_len(name) - 1] != NewFilesystemHelper::Separator())
- return nullptr;
-
- /// a file shouldn't have a slash in the end.
- if (kind != kNewFSCatalogKindDir &&
- name[rt_string_len(name) - 1] == NewFilesystemHelper::Separator())
- return nullptr;
-
- NFS_CATALOG_STRUCT* copyExists = this->FindCatalog(name, outLba);
-
- if (copyExists)
- {
- kcout << "newoskrnl: Copy already exists.\r";
- ErrLocal() = kErrorFileExists;
-
- return copyExists;
- }
-
- Char parentName[kNewFSNodeNameLen] = {0};
-
- for (SizeT indexName = 0UL; indexName < rt_string_len(name); ++indexName)
- {
- parentName[indexName] = name[indexName];
- }
-
- if (*parentName == 0)
- {
- kcout << "newoskrnl: Parent name is NUL.\r";
- ErrLocal() = kErrorFileNotFound;
- return nullptr;
- }
-
- /// Locate parent catalog, to then allocate right after it.
-
- for (SizeT indexFill = 0; indexFill < rt_string_len(name); ++indexFill)
- {
- parentName[indexFill] = name[indexFill];
- }
-
- SizeT indexReverseCopy = rt_string_len(parentName);
-
- // zero character it.
- parentName[--indexReverseCopy] = 0;
-
- // mandatory / character, zero it.
- parentName[--indexReverseCopy] = 0;
-
- while (parentName[indexReverseCopy] != NewFilesystemHelper::Separator())
- {
- parentName[indexReverseCopy] = 0;
- --indexReverseCopy;
- }
-
- NFS_CATALOG_STRUCT* catalog = this->FindCatalog(parentName, outLba);
-
- if (catalog && catalog->Kind == kNewFSCatalogKindFile)
- {
- kcout << "newoskrnl: Parent name is file.\r";
- delete catalog;
- return nullptr;
- }
- else if (!catalog)
- {
- outLba = kNewFSCatalogStartAddress;
- }
-
- constexpr SizeT cDefaultForkSize = kNewFSForkSize;
-
- NFS_CATALOG_STRUCT* catalogChild = new NFS_CATALOG_STRUCT();
-
- Int32 flagsList = flags;
-
- if (flagsList & kNewFSCatalogKindMetaFile)
- {
- if (UserManager::The()->GetCurrent() != UserManager::The()->fRootUser &&
- UserManager::The()->fRootUser)
- {
- delete catalogChild;
- return nullptr;
- }
- }
-
- catalogChild->ResourceForkSize = cDefaultForkSize;
- catalogChild->DataForkSize = cDefaultForkSize;
-
- catalogChild->NextSibling = outLba;
- catalogChild->PrevSibling = outLba;
- catalogChild->Kind = kind;
- catalogChild->Flags = kNewFSFlagCreated | flagsList;
-
- rt_copy_memory((VoidPtr)name, (VoidPtr)catalogChild->Name,
- rt_string_len(name));
-
- UInt16 catalogBuf[kNewFSSectorSz] = {0};
-
- auto drive = sMountpointInterface.A();
-
- Lba startFree = outLba;
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drive.fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- drive.fPacket.fPacketContent = catalogBuf;
- drive.fPacket.fPacketSize = kNewFSSectorSz;
- drive.fPacket.fLba = startFree;
-
- drive.fInput(&drive.fPacket);
-
- NFS_CATALOG_STRUCT* nextSibling = (NFS_CATALOG_STRUCT*)catalogBuf;
-
- startFree = nextSibling->NextSibling;
-
- catalogChild->PrevSibling = outLba;
-
- drive.fPacket.fLba = startFree;
- drive.fInput(&drive.fPacket);
-
- while (drive.fPacket.fPacketGood)
- {
- nextSibling = reinterpret_cast<NFS_CATALOG_STRUCT*>(catalogBuf);
-
- if (startFree <= kNewFSStartLba)
- {
- delete catalogChild;
- delete catalog;
-
- return nullptr;
- }
-
- // ========================== //
- // allocate catalog now...
- // ========================== //
- if (nextSibling->Flags != kNewFSFlagCreated)
- {
- Char sectorBufPartBlock[kNewFSSectorSz] = {0};
-
- drive.fPacket.fPacketContent = sectorBufPartBlock;
- drive.fPacket.fPacketSize = kNewFSSectorSz;
- drive.fPacket.fLba = kNewFSStartLba;
-
- drive.fInput(&drive.fPacket);
-
- constexpr auto cNewFSCatalogPadding = 4;
-
- NFS_ROOT_PARTITION_BLOCK* partBlock = (NFS_ROOT_PARTITION_BLOCK*)sectorBufPartBlock;
-
- if (partBlock->FreeCatalog < 1)
- {
- delete catalogChild;
- return nullptr;
- }
-
- catalogChild->DataFork = partBlock->DiskSize - partBlock->StartCatalog;
-
- catalogChild->ResourceFork = catalogChild->DataFork;
-
- catalogChild->NextSibling =
- startFree + (sizeof(NFS_CATALOG_STRUCT) * cNewFSCatalogPadding);
-
- drive.fPacket.fPacketContent = catalogChild;
- drive.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT);
- drive.fPacket.fLba = startFree;
-
- drive.fOutput(&drive.fPacket);
-
- drive.fPacket.fPacketContent = catalogBuf;
- drive.fPacket.fPacketSize = kNewFSSectorSz;
- drive.fPacket.fLba =
- startFree - (sizeof(NFS_CATALOG_STRUCT) * cNewFSCatalogPadding);
-
- drive.fInput(&drive.fPacket);
-
- nextSibling->NextSibling = startFree;
-
- drive.fOutput(&drive.fPacket);
-
- kcout << "newoskrnl: Create new catalog, status: "
- << hex_number(catalogChild->Flags) << endl;
- kcout << "newoskrnl: Create new catalog, status: " << catalogChild->Name
- << endl;
-
- drive.fPacket.fPacketContent = sectorBufPartBlock;
- drive.fPacket.fPacketSize = kNewFSSectorSz;
- drive.fPacket.fLba = kNewFSStartLba;
-
- drive.fInput(&drive.fPacket);
-
- partBlock->SectorCount -= 1;
- partBlock->CatalogCount += 1;
- partBlock->FreeCatalog -= 1;
- partBlock->FreeCatalog = catalogChild->NextSibling;
-
- drive.fOutput(&drive.fPacket);
-
- delete catalog;
- return catalogChild;
- }
-
- constexpr auto cNewFSCatalogPadding = 4;
-
- //// @note that's how we find the next catalog in the partition block.
- startFree = startFree + (sizeof(NFS_CATALOG_STRUCT) * cNewFSCatalogPadding);
-
- drive.fPacket.fPacketContent = catalogBuf;
- drive.fPacket.fPacketSize = kNewFSSectorSz;
- drive.fPacket.fLba = startFree;
-
- drive.fInput(&drive.fPacket);
- }
-
- delete catalog;
- return nullptr;
-}
-
-/// @brief Make a EPM+NewFS drive out of the disk.
-/// @param drive The drive to write on.
-/// @return If it was sucessful, see ErrLocal().
-bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLba, _Input const Int32 flags, const Char* part_name)
-{
- if (*part_name == 0 ||
- endLba == 0)
- return false;
-
- // verify disk.
- drive->fVerify(&drive->fPacket);
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drive->fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- // if disk isn't good, then error out.
- if (false == drive->fPacket.fPacketGood)
- {
- ErrLocal() = kErrorDiskIsCorrupted;
- return false;
- }
-
- Char sectorBuf[kNewFSSectorSz] = {0};
-
- Lba start = kNewFSStartLba;
-
- drive->fPacket.fPacketContent = sectorBuf;
- drive->fPacket.fPacketSize = kNewFSSectorSz;
- drive->fPacket.fLba = start;
-
- drive->fInput(&drive->fPacket);
-
- if (flags & kNewFSPartitionTypeBoot)
- {
- // make it bootable when needed.
- Char bufEpmHdr[kNewFSSectorSz] = {0};
-
- BOOT_BLOCK_STRUCT* epmBoot = (BOOT_BLOCK_STRUCT*)bufEpmHdr;
-
- constexpr auto cFsName = "NewFS";
- constexpr auto cBlockName = "ZKA:";
-
- rt_copy_memory(reinterpret_cast<VoidPtr>(const_cast<Char*>(cFsName)), epmBoot->Fs, rt_string_len(cFsName));
-
- epmBoot->FsVersion = kNewFSVersionInteger;
- epmBoot->LbaStart = 0;
- epmBoot->SectorSz = kNewFSSectorSz;
-
- rt_copy_memory(reinterpret_cast<VoidPtr>(const_cast<Char*>(cBlockName)), epmBoot->Name, rt_string_len(cBlockName));
- rt_copy_memory(reinterpret_cast<VoidPtr>(const_cast<Char*>(kEPMMagic)), epmBoot->Magic, rt_string_len(kEPMMagic));
-
- Lba outEpmLba = kEpmBase;
-
- Char buf[kNewFSSectorSz];
-
- Lba prevStart = 0;
- SizeT cnt = 0;
-
- while (drive->fPacket.fPacketGood)
- {
- drive->fPacket.fPacketContent = buf;
- drive->fPacket.fPacketSize = kNewFSSectorSz;
- drive->fPacket.fLba = outEpmLba;
-
- drive->fInput(&drive->fPacket);
-
- if (buf[0] == 0)
- {
- epmBoot->LbaStart = prevStart;
-
- if (epmBoot->LbaStart)
- epmBoot->LbaStart = outEpmLba;
-
- epmBoot->LbaEnd = endLba;
- epmBoot->NumBlocks = cnt;
-
- drive->fPacket.fPacketContent = bufEpmHdr;
- drive->fPacket.fPacketSize = kNewFSSectorSz;
- drive->fPacket.fLba = outEpmLba;
-
- drive->fOutput(&drive->fPacket);
-
- break;
- }
- else
- {
- prevStart = ((BOOT_BLOCK_STRUCT*)buf)->LbaStart + ((BOOT_BLOCK_STRUCT*)buf)->LbaEnd;
- }
-
- outEpmLba += sizeof(BOOT_BLOCK_STRUCT);
- ++cnt;
- }
- }
-
- // disk isnt faulty and data has been fetched.
- while (drive->fPacket.fPacketGood)
- {
- NFS_ROOT_PARTITION_BLOCK* partBlock = (NFS_ROOT_PARTITION_BLOCK*)sectorBuf;
-
- // check for an empty partition here.
- if (partBlock->PartitionName[0] == 0 &&
- rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen))
- {
- // partition is free and valid.
-
- partBlock->Version = kNewFSVersionInteger;
-
- const auto cUntitledHD = part_name;
-
- rt_copy_memory((VoidPtr)kNewFSIdent, (VoidPtr)partBlock->Ident,
- kNewFSIdentLen);
-
- rt_copy_memory((VoidPtr)cUntitledHD, (VoidPtr)partBlock->PartitionName,
- rt_string_len(cUntitledHD));
-
- SizeT catalogCount = 0UL;
-
- SizeT sectorCount = drv_std_get_sector_count();
- SizeT diskSize = drv_std_get_drv_size();
-
- partBlock->Kind = kNewFSPartitionTypeStandard;
- partBlock->StartCatalog = kNewFSCatalogStartAddress;
- partBlock->Flags = kNewFSPartitionTypeStandard;
- partBlock->CatalogCount = sectorCount / sizeof(NFS_CATALOG_STRUCT);
- partBlock->SectorCount = sectorCount;
- partBlock->DiskSize = diskSize;
- partBlock->FreeCatalog = sectorCount / sizeof(NFS_CATALOG_STRUCT);
-
- drive->fPacket.fPacketContent = sectorBuf;
- drive->fPacket.fPacketSize = kNewFSSectorSz;
- drive->fPacket.fLba = kNewFSStartLba;
-
- drive->fOutput(&drive->fPacket);
-
- kcout << "newoskrnl: drive kind: " << drive->fDriveKind() << endl;
-
- kcout << "newoskrnl: partition name: " << partBlock->PartitionName << endl;
- kcout << "newoskrnl: start: " << hex_number(partBlock->StartCatalog) << endl;
- kcout << "newoskrnl: number of catalogs: " << hex_number(partBlock->CatalogCount) << endl;
- kcout << "newoskrnl: free catalog: " << hex_number(partBlock->FreeCatalog) << endl;
- kcout << "newoskrnl: free sectors: " << hex_number(partBlock->FreeSectors) << endl;
- kcout << "newoskrnl: sector size: " << hex_number(partBlock->SectorSize) << endl;
-
- // write the root catalog.
- this->CreateCatalog(kNewFSRoot, 0, kNewFSCatalogKindDir);
-
- return true;
- }
-
- kcout << "newoskrnl: partition block already exists.\r";
-
- start += partBlock->DiskSize;
-
- drive->fPacket.fPacketContent = sectorBuf;
- drive->fPacket.fPacketSize = kNewFSSectorSz;
- drive->fPacket.fLba = start;
-
- drive->fInput(&drive->fPacket);
- }
-
- return false;
-}
-
-/// @brief Writes the data fork into a specific catalog.
-/// @param catalog the catalog itself
-/// @param data the data.
-/// @return if the catalog w rote the contents successfully.
-bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidPtr data, SizeT sizeOfData, _Input const Char* forkName)
-{
- NFS_FORK_STRUCT forkData{0};
-
- auto drive = sMountpointInterface.A();
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drive.fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- auto startFork = catalog->DataFork;
-
- rt_copy_memory(catalog->Name, forkData.CatalogName, kNewFSNodeNameLen);
-
- NFS_FORK_STRUCT forkDataIn{0};
-
- // sanity check of the fork position as the condition to run the loop.
- while (startFork >= kNewFSCatalogStartAddress)
- {
- drive.fPacket.fPacketContent = &forkDataIn;
- drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drive.fPacket.fLba = startFork;
-
- drive.fInput(&drive.fPacket);
-
- kcout << "newoskrnl: fork name: " << forkName << endl;
-
- // check the fork, if it's position is valid.
- if (forkDataIn.DataOffset <= kNewFSCatalogStartAddress)
- {
- ErrLocal() = kErrorDiskIsCorrupted;
-
- kcout << "newoskrnl: Invalid fork offset.\r";
-
- return false;
- }
-
- if (forkData.Flags != kNewFSFlagUnallocated &&
- forkData.Flags != kNewFSFlagDeleted &&
- StringBuilder::Equals(forkData.ForkName, forkName) &&
- StringBuilder::Equals(forkData.CatalogName, catalog->Name))
- {
- if (forkDataIn.DataSize < sizeOfData)
- {
- startFork = forkData.NextSibling;
- continue;
- }
-
- drive.fPacket.fPacketContent = data;
- drive.fPacket.fPacketSize = sizeOfData;
- drive.fPacket.fLba = forkData.DataOffset;
-
- kcout << "newoskrnl: data offset: " << hex_number(forkData.DataOffset) << endl;
-
- drive.fOutput(&drive.fPacket);
-
- return true;
- }
- else
- {
- // ===================================================== //
- // Store size of blob now.
- // ===================================================== //
- forkData.DataSize = sizeOfData;
-
- if (sizeOfData < kNewFSForkSize)
- forkData.DataSize = kNewFSForkSize;
-
- drive.fPacket.fPacketContent = data;
- drive.fPacket.fPacketSize = sizeOfData;
- drive.fPacket.fLba = forkData.DataOffset;
-
- kcout << "newoskrnl: data offset: " << hex_number(forkData.DataOffset) << endl;
-
- drive.fOutput(&drive.fPacket);
-
- forkData.Flags = kNewFSFlagCreated;
-
- drive.fPacket.fPacketContent = &forkData;
- drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drive.fPacket.fLba = startFork;
-
- drive.fOutput(&drive.fPacket);
-
- kcout << "newoskrnl: wrote fork at offset: " << hex_number(forkData.DataOffset) << endl;
-
- delete catalog;
-
- return true;
- }
-
- startFork = forkData.NextSibling;
- }
-
- return false;
-}
-
-/// @brief
-/// @param catalogName the catalog name.
-/// @return the newly found catalog.
-_Output NFS_CATALOG_STRUCT* NewFSParser::FindCatalog(_Input const Char* catalogName,
- Lba& outLba)
-{
- kcout << "newoskrnl: start finding catalog...\r";
-
- Char* sectorBuf = new Char[sizeof(NFS_ROOT_PARTITION_BLOCK)];
- auto drive = sMountpointInterface.A();
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drive.fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- drive.fPacket.fPacketContent = sectorBuf;
- drive.fPacket.fPacketSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
- drive.fPacket.fLba = kNewFSStartLba;
-
- drive.fInput(&drive.fPacket);
-
- NFS_ROOT_PARTITION_BLOCK* part = (NFS_ROOT_PARTITION_BLOCK*)sectorBuf;
-
- auto startCatalogList = part->StartCatalog;
- const auto cCtartCatalogList = part->StartCatalog;
-
- auto localSearchFirst = false;
-
- drive.fPacket.fLba = startCatalogList;
- drive.fPacket.fPacketContent = sectorBuf;
- drive.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT);
-
- drive.fInput(&drive.fPacket);
-
- if (!StringBuilder::Equals(catalogName, NewFilesystemHelper::Root()))
- {
- Char parentName[kNewFSNodeNameLen] = {0};
-
- for (SizeT indexFill = 0; indexFill < rt_string_len(catalogName); ++indexFill)
- {
- parentName[indexFill] = catalogName[indexFill];
- }
-
- SizeT indexReverseCopy = rt_string_len(parentName);
-
- // zero character.
- parentName[--indexReverseCopy] = 0;
-
- // mandatory '/' character.
- parentName[--indexReverseCopy] = 0;
-
- while (parentName[indexReverseCopy] != NewFilesystemHelper::Separator())
- {
- parentName[indexReverseCopy] = 0;
- --indexReverseCopy;
- }
-
- NFS_CATALOG_STRUCT* parentCatalog = this->FindCatalog(parentName, outLba);
-
- if (parentCatalog &&
- !StringBuilder::Equals(parentName, NewFilesystemHelper::Root()))
- {
- startCatalogList = outLba;
- delete parentCatalog;
-
- localSearchFirst = true;
- }
- else if (parentCatalog)
- {
- delete parentCatalog;
- }
- }
-
- kcout << "newoskrnl: fetching catalog...\r";
-
-_NewFSSearchThroughCatalogList:
- while (drive.fPacket.fPacketGood)
- {
- NFS_CATALOG_STRUCT* catalog = (NFS_CATALOG_STRUCT*)sectorBuf;
-
- if (StringBuilder::Equals(catalogName, catalog->Name))
- {
- /// ignore unallocated catalog, break
- if (catalog->Flags != kNewFSFlagCreated)
- {
- goto NewFSContinueSearch;
- }
-
- NFS_CATALOG_STRUCT* catalogPtr = new NFS_CATALOG_STRUCT();
- rt_copy_memory(catalog, catalogPtr, sizeof(NFS_CATALOG_STRUCT));
-
- kcout << "newoskrnl: found catalog at: " << hex_number(startCatalogList) << endl;
-
- outLba = startCatalogList;
- delete[] sectorBuf;
- return catalogPtr;
- }
-
- NewFSContinueSearch:
- startCatalogList = catalog->NextSibling;
-
- if (startCatalogList <= kNewFSStartLba)
- break;
-
- drive.fPacket.fLba = startCatalogList;
- drive.fPacket.fPacketContent = sectorBuf;
- drive.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT);
-
- drive.fInput(&drive.fPacket);
- }
-
- if (localSearchFirst)
- {
- localSearchFirst = false;
- startCatalogList = cCtartCatalogList;
-
- goto _NewFSSearchThroughCatalogList;
- }
-
- outLba = 0UL;
- delete[] sectorBuf;
-
- return nullptr;
-}
-
-/// @brief Get catalog from filesystem.
-/// @param name the catalog's name/
-/// @return
-_Output NFS_CATALOG_STRUCT* NewFSParser::GetCatalog(_Input const Char* name)
-{
- Lba unused = 0;
- return this->FindCatalog(name, unused);
-}
-
-/// @brief Closes a catalog, (frees it).
-/// @param catalog the catalog to close.
-/// @return
-Boolean NewFSParser::CloseCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog)
-{
- if (!catalog)
- return false;
-
- delete catalog;
- catalog = nullptr;
-
- return true;
-}
-
-/// @brief Mark catalog as removed.
-/// @param catalog The catalog structure.
-/// @return if the catalog was removed or not.
-Boolean NewFSParser::RemoveCatalog(_Input const Char* catalogName)
-{
- if (!catalogName ||
- StringBuilder::Equals(catalogName, NewFilesystemHelper::Root()))
- {
- ErrLocal() = kErrorInternal;
- return false;
- }
-
- Lba outLba = 0;
- auto catalog = this->FindCatalog(catalogName, outLba);
-
- if (outLba >= kNewFSCatalogStartAddress ||
- catalog->Flags == kNewFSFlagCreated)
- {
- catalog->Flags = kNewFSFlagDeleted;
-
- auto drive = sMountpointInterface.A();
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drive.fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- drive.fPacket.fLba = outLba; // the catalog position.
- drive.fPacket.fPacketSize =
- sizeof(NFS_CATALOG_STRUCT); // size of catalog. roughly the sector size.
- drive.fPacket.fPacketContent = catalog; // the catalog itself.
-
- drive.fOutput(&drive.fPacket); // send packet.
-
- Char partitionBlockBuf[sizeof(NFS_ROOT_PARTITION_BLOCK)] = {0};
-
- drive.fPacket.fLba = kNewFSStartLba;
- drive.fPacket.fPacketContent = partitionBlockBuf;
- drive.fPacket.fPacketSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
-
- drive.fInput(&drive.fPacket);
-
- NFS_ROOT_PARTITION_BLOCK* partBlock =
- reinterpret_cast<NFS_ROOT_PARTITION_BLOCK*>(partitionBlockBuf);
-
- ++partBlock->FreeCatalog;
- --partBlock->CatalogCount;
-
- drive.fOutput(&drive.fPacket);
-
- return true;
- }
-
- delete catalog;
- return false;
-}
-
-/// ***************************************************************** ///
-/// Reading,Seek,Tell are unimplemented on catalogs, refer to forks I/O instead.
-/// ***************************************************************** ///
-
-/***********************************************************************************/
-/// @brief Read the catalog data fork.
-/// @param catalog
-/// @param dataSz
-/// @return
-/***********************************************************************************/
-
-VoidPtr NewFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog,
- _Input SizeT dataSz,
- _Input const Char* forkName)
-{
- if (!catalog)
- {
- ErrLocal() = kErrorFileNotFound;
- return nullptr;
- }
-
- Lba dataForkLba = catalog->DataFork;
- Size dataForkSize = catalog->DataForkSize;
-
- kcout << "newoskrnl: catalog " << catalog->Name
- << ", fork: " << hex_number(dataForkLba) << endl;
-
- Char* sectorBuf = new Char[sizeof(NFS_FORK_STRUCT)];
- auto drive = sMountpointInterface.A();
-
- rt_copy_memory((VoidPtr) "fs/newfs-packet", drive.fPacket.fPacketMime,
- rt_string_len("fs/newfs-packet"));
-
- NFS_FORK_STRUCT* forkData = nullptr;
-
- while (dataForkLba >= kNewFSCatalogStartAddress)
- {
- drive.fPacket.fLba = dataForkLba;
- drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drive.fPacket.fPacketContent = sectorBuf;
-
- drive.fInput(&drive.fPacket);
-
- forkData = (NFS_FORK_STRUCT*)sectorBuf;
-
- kcout << "newoskrnl: name: " << forkData->ForkName << endl;
-
- if (forkData->DataOffset <= kNewFSCatalogStartAddress)
- {
- delete[] sectorBuf;
-
- kcout << "Fail-Data-Offset: " << hex_number(forkData->DataOffset) << endl;
-
- return nullptr;
- }
-
- if (StringBuilder::Equals(forkName, forkData->ForkName) &&
- StringBuilder::Equals(catalog->Name, forkData->CatalogName))
- break;
-
- dataForkLba = forkData->NextSibling;
- }
-
- if (dataForkLba <= kNewFSCatalogStartAddress)
- {
- delete[] sectorBuf;
- return nullptr;
- }
-
- Char* forkBuf = new Char[dataSz];
-
- drive.fPacket.fLba = forkData->DataOffset;
- drive.fPacket.fPacketSize = dataSz;
- drive.fPacket.fPacketContent = forkBuf;
-
- drive.fInput(&drive.fPacket);
-
- delete[] sectorBuf;
- return forkBuf;
-}
-
-/***********************************************************************************/
-/// @brief Seek in the data fork.
-/// @param catalog the catalog offset.
-/// @param off where to seek.
-/// @return if the seeking was successful.
-/***********************************************************************************/
-
-bool NewFSParser::Seek(_Input _Output NFS_CATALOG_STRUCT* catalog, SizeT off)
-{
- if (!catalog)
- {
- ErrLocal() = kErrorFileNotFound;
- return false;
- }
-
- ErrLocal() = kErrorUnimplemented;
- return false;
-}
-
-/***********************************************************************************/
-/// @brief Tell where we are inside the data fork.
-/// @param catalog
-/// @return The position on the file.
-/***********************************************************************************/
-
-SizeT NewFSParser::Tell(_Input _Output NFS_CATALOG_STRUCT* catalog)
-{
- if (!catalog)
- {
- ErrLocal() = kErrorFileNotFound;
- return 0;
- }
-
- ErrLocal() = kErrorUnimplemented;
- return 0;
-}
-
-namespace Kernel::Detail
-{
- /***********************************************************************************/
- /// @brief Construct NewFS drives.
- /***********************************************************************************/
- Boolean fs_init_newfs(Void) noexcept
- {
- kcout << "newoskrnl: Creating drives...\r";
-
- sMountpointInterface.A() = io_construct_main_drive();
- sMountpointInterface.B() = io_construct_drive();
- sMountpointInterface.C() = io_construct_drive();
- sMountpointInterface.D() = io_construct_drive();
-
- kcout << "newoskrnl: Testing main drive...\r";
-
- sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket);
-
- kcout << "newoskrnl: Testing main drive [ OK ]...\r";
-
- return true;
- }
-} // namespace Kernel::Detail
-
-#endif // ifdef __FSKIT_USE_NEWFS__
diff --git a/dev/Kernel/Sources/FS/compile_flags.txt b/dev/Kernel/Sources/FS/compile_flags.txt
deleted file mode 100644
index 39b236a9..00000000
--- a/dev/Kernel/Sources/FS/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ED__
diff --git a/dev/Kernel/Sources/FileManager.cxx b/dev/Kernel/Sources/FileManager.cxx
deleted file mode 100644
index aa8fca2a..00000000
--- a/dev/Kernel/Sources/FileManager.cxx
+++ /dev/null
@@ -1,196 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/FileManager.hxx>
-#include <NewKit/Utils.hxx>
-
-/// BUGS: 0
-//! @brief File manager for Kernel.
-
-namespace Kernel
-{
- STATIC FilesystemManagerInterface* kMounted = nullptr;
-
- /// @brief FilesystemManager getter.
- /// @return The mounted filesystem.
- _Output FilesystemManagerInterface* FilesystemManagerInterface::GetMounted()
- {
- return kMounted;
- }
-
- /// @brief Unmount filesystem.
- /// @return The unmounted filesystem.
- _Output FilesystemManagerInterface* FilesystemManagerInterface::Unmount()
- {
- if (kMounted)
- {
- auto mount = kMounted;
- kMounted = nullptr;
-
- return mount;
- }
-
- return nullptr;
- }
-
- /// @brief Mount filesystem.
- /// @param mount_ptr The filesystem to mount.
- /// @return if it succeeded true, otherwise false.
- bool FilesystemManagerInterface::Mount(_Input FilesystemManagerInterface* mount_ptr)
- {
- if (mount_ptr != nullptr)
- {
- kMounted = mount_ptr;
- return true;
- }
-
- return false;
- }
-
-#ifdef __FSKIT_USE_NEWFS__
- /// @brief Opens a new file.
- /// @param path
- /// @param r
- /// @return
- _Output NodePtr NewFilesystemManager::Open(_Input const Char* path, _Input const Char* r)
- {
- if (!path || *path == 0)
- return nullptr;
-
- if (!r || *r == 0)
- return nullptr;
-
- auto catalog = fImpl->GetCatalog(path);
-
- if (catalog->Kind != kNewFSCatalogKindFile)
- {
- fImpl->CloseCatalog(catalog);
- return nullptr;
- }
-
- return node_cast(catalog);
- }
-
- /// @brief Writes to a catalog's fork.
- /// @param node the node ptr.
- /// @param data the data.
- /// @param flags the size.
- /// @return
- Void NewFilesystemManager::Write(_Input NodePtr node, _Input VoidPtr data, _Input Int32 flags, _Input SizeT size)
- {
- if (!node)
- return;
- if (!size)
- return;
-
- constexpr auto cDataForkName = kNewFSDataFork;
- this->Write(cDataForkName, node, data, flags, size);
- }
-
- /// @brief Read from filesystem fork.
- /// @param node the catalog node.
- /// @param flags the flags with it.
- /// @param sz the size to read.
- /// @return
- _Output VoidPtr NewFilesystemManager::Read(_Input NodePtr node, _Input Int32 flags, _Input SizeT size)
- {
- if (!node)
- return nullptr;
- if (!size)
- return nullptr;
-
- constexpr auto cDataForkName = kNewFSDataFork;
- return this->Read(cDataForkName, node, flags, size);
- }
-
- Void NewFilesystemManager::Write(_Input const Char* name,
- _Input NodePtr node,
- _Input VoidPtr data,
- _Input Int32 flags,
- _Input SizeT size)
- {
- if (!size ||
- size > kNewFSForkSize)
- return;
-
- if (!data)
- return;
-
- NEWOS_UNUSED(flags);
-
- if ((reinterpret_cast<NFS_CATALOG_STRUCT*>(node))->Kind == kNewFSCatalogKindFile)
- fImpl->WriteCatalog(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), data, size,
- name);
- }
-
- _Output VoidPtr NewFilesystemManager::Read(_Input const Char* name,
- _Input NodePtr node,
- _Input Int32 flags,
- _Input SizeT sz)
- {
- if (sz > kNewFSForkSize)
- return nullptr;
-
- if (!sz)
- return nullptr;
-
- NEWOS_UNUSED(flags);
-
- if ((reinterpret_cast<NFS_CATALOG_STRUCT*>(node))->Kind == kNewFSCatalogKindFile)
- return fImpl->ReadCatalog(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), sz,
- name);
-
- return nullptr;
- }
-
- /// @brief Seek from Catalog.
- /// @param node
- /// @param off
- /// @retval true always returns false, this is unimplemented.
- /// @retval false always returns this, it is unimplemented.
-
- _Output Bool NewFilesystemManager::Seek(NodePtr node, SizeT off)
- {
- if (!node || off == 0)
- return false;
-
- return fImpl->Seek(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), off);
- }
-
- /// @brief Tell where the catalog is.
- /// @param node
- /// @retval true always returns false, this is unimplemented.
- /// @retval false always returns this, it is unimplemented.
-
- _Output SizeT NewFilesystemManager::Tell(NodePtr node)
- {
- if (!node)
- return kNPos;
-
- return fImpl->Tell(reinterpret_cast<NFS_CATALOG_STRUCT*>(node));
- }
-
- /// @brief Rewinds the catalog.
- /// @param node
- /// @retval true always returns false, this is unimplemented.
- /// @retval false always returns this, it is unimplemented.
-
- _Output Bool NewFilesystemManager::Rewind(NodePtr node)
- {
- if (!node)
- return false;
-
- return this->Seek(node, 0);
- }
-
- /// @brief Returns the filesystem parser.
- /// @return the Filesystem parser class.
- _Output NewFSParser* NewFilesystemManager::GetParser() noexcept
- {
- return fImpl;
- }
-#endif // __FSKIT_USE_NEWFS__
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Framebuffer.cxx b/dev/Kernel/Sources/Framebuffer.cxx
deleted file mode 100644
index 76fe7172..00000000
--- a/dev/Kernel/Sources/Framebuffer.cxx
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Framebuffer.cxx
- Purpose: Framebuffer object
-
- Revision History:
-
- 01/02/24: Added file (amlel)
- 02/02/24: Add documentation (amlel)
- 07/07/07: Moved Framebuffer methods into Kernel::
-
-------------------------------------------- */
-
-#include <KernelKit/Framebuffer.hxx>
-#include <HintKit/CompilerHint.hxx>
-
-/**
- * @brief Framebuffer object implementation.
- *
- */
-
-namespace Kernel
-{
- Framebuffer::Framebuffer(_Input Ref<FramebufferContext*>& addr)
- : fFrameBufferAddr(addr)
- {
- }
-
- /**
- * @brief Get Pixel at **pos**
- *
- * @param pos position of pixel.
- * @return volatile*
- */
- _Output volatile UIntPtr* Framebuffer::operator[](_Input const UIntPtr& pos)
- {
- return (UIntPtr*)(fFrameBufferAddr->fBase * pos);
- }
-
- /// @brief Boolean operator.
- Framebuffer::operator bool()
- {
- return fFrameBufferAddr.Leak()->fBase != 0 &&
- fColour != FramebufferColorKind::INVALID &&
- fFrameBufferAddr.Leak()->fBase != kBadPtr;
- }
-
- /// @brief Set color kind of framebuffer.
- /// @param colour
- /// @return
- _Output const FramebufferColorKind& Framebuffer::Color(
- const FramebufferColorKind& colour)
- {
- if (fColour != FramebufferColorKind::INVALID &&
- colour != FramebufferColorKind::INVALID)
- {
- fColour = colour;
- }
-
- return fColour;
- }
-
- /// @brief Leak framebuffer context.
- /// @return The reference of the framebuffer context.
- _Output Ref<FramebufferContext*>& Framebuffer::Leak()
- {
- return this->fFrameBufferAddr;
- }
-
- /// @brief Draws a rectangle.
- /// @param width
- /// @param height
- /// @param x
- /// @param y
- /// @param color
- /// @return
- _Output Framebuffer& Framebuffer::DrawRect(SizeT width, SizeT height, SizeT x, SizeT y, UInt32 color)
- {
- for (Kernel::SizeT i = x; i < width + x; ++i)
- {
- for (Kernel::SizeT u = y; u < height + y; ++u)
- {
- *(((volatile Kernel::UInt32*)(fFrameBufferAddr.Leak()->fBase +
- 4 * fFrameBufferAddr.Leak()->fBpp * i +
- 4 * u))) = color;
- }
- }
-
- return *this;
- }
-
- /// @brief Put a pixel on the screen.
- /// @param x
- /// @param y
- /// @param color
- /// @return
- _Output Framebuffer& Framebuffer::PutPixel(SizeT x, SizeT y, UInt32 color)
- {
- *(((volatile Kernel::UInt32*)(fFrameBufferAddr.Leak()->fBase +
- 4 * fFrameBufferAddr.Leak()->fBpp * x +
- 4 * y))) = color;
-
- return *this;
- }
-
- const UInt32 kRgbRed = 0x000000FF;
- const UInt32 kRgbGreen = 0x0000FF00;
- const UInt32 kRgbBlue = 0x00FF0000;
- const UInt32 kRgbBlack = 0x00000000;
- const UInt32 kRgbWhite = 0xFFFFFFFF;
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/GUIDWizard.cxx b/dev/Kernel/Sources/GUIDWizard.cxx
deleted file mode 100644
index bdd274a4..00000000
--- a/dev/Kernel/Sources/GUIDWizard.cxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: GUIDWizard.cxx
- Purpose: GUID helper code
-
- Revision History:
-
-------------------------------------------- */
-
-#include <CFKit/GUIDWizard.hxx>
-#include <NewKit/Ref.hxx>
-
-// begin of ascii 'readable' characters. (A, C, C, 1, 2)
-#define kAsciiBegin 47
-// @brief Size of UUID.
-#define kUUIDSize 37
-
-namespace Kernel::XRN::Version1
-{
- auto cf_make_sequence(const ArrayList<UInt32>& uuidSeq) -> Ref<GUIDSequence*>
- {
- GUIDSequence* seq = new GUIDSequence();
- MUST_PASS(seq);
-
- Ref<GUIDSequence*> sequenceReference{seq, true};
-
- sequenceReference->fMs1 = uuidSeq[0];
- sequenceReference->fMs2 = uuidSeq[1];
- sequenceReference->fMs3 = uuidSeq[2];
- sequenceReference->fMs4[0] = uuidSeq[3];
- sequenceReference->fMs4[1] = uuidSeq[4];
- sequenceReference->fMs4[2] = uuidSeq[5];
- sequenceReference->fMs4[3] = uuidSeq[6];
- sequenceReference->fMs4[4] = uuidSeq[7];
- sequenceReference->fMs4[5] = uuidSeq[8];
- sequenceReference->fMs4[6] = uuidSeq[9];
- sequenceReference->fMs4[7] = uuidSeq[10];
-
- return sequenceReference;
- }
-
- // @brief Tries to make a guid out of a string.
- // This function is not complete for now
- auto cf_try_guid_to_string(Ref<GUIDSequence*>& seq) -> ErrorOr<Ref<StringView>>
- {
- Char buf[kUUIDSize];
-
- for (SizeT index = 0; index < 16; ++index)
- {
- buf[index] = seq->u8[index] + kAsciiBegin;
- }
-
- for (SizeT index = 16; index < 24; ++index)
- {
- buf[index] = seq->u16[index] + kAsciiBegin;
- }
-
- for (SizeT index = 24; index < 28; ++index)
- {
- buf[index] = seq->u32[index] + kAsciiBegin;
- }
-
- auto view = StringBuilder::Construct(buf);
-
- if (view)
- return ErrorOr<Ref<StringView>>{view.Leak()};
-
- return ErrorOr<Ref<StringView>>{-1};
- }
-} // namespace Kernel::XRN::Version1
diff --git a/dev/Kernel/Sources/GUIDWrapper.cxx b/dev/Kernel/Sources/GUIDWrapper.cxx
deleted file mode 100644
index f87d792d..00000000
--- a/dev/Kernel/Sources/GUIDWrapper.cxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <CFKit/GUIDWrapper.hxx>
-
-namespace Kernel::XRN
-{
-}
diff --git a/dev/Kernel/Sources/HError.cxx b/dev/Kernel/Sources/HError.cxx
deleted file mode 100644
index 5ccf8aea..00000000
--- a/dev/Kernel/Sources/HError.cxx
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/LPC.hxx>
-#include <NewKit/KernelCheck.hxx>
-
-namespace Kernel
-{
- STATIC Bool cRaise = false;
-
- /// @brief Does a system wide bug check.
- /// @param void no params.
- /// @return if error-free: true, otherwise false.
- Boolean err_bug_check(void) noexcept
- {
- if (cRaise)
- {
- ke_stop(RUNTIME_CHECK_BAD_BEHAVIOR);
- }
-
- return true;
- }
-
- /// @brief Tells if we should raise a bug check not.
- /// @param void
- /// @return void
- Void err_bug_check_raise(Void) noexcept
- {
- cRaise = true;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Heap.cxx b/dev/Kernel/Sources/Heap.cxx
deleted file mode 100644
index de0c8a5c..00000000
--- a/dev/Kernel/Sources/Heap.cxx
+++ /dev/null
@@ -1,246 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/LPC.hxx>
-#include <KernelKit/Heap.hxx>
-#include <NewKit/Crc32.hxx>
-#include <NewKit/PageManager.hxx>
-
-//! @file KernelHeap.cxx
-//! @brief Kernel heap allocator.
-
-#define kKernelHeapMagic (0xD4D7D5)
-#define kKernelHeapHeaderPaddingSz (16U)
-
-namespace Kernel
-{
- SizeT kHeapCount = 0UL;
- PageManager kHeapPageManager;
- Bool kOperationInProgress = No;
-
- namespace Detail
- {
- /// @brief Kernel heap information block.
- /// Located before the address bytes.
- /// | HIB | ADDRESS |
- struct PACKED HEAP_INFORMATION_BLOCK final
- {
- ///! @brief 32-bit value which contains the magic number of the heap.
- UInt32 fMagic;
- ///! @brief Boolean value which tells if the heap is allocated.
- Boolean fPresent;
- ///! @brief 32-bit CRC checksum.
- UInt32 fCRC32;
- /// @brief 64-bit pointer size.
- SizeT fTargetPtrSize;
- /// @brief 64-bit target pointer.
- UIntPtr fTargetPtr;
- /// @brief Is this a page pointer?
- Boolean fPagePtr;
- /// @brief Padding bytes for header.
- UInt8 fPadding[kKernelHeapHeaderPaddingSz];
- };
-
- typedef HEAP_INFORMATION_BLOCK* HEAP_INFORMATION_BLOCK_PTR;
-
- Void mm_alloc_init_timeout(Void) noexcept
- {
- kOperationInProgress = Yes;
- }
-
- Void mm_alloc_fini_timeout(Void) noexcept
- {
- kOperationInProgress = No;
- }
- } // namespace Detail
-
- /// @brief Declare a new size for allocatedPtr.
- /// @param allocatedPtr the pointer.
- /// @return
- voidPtr mm_realloc_ke_heap(voidPtr allocatedPtr, SizeT newSz)
- {
- if (!allocatedPtr || newSz < 1)
- return nullptr;
-
- Detail::HEAP_INFORMATION_BLOCK_PTR heapInfoBlk =
- reinterpret_cast<Detail::HEAP_INFORMATION_BLOCK_PTR>(
- (UIntPtr)allocatedPtr - sizeof(Detail::HEAP_INFORMATION_BLOCK));
-
- heapInfoBlk->fTargetPtrSize = newSz;
-
- if (heapInfoBlk->fCRC32 > 0)
- {
- MUST_PASS(mm_protect_ke_heap(allocatedPtr));
- }
-
- return allocatedPtr;
- }
-
- /// @brief allocate chunk of memory.
- /// @param sz size of pointer
- /// @param rw read write (true to enable it)
- /// @param user is it accesible by user processes?
- /// @return The newly allocated pointer.
- VoidPtr mm_new_ke_heap(const SizeT sz, const bool rw, const bool user)
- {
- Detail::mm_alloc_init_timeout();
-
- auto szFix = sz;
-
- if (szFix == 0)
- ++szFix;
-
- kcout << "newoskrnl: allocating VMH page...\r";
-
- auto wrapper = kHeapPageManager.Request(rw, user, false, szFix);
-
- Detail::HEAP_INFORMATION_BLOCK_PTR heap_info_ptr =
- reinterpret_cast<Detail::HEAP_INFORMATION_BLOCK_PTR>(
- wrapper.VirtualAddress());
-
- heap_info_ptr->fTargetPtrSize = szFix;
- heap_info_ptr->fMagic = kKernelHeapMagic;
- heap_info_ptr->fCRC32 = 0; // dont fill it for now.
- heap_info_ptr->fTargetPtr = wrapper.VirtualAddress();
- heap_info_ptr->fPagePtr = 0;
-
- ++kHeapCount;
-
- Detail::mm_alloc_fini_timeout();
-
- return reinterpret_cast<VoidPtr>(wrapper.VirtualAddress() +
- sizeof(Detail::HEAP_INFORMATION_BLOCK));
- }
-
- /// @brief Makes a page heap.
- /// @param heap_ptr
- /// @return
- Int32 mm_make_ke_page(VoidPtr heap_ptr)
- {
- if (kHeapCount < 1)
- return -kErrorInternal;
- if (((IntPtr)heap_ptr - sizeof(Detail::HEAP_INFORMATION_BLOCK)) <= 0)
- return -kErrorInternal;
- if (((IntPtr)heap_ptr - kBadPtr) < 0)
- return -kErrorInternal;
-
- Detail::mm_alloc_init_timeout();
-
- Detail::HEAP_INFORMATION_BLOCK_PTR heapInfoBlk =
- reinterpret_cast<Detail::HEAP_INFORMATION_BLOCK_PTR>(
- (UIntPtr)heap_ptr - sizeof(Detail::HEAP_INFORMATION_BLOCK));
-
- heapInfoBlk->fPagePtr = 1;
-
- Detail::mm_alloc_fini_timeout();
-
- return 0;
- }
-
- /// @brief Declare pointer as free.
- /// @param heap_ptr the pointer.
- /// @return
- Int32 mm_delete_ke_heap(VoidPtr heap_ptr)
- {
- if (kHeapCount < 1)
- return -kErrorInternal;
- if (((IntPtr)heap_ptr - sizeof(Detail::HEAP_INFORMATION_BLOCK)) <= 0)
- return -kErrorInternal;
- if (((IntPtr)heap_ptr - kBadPtr) < 0)
- return -kErrorInternal;
-
- Detail::mm_alloc_init_timeout();
-
- Detail::HEAP_INFORMATION_BLOCK_PTR heapInfoBlk =
- reinterpret_cast<Detail::HEAP_INFORMATION_BLOCK_PTR>(
- (UIntPtr)heap_ptr - sizeof(Detail::HEAP_INFORMATION_BLOCK));
-
- if (heapInfoBlk && heapInfoBlk->fMagic == kKernelHeapMagic)
- {
- if (!heapInfoBlk->fPresent)
- {
- Detail::mm_alloc_fini_timeout();
- return -kErrorHeapNotPresent;
- }
-
- if (heapInfoBlk->fCRC32 != 0)
- {
- if (heapInfoBlk->fCRC32 !=
- ke_calculate_crc32((Char*)heapInfoBlk->fTargetPtr,
- heapInfoBlk->fTargetPtrSize))
- {
- ke_stop(RUNTIME_CHECK_POINTER);
- }
- }
-
- heapInfoBlk->fTargetPtrSize = 0UL;
- heapInfoBlk->fPresent = false;
- heapInfoBlk->fTargetPtr = 0;
- heapInfoBlk->fCRC32 = 0;
- heapInfoBlk->fMagic = 0;
-
- PTEWrapper pageWrapper(false, false, false, reinterpret_cast<UIntPtr>(heapInfoBlk));
- Ref<PTEWrapper*> pteAddress{&pageWrapper};
-
- kHeapPageManager.Free(pteAddress);
-
- --kHeapCount;
-
- Detail::mm_alloc_fini_timeout();
-
- return 0;
- }
-
- return -kErrorInternal;
- }
-
- /// @brief Check if pointer is a valid kernel pointer.
- /// @param heap_ptr the pointer
- /// @return if it exists.
- Boolean mm_is_valid_heap(VoidPtr heap_ptr)
- {
- if (kHeapCount < 1)
- return false;
-
- if (heap_ptr)
- {
- Detail::HEAP_INFORMATION_BLOCK_PTR virtualAddress =
- reinterpret_cast<Detail::HEAP_INFORMATION_BLOCK_PTR>(
- (UIntPtr)heap_ptr - sizeof(Detail::HEAP_INFORMATION_BLOCK));
-
- if (virtualAddress->fPresent && virtualAddress->fMagic == kKernelHeapMagic)
- {
- return true;
- }
- }
-
- return false;
- }
-
- /// @brief Protect the heap with a CRC value.
- /// @param heap_ptr HIB pointer.
- /// @return if it valid: point has crc now., otherwise fail.
- Boolean mm_protect_ke_heap(VoidPtr heap_ptr)
- {
- if (heap_ptr)
- {
- Detail::HEAP_INFORMATION_BLOCK_PTR heapInfoBlk =
- reinterpret_cast<Detail::HEAP_INFORMATION_BLOCK_PTR>(
- (UIntPtr)heap_ptr - sizeof(Detail::HEAP_INFORMATION_BLOCK));
-
- if (heapInfoBlk->fPresent && kKernelHeapMagic == heapInfoBlk->fMagic)
- {
- heapInfoBlk->fCRC32 =
- ke_calculate_crc32((Char*)heapInfoBlk->fTargetPtr, heapInfoBlk->fTargetPtrSize);
-
- return true;
- }
- }
-
- return false;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/IndexableProperty.cxx b/dev/Kernel/Sources/IndexableProperty.cxx
deleted file mode 100644
index f65e6f3f..00000000
--- a/dev/Kernel/Sources/IndexableProperty.cxx
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-//! @brief Filesystem Indexer.
-
-#include <CompilerKit/CompilerKit.hxx>
-#include <FSKit/IndexableProperty.hxx>
-#include <NewKit/MutableArray.hxx>
-#include <NewKit/Utils.hxx>
-
-/// @brief File Indexer.
-/// BUGS: 0
-
-#define kMaxLenIndexer 256
-
-namespace Kernel
-{
- namespace Indexer
- {
- IndexProperty& IndexableProperty::Leak() noexcept
- {
- return fIndex;
- }
-
- Void IndexableProperty::AddFlag(Int16 flag)
- {
- fFlags |= flag;
- }
-
- Void IndexableProperty::RemoveFlag(Int16 flag)
- {
- fFlags &= flag;
- }
-
- Int16 IndexableProperty::HasFlag(Int16 flag)
- {
- return fFlags & flag;
- }
-
- /// @brief Index a file into the indexer instance.
- /// @param filename path
- /// @param filenameLen used bytes in path.
- /// @param indexer the filesystem indexer.
- /// @return none.
- Void fs_index_file(const Char* filename, SizeT filenameLen, IndexableProperty& indexer)
- {
- if (!indexer.HasFlag(kIndexerClaimed))
- {
- indexer.AddFlag(kIndexerClaimed);
- rt_copy_memory((VoidPtr)indexer.Leak().Path, (VoidPtr)filename, filenameLen);
-
- kcout << "newoskrnl: filesystem: index new file: " << filename << endl;
- }
- }
- } // namespace Indexer
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Json.cxx b/dev/Kernel/Sources/Json.cxx
deleted file mode 100644
index df0d0ef8..00000000
--- a/dev/Kernel/Sources/Json.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Json.hxx>
-
-using namespace Kernel;
-
-/// @brief Undefined object, is null in length.
-cInitObject(Kernel::JsonType::kNull, Kernel::JsonType);
diff --git a/dev/Kernel/Sources/KernelCheck.cxx b/dev/Kernel/Sources/KernelCheck.cxx
deleted file mode 100644
index 27519369..00000000
--- a/dev/Kernel/Sources/KernelCheck.cxx
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <NewKit/String.hxx>
-#include <FirmwareKit/Handover.hxx>
-#include <Modules/ACPI/ACPIFactoryInterface.hxx>
-
-#include <Modules/CoreCG/Accessibility.hxx>
-#include <Modules/CoreCG/FbRenderer.hxx>
-#include <Modules/CoreCG/TextRenderer.hxx>
-
-#define SetMem(dst, byte, sz) Kernel::rt_set_memory((Kernel::VoidPtr)dst, byte, sz)
-#define CopyMem(dst, src, sz) Kernel::rt_copy_memory((Kernel::VoidPtr)src, (Kernel::VoidPtr)dst, sz)
-#define MoveMem(dst, src, sz) Kernel::rt_copy_memory((Kernel::VoidPtr)src, (Kernel::VoidPtr)dst, sz)
-
-#define cWebsiteMacro "https://zka.nl/help"
-
-#include <BootKit/Vendor/Qr.hxx>
-
-/* Each error code is attributed with an ID, which will prompt a string onto the
- * screen. Wait for debugger... */
-
-namespace Kernel
-{
- void ke_stop(const Kernel::Int& id)
- {
- CGInit();
-
- auto panicBack = RGB(0xff, 0x3a, 0x3a);
- auto panicTxt = RGB(0xff, 0xff, 0xff);
-
- CGDrawInRegion(panicBack, UIAccessibilty::The().Height(), UIAccessibilty::The().Width(), 0, 0);
-
- auto start_y = 10;
- auto x = 10;
-
- cg_write_text("newoskrnl.dll stopped working properly so we had to stop.", start_y, x, panicTxt);
-
- CGFini();
-
- // Show the QR code now.
-
- constexpr auto cVer = 4;
- const auto cECC = qr::Ecc::H;
- const auto cInput = cWebsiteMacro;
- const auto cInputLen = rt_string_len(cWebsiteMacro);
-
- qr::Qr<cVer> encoder;
- qr::QrDelegate encoderDelegate;
-
- encoder.encode(cInput, cInputLen, cECC, 0); // Manual mask 0
-
- const auto cWhereStartX = (kHandoverHeader->f_GOP.f_Width - encoder.side_size()) - 20;
- const auto cWhereStartY = (kHandoverHeader->f_GOP.f_Height - encoder.side_size()) / 2;
-
- // tell delegate to draw encoded QR now.
- encoderDelegate.draw<cVer>(encoder, cWhereStartX,
- cWhereStartY);
-
- start_y += 10;
-
- // show text according to error id.
-
- switch (id)
- {
- case RUNTIME_CHECK_PROCESS: {
- cg_write_text("0x00000008 Process scheduler error (Catasrophic failure).", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_ACPI: {
- cg_write_text("0x00000006 ACPI error.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_POINTER: {
- cg_write_text("0x00000000 Kernel heap error.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_BAD_BEHAVIOR: {
- cg_write_text("0x00000009 Undefined Behavior error.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_BOOTSTRAP: {
- cg_write_text("0x0000000A End of code.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_HANDSHAKE: {
- cg_write_text("0x00000005 Handshake error.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_IPC: {
- cg_write_text("0x00000003 Kernel IPC error.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_INVALID_PRIVILEGE: {
- cg_write_text("0x00000007 Kernel privilege violation.", start_y, x, panicTxt);
- break;
- case RUNTIME_CHECK_UNEXCPECTED: {
- cg_write_text("0x0000000B Catasrophic failure.", start_y, x, panicTxt);
- break;
- }
- case RUNTIME_CHECK_FAILED: {
- cg_write_text("0x10000001 Assertion failed.", start_y, x, panicTxt);
- break;
- }
- default: {
- cg_write_text("0xFFFFFFFF Unknown error.", start_y, x, panicTxt);
- break;
- }
- }
- };
-
- RecoveryFactory::Recover();
- }
-
- Void RecoveryFactory::Recover() noexcept
- {
- while (Yes)
- {
- asm volatile("cli; hlt");
- }
- }
-
- void ke_runtime_check(bool expr, const char* file, const char* line)
- {
- if (!expr)
- {
- ke_stop(RUNTIME_CHECK_FAILED); // Runtime Check failed
- }
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/LockDelegate.cxx b/dev/Kernel/Sources/LockDelegate.cxx
deleted file mode 100644
index f23c46d3..00000000
--- a/dev/Kernel/Sources/LockDelegate.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/LockDelegate.hxx>
-
-namespace Kernel
-{
- /// Leave it empty for now.
-} // namespace Kernel \ No newline at end of file
diff --git a/dev/Kernel/Sources/MP.cxx b/dev/Kernel/Sources/MP.cxx
deleted file mode 100644
index bf35f51e..00000000
--- a/dev/Kernel/Sources/MP.cxx
+++ /dev/null
@@ -1,256 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/MP.hxx>
-#include <CFKit/Property.hxx>
-
-///! BUGS: 0
-
-///! @file MP.cxx
-///! @brief This file handles multi processing in the kernel.
-///! @brief Multi processing is needed for multi-tasking operations.
-
-namespace Kernel
-{
- STATIC Property cSMPCoreName;
-
- ///! A HardwareThread class takes care of it's owned hardware thread.
- ///! It has a stack for it's core.
-
- ///! @brief C++ constructor.
- HardwareThread::HardwareThread() = default;
-
- ///! @brief C++ destructor.
- HardwareThread::~HardwareThread() = default;
-
- //! @brief returns the id of the thread.
- const ThreadID& HardwareThread::ID() noexcept
- {
- return fID;
- }
-
- //! @brief returns the kind of thread we have.
- const ThreadKind& HardwareThread::Kind() noexcept
- {
- return fKind;
- }
-
- //! @brief is the thread busy?
- Bool HardwareThread::IsBusy() noexcept
- {
- return fBusy;
- }
-
- /// @brief Get processor stack frame.
-
- HAL::StackFramePtr HardwareThread::StackFrame() noexcept
- {
- MUST_PASS(fStack);
- return fStack;
- }
-
- Void HardwareThread::Busy(const Bool busy) noexcept
- {
- fBusy = busy;
- }
-
- HardwareThread::operator bool()
- {
- return fStack;
- }
-
- /// @brief Wakeup the processor.
-
- Void HardwareThread::Wake(const bool wakeup) noexcept
- {
- fWakeup = wakeup;
-
- if (!fWakeup)
- mp_hang_thread(fStack);
- else
- mp_wakeup_thread(fStack);
- }
-
- EXTERN Bool rt_check_stack(HAL::StackFramePtr stackPtr);
-
- /// @brief Switch to hardware thread.
- /// @param stack the new hardware thread.
- /// @retval true stack was changed, code is running.
- /// @retval false stack is invalid, previous code is running.
- Bool HardwareThread::Switch(HAL::StackFramePtr stack)
- {
- if (!rt_check_stack(stack))
- {
- /// provide 'nullptr' to free the stack frame.
- if (stack == nullptr)
- {
- delete fStack;
- fStack = nullptr;
-
- return true;
- }
-
- return false;
- }
-
- if (fStack)
- {
- delete fStack;
- fStack = nullptr;
- }
-
- fStack = stack;
-
- rt_do_context_switch(fStack);
-
- return true;
- }
-
- ///! @brief Tells if processor is waked up.
- bool HardwareThread::IsWakeup() noexcept
- {
- return fWakeup;
- }
-
- //! @brief Constructor and destructor
-
- ///! @brief Default constructor.
- HardwareThreadScheduler::HardwareThreadScheduler()
- {
- StringView strCoreName(512);
- strCoreName += "\\Class\\Smp\\MPClass";
-
- cSMPCoreName.GetKey() = strCoreName;
- cSMPCoreName.GetValue() = (UIntPtr)this;
-
- kcout << "newoskrnl: initializing " << strCoreName.CData() << endl;
- }
-
- ///! @brief Default destructor.
- HardwareThreadScheduler::~HardwareThreadScheduler() = default;
-
- /// @brief Shared singleton function
- Ref<HardwareThreadScheduler> HardwareThreadScheduler::The()
- {
- static HardwareThreadScheduler manager;
- return {manager};
- }
-
- /// @brief Get Stack Frame of Core
- HAL::StackFramePtr HardwareThreadScheduler::Leak() noexcept
- {
- if (fThreadList[fCurrentThread].Leak() &&
- ProcessHelper::TheCurrentPID() ==
- fThreadList[fCurrentThread].Leak().Leak()->fSourcePID)
- return fThreadList[fCurrentThread].Leak().Leak()->fStack;
-
- return nullptr;
- }
-
- /// @brief Finds and switch to a free core.
- bool HardwareThreadScheduler::Switch(HAL::StackFramePtr stack)
- {
- if (stack == nullptr)
- return false;
-
- for (SizeT idx = 0; idx < cMaxHWThreads; ++idx)
- {
- // stack != nullptr -> if core is used, then continue.
- if (!fThreadList[idx].Leak() ||
- !fThreadList[idx].Leak().Leak()->IsWakeup() ||
- fThreadList[idx].Leak().Leak()->IsBusy())
- continue;
-
- // to avoid any null deref.
- if (!fThreadList[idx].Leak().Leak()->fStack)
- continue;
- if (fThreadList[idx].Leak().Leak()->fStack->SP == 0)
- continue;
- if (fThreadList[idx].Leak().Leak()->fStack->BP == 0)
- continue;
-
- fThreadList[idx].Leak().Leak()->Busy(true);
-
- fThreadList[idx].Leak().Leak()->fID = idx;
-
- /// I figured out this:
- /// Allocate stack
- /// Set APIC base to stack
- /// Do stuff and relocate stack based on this code.
- /// - Amlel
- rt_copy_memory(stack, fThreadList[idx].Leak().Leak()->fStack,
- sizeof(HAL::StackFrame));
-
- fThreadList[idx].Leak().Leak()->Switch(fThreadList[idx].Leak().Leak()->fStack);
-
- fThreadList[idx].Leak().Leak()->fSourcePID = ProcessHelper::TheCurrentPID();
-
- fThreadList[idx].Leak().Leak()->Busy(false);
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Index Hardware thread
- * @param idx the index
- * @return the reference to the hardware thread.
- */
- Ref<HardwareThread*> HardwareThreadScheduler::operator[](const SizeT& idx)
- {
- if (idx == 0)
- {
- if (fThreadList[idx].Leak().Leak()->Kind() != kHartSystemReserved)
- {
- fThreadList[idx].Leak().Leak()->fKind = kHartBoot;
- }
- }
- else if (idx >= cMaxHWThreads)
- {
- static HardwareThread* fakeThread = new HardwareThread();
-
- if (!fakeThread)
- {
- fakeThread = new HardwareThread();
- }
-
- fakeThread->fKind = kInvalidHart;
-
- return {fakeThread};
- }
-
- return fThreadList[idx].Leak();
- }
-
- /**
- * Check if thread pool isn't empty.
- * @return
- */
- HardwareThreadScheduler::operator bool() noexcept
- {
- return !fThreadList.Empty();
- }
-
- /**
- * Reverse operator bool
- * @return
- */
- bool HardwareThreadScheduler::operator!() noexcept
- {
- return fThreadList.Empty();
- }
-
- /// @brief Returns the amount of core present.
- /// @return the number of cores.
- SizeT HardwareThreadScheduler::Count() noexcept
- {
- return fThreadList.Count();
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/MutableArray.cxx b/dev/Kernel/Sources/MutableArray.cxx
deleted file mode 100644
index 766cb304..00000000
--- a/dev/Kernel/Sources/MutableArray.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/MutableArray.hxx>
diff --git a/dev/Kernel/Sources/Network/IP.cxx b/dev/Kernel/Sources/Network/IP.cxx
deleted file mode 100644
index 3e5462a1..00000000
--- a/dev/Kernel/Sources/Network/IP.cxx
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NetworkKit/IP.hxx>
-#include <NewKit/Utils.hxx>
-
-namespace Kernel
-{
- char* RawIPAddress::Address()
- {
- return fAddr;
- }
-
- RawIPAddress::RawIPAddress(char bytes[4])
- {
- rt_copy_memory(bytes, fAddr, 4);
- }
-
- bool RawIPAddress::operator==(const RawIPAddress& ipv4)
- {
- for (Size index = 0; index < 4; ++index)
- {
- if (ipv4.fAddr[index] != fAddr[index])
- return false;
- }
-
- return true;
- }
-
- bool RawIPAddress::operator!=(const RawIPAddress& ipv4)
- {
- for (Size index = 0; index < 4; ++index)
- {
- if (ipv4.fAddr[index] == fAddr[index])
- return false;
- }
-
- return true;
- }
-
- char& RawIPAddress::operator[](const Size& index)
- {
- kcout << "[RawIPAddress::operator[]] Fetching Index...\r";
-
- static char IP_PLACEHOLDER = '0';
- if (index > 4)
- return IP_PLACEHOLDER;
-
- return fAddr[index];
- }
-
- RawIPAddress6::RawIPAddress6(char bytes[8])
- {
- rt_copy_memory(bytes, fAddr, 8);
- }
-
- char& RawIPAddress6::operator[](const Size& index)
- {
- kcout << "[RawIPAddress6::operator[]] Fetching Index...\r";
-
- static char IP_PLACEHOLDER = '0';
- if (index > 8)
- return IP_PLACEHOLDER;
-
- return fAddr[index];
- }
-
- bool RawIPAddress6::operator==(const RawIPAddress6& ipv6)
- {
- for (SizeT index = 0; index < 8; ++index)
- {
- if (ipv6.fAddr[index] != fAddr[index])
- return false;
- }
-
- return true;
- }
-
- bool RawIPAddress6::operator!=(const RawIPAddress6& ipv6)
- {
- for (SizeT index = 0; index < 8; ++index)
- {
- if (ipv6.fAddr[index] == fAddr[index])
- return false;
- }
-
- return true;
- }
-
- ErrorOr<StringView> IPFactory::ToStringView(Ref<RawIPAddress6>& ipv6)
- {
- auto str = StringBuilder::Construct(ipv6.Leak().Address());
- return str;
- }
-
- ErrorOr<StringView> IPFactory::ToStringView(Ref<RawIPAddress>& ipv4)
- {
- auto str = StringBuilder::Construct(ipv4.Leak().Address());
- return str;
- }
-
- bool IPFactory::IpCheckVersion4(const char* ip)
- {
- int cnter = 0;
-
- for (Size base = 0; base < rt_string_len(ip); ++base)
- {
- if (ip[base] == '.')
- {
- cnter = 0;
- }
- else
- {
- if (cnter == 3)
- return false;
-
- ++cnter;
- }
- }
-
- return true;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Network/IPC.cxx b/dev/Kernel/Sources/Network/IPC.cxx
deleted file mode 100644
index f703e650..00000000
--- a/dev/Kernel/Sources/Network/IPC.cxx
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NetworkKit/IPC.hxx>
-#include <KernelKit/LPC.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-
-using namespace Kernel;
-
-/// @internal
-/// @brief The internal sanitize function.
-Bool ipc_int_sanitize_packet(IPC_MESSAGE_STRUCT* pckt)
-{
- auto endian = DEDUCE_ENDIAN(pckt, ((char*)pckt)[0]);
-
- switch (endian)
- {
- case Endian::kEndianBig: {
- if (pckt->IpcEndianess == eIPCEPLittleEndian)
- goto ipc_check_failed;
-
- break;
- }
- case Endian::kEndianLittle: {
- if (pckt->IpcEndianess == eIPCEPBigEndian)
- goto ipc_check_failed;
-
- break;
- }
- case Endian::kEndianMixed:
- break;
- default:
- goto ipc_check_failed;
- }
-
- if (pckt->IpcFrom == pckt->IpcTo ||
- pckt->IpcPacketSize > cIPCEPMsgSize)
- {
- goto ipc_check_failed;
- }
-
- return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == cRemoteHeaderMagic;
-
-ipc_check_failed:
- ErrLocal() = kErrorIPC;
- return false;
-}
-
-namespace Kernel
-{
- /// @brief Sanitize packet function
- /// @retval true packet is correct.
- /// @retval false packet is incorrect and process has crashed.
- Bool ipc_sanitize_packet(IPC_MESSAGE_STRUCT* pckt)
- {
- if (!pckt ||
- !ipc_int_sanitize_packet(pckt))
- {
- ProcessScheduler::The().Leak().TheCurrent().Leak().Crash();
- return false;
- }
-
- return true;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Network/NetworkDevice.cxx b/dev/Kernel/Sources/Network/NetworkDevice.cxx
deleted file mode 100644
index 1bcd9e24..00000000
--- a/dev/Kernel/Sources/Network/NetworkDevice.cxx
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NetworkKit/NetworkDevice.hxx>
-#include <NewKit/Utils.hxx>
-
-namespace Kernel
-{
- /// \brief Getter for fNetworkName.
- const char* NetworkDevice::Name() const
- {
- return this->fNetworkName;
- }
-
- /// \brief Setter for fNetworkName.
- Boolean NetworkDevice::Name(const char* strView)
- {
- if (strView == nullptr)
- return false;
-
- if (*strView == 0)
- return false;
-
- if (rt_string_len(strView) > cNetworkNameLen)
- return false;
-
- rt_copy_memory((VoidPtr)strView,
- (VoidPtr)this->fNetworkName, rt_string_len(strView));
-
- return true;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/New+Delete.cxx b/dev/Kernel/Sources/New+Delete.cxx
deleted file mode 100644
index 12ea38a7..00000000
--- a/dev/Kernel/Sources/New+Delete.cxx
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/Heap.hxx>
-#include <NewKit/New.hxx>
-
-void* operator new[](size_t sz)
-{
- if (sz == 0)
- ++sz;
-
- return Kernel::mm_new_ke_heap(sz, true, false);
-}
-
-void* operator new(size_t sz)
-{
- if (sz == 0)
- ++sz;
-
- return Kernel::mm_new_ke_heap(sz, true, false);
-}
-
-void operator delete[](void* ptr)
-{
- if (ptr == nullptr)
- return;
-
- Kernel::mm_delete_ke_heap(ptr);
-}
-
-void operator delete(void* ptr)
-{
- if (ptr == nullptr)
- return;
-
- Kernel::mm_delete_ke_heap(ptr);
-}
-
-void operator delete(void* ptr, size_t sz)
-{
- if (ptr == nullptr)
- return;
-
- NEWOS_UNUSED(sz);
-
- Kernel::mm_delete_ke_heap(ptr);
-}
diff --git a/dev/Kernel/Sources/NewFS+FileManager.cxx b/dev/Kernel/Sources/NewFS+FileManager.cxx
deleted file mode 100644
index f94831cd..00000000
--- a/dev/Kernel/Sources/NewFS+FileManager.cxx
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/FileManager.hxx>
-#include <KernelKit/Heap.hxx>
-
-#ifdef __FSKIT_USE_NEWFS__
-
-/// @brief NewFS File manager.
-/// BUGS: 0
-
-namespace Kernel
-{
- /// @brief C++ constructor
- NewFilesystemManager::NewFilesystemManager()
- {
- MUST_PASS(Detail::fs_init_newfs());
- fImpl = new NewFSParser();
-
- kcout << "newoskrnl: We are done here... (NewFilesystemManager).\r";
- }
-
- NewFilesystemManager::~NewFilesystemManager()
- {
- kcout << "newoskrnl: Destroying it...\r";
-
- if (fImpl)
- {
- delete fImpl;
- }
- }
-
- /// @brief Removes a node from the filesystem.
- /// @param fileName The filename
- /// @return If it was deleted or not.
- bool NewFilesystemManager::Remove(const char* fileName)
- {
- if (fileName == nullptr || *fileName == 0)
- return false;
-
- return fImpl->RemoveCatalog(fileName);
- }
-
- /// @brief Creates a node with the specified.
- /// @param path The filename path.
- /// @return The Node pointer.
- NodePtr NewFilesystemManager::Create(const char* path)
- {
- return node_cast(fImpl->CreateCatalog(path, 0, kNewFSCatalogKindFile));
- }
-
- /// @brief Creates a node with is a directory.
- /// @param path The filename path.
- /// @return The Node pointer.
- NodePtr NewFilesystemManager::CreateDirectory(const char* path)
- {
- return node_cast(fImpl->CreateCatalog(path, 0, kNewFSCatalogKindDir));
- }
-
- /// @brief Creates a node with is a alias.
- /// @param path The filename path.
- /// @return The Node pointer.
- NodePtr NewFilesystemManager::CreateAlias(const char* path)
- {
- return node_cast(fImpl->CreateCatalog(path, 0, kNewFSCatalogKindAlias));
- }
-
- /// @brief Gets the root directory.
- /// @return
- const char* NewFilesystemHelper::Root()
- {
- return kNewFSRoot;
- }
-
- /// @brief Gets the up-dir directory.
- /// @return
- const char* NewFilesystemHelper::UpDir()
- {
- return kNewFSUpDir;
- }
-
- /// @brief Gets the separator character.
- /// @return
- const char NewFilesystemHelper::Separator()
- {
- return kNewFSSeparator;
- }
-
- /// @brief Gets the metafile character.
- /// @return
- const char NewFilesystemHelper::MetaFile()
- {
- return kNewFSMetaFilePrefix;
- }
-} // namespace Kernel
-
-#endif // ifdef __FSKIT_USE_NEWFS__
diff --git a/dev/Kernel/Sources/NewFS+IO.cxx b/dev/Kernel/Sources/NewFS+IO.cxx
deleted file mode 100644
index ddcecde4..00000000
--- a/dev/Kernel/Sources/NewFS+IO.cxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DriveManager.hxx>
-#include <KernelKit/FileManager.hxx>
-
-/*************************************************************
- *
- * File: NewFS+IO.cxx
- * Purpose: Filesystem to mountpoint interface.
- * Date: 3/26/24
- *
- * Copyright ZKA Technologies., all rights reserved.
- *
- *************************************************************/
-
-#ifdef __FSKIT_USE_NEWFS__
-
-#include <FirmwareKit/EPM.hxx>
-
-/// Useful macros.
-
-#define NEWFS_WRITE(DRV, TRAITS, MP) (MP->DRV()).fOutput(&TRAITS)
-#define NEWFS_READ(DRV, TRAITS, MP) (MP->DRV()).fInput(&TRAITS)
-
-using namespace Kernel;
-
-/// @brief Read from newfs disk.
-/// @param Mnt mounted interface.
-/// @param DrvTrait drive info
-/// @param DrvIndex drive index.
-/// @return
-Int32 fs_newfs_read(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex)
-{
- if (!Mnt)
- return -1;
-
- DrvTrait.fPacket.fPacketGood = false;
-
- switch (DrvIndex)
- {
- case kNewFSSubDriveA: {
- NEWFS_READ(A, DrvTrait.fPacket, Mnt);
- break;
- }
- case kNewFSSubDriveB: {
- NEWFS_READ(B, DrvTrait.fPacket, Mnt);
- break;
- }
- case kNewFSSubDriveC: {
- NEWFS_READ(C, DrvTrait.fPacket, Mnt);
- break;
- }
- case kNewFSSubDriveD: {
- NEWFS_READ(D, DrvTrait.fPacket, Mnt);
- break;
- }
- }
-
- return DrvTrait.fPacket.fPacketGood;
-}
-
-/// @brief Write to newfs disk.
-/// @param Mnt mounted interface.
-/// @param DrvTrait drive info
-/// @param DrvIndex drive index.
-/// @return
-Int32 fs_newfs_write(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex)
-{
- if (!Mnt)
- return -1;
-
- DrvTrait.fPacket.fPacketGood = false;
-
- switch (DrvIndex)
- {
- case kNewFSSubDriveA: {
- NEWFS_WRITE(A, DrvTrait.fPacket, Mnt);
- break;
- }
- case kNewFSSubDriveB: {
- NEWFS_WRITE(B, DrvTrait.fPacket, Mnt);
- break;
- }
- case kNewFSSubDriveC: {
- NEWFS_WRITE(C, DrvTrait.fPacket, Mnt);
- break;
- }
- case kNewFSSubDriveD: {
- NEWFS_WRITE(D, DrvTrait.fPacket, Mnt);
- break;
- }
- }
-
- return DrvTrait.fPacket.fPacketGood;
-}
-
-#endif // ifdef __FSKIT_USE_NEWFS__
diff --git a/dev/Kernel/Sources/NewFS+Journal.cxx b/dev/Kernel/Sources/NewFS+Journal.cxx
deleted file mode 100644
index 6504b2bc..00000000
--- a/dev/Kernel/Sources/NewFS+Journal.cxx
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/FileManager.hxx>
-
-#ifdef __FSKIT_USE_NEWFS__
-
-///! BUGS: 0
-///! @file NewFS+Journal.cxx
-///! @brief Journaling for NewFS.
-
-namespace Kernel::Journal
-{
-} // namespace Kernel::Journal
-
-using namespace Kernel;
-
-#endif // ifdef __FSKIT_USE_NEWFS__
diff --git a/dev/Kernel/Sources/OwnPtr.cxx b/dev/Kernel/Sources/OwnPtr.cxx
deleted file mode 100644
index 8b0442a7..00000000
--- a/dev/Kernel/Sources/OwnPtr.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/OwnPtr.hxx>
diff --git a/dev/Kernel/Sources/PEFCodeManager.cxx b/dev/Kernel/Sources/PEFCodeManager.cxx
deleted file mode 100644
index d557cc2f..00000000
--- a/dev/Kernel/Sources/PEFCodeManager.cxx
+++ /dev/null
@@ -1,241 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/Heap.hxx>
-#include <KernelKit/PEFCodeManager.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <NewKit/Defines.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <NewKit/OwnPtr.hxx>
-#include <NewKit/String.hxx>
-
-namespace Kernel
-{
- namespace Detail
- {
- /// @brief Get the PEF platform signature according to the compiled backebnd
- UInt32 rt_get_pef_platform(void) noexcept
- {
-#ifdef __NEWOS_32X0__
- return kPefArch32x0;
-#elif defined(__NEWOS_64X0__)
- return kPefArch64x0;
-#elif defined(__NEWOS_AMD64__)
- return kPefArchAMD64;
-#elif defined(__NEWOS_PPC64__)
- return kPefArchPowerPC;
-#elif defined(__NEWOS_ARM64__)
- return kPefArchARM64;
-#else
- return kPefArchInvalid;
-#endif // __32x0__ || __64x0__ || __x86_64__
- }
- } // namespace Detail
-
- /// @brief PEF loader constructor w/ blob.
- /// @param blob
- PEFLoader::PEFLoader(const VoidPtr blob)
- : fCachedBlob(blob)
- {
- MUST_PASS(fCachedBlob);
- fBad = false;
- }
-
- /// @brief PEF loader constructor.
- /// @param path the filesystem path.
- PEFLoader::PEFLoader(const Char* path)
- : fCachedBlob(nullptr), fBad(false), fFatBinary(false)
- {
- fFile.New(const_cast<Char*>(path), cRestrictRB);
-
- if (StringBuilder::Equals(fFile->MIME(), this->MIME()))
- {
- fPath = StringBuilder::Construct(path).Leak();
-
- auto cPefHeader = "PEFContainer";
-
- fCachedBlob = fFile->Read(cPefHeader);
-
- PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob);
-
- if (container->Cpu == Detail::rt_get_pef_platform() &&
- container->Magic[0] == kPefMagic[0] &&
- container->Magic[1] == kPefMagic[1] &&
- container->Magic[2] == kPefMagic[2] &&
- container->Magic[3] == kPefMagic[3] &&
- container->Magic[4] == kPefMagic[4] && container->Abi == kPefAbi)
- {
- return;
- }
- else if (container->Magic[4] == kPefMagic[0] &&
- container->Magic[3] == kPefMagic[1] &&
- container->Magic[2] == kPefMagic[2] &&
- container->Magic[1] == kPefMagic[3] &&
- container->Magic[0] == kPefMagic[0] && container->Abi == kPefAbi)
- {
- /// This is a fat binary.
- this->fFatBinary = true;
- return;
- }
-
- kcout << "CodeManager: Warning: Executable format error!\n";
- fBad = true;
-
- mm_delete_ke_heap(fCachedBlob);
-
- fCachedBlob = nullptr;
- }
- }
-
- /// @brief PEF destructor.
- PEFLoader::~PEFLoader()
- {
- if (fCachedBlob)
- mm_delete_ke_heap(fCachedBlob);
-
- fFile.Delete();
- }
-
- VoidPtr PEFLoader::FindSymbol(const char* name, Int32 kind)
- {
- if (!fCachedBlob || fBad)
- return nullptr;
-
- PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob);
-
- StringView cPefHeaderStr = StringBuilder::Construct("PEFContainerHeader:").Leak().Leak();
- cPefHeaderStr += name;
-
- auto blob = fFile->Read(cPefHeaderStr.CData());
-
- PEFCommandHeader* container_header = reinterpret_cast<PEFCommandHeader*>(blob);
-
- constexpr auto cMangleCharacter = '$';
- const char* cContainerKinds[] = {".code64", ".data64", ".zero64", nullptr};
-
- ErrorOr<StringView> errOrSym;
-
- switch (kind)
- {
- case kPefCode: {
- errOrSym = StringBuilder::Construct(cContainerKinds[0]); // code symbol.
- break;
- }
- case kPefData: {
- errOrSym = StringBuilder::Construct(cContainerKinds[1]); // data symbol.
- break;
- }
- case kPefZero: {
- errOrSym = StringBuilder::Construct(cContainerKinds[2]); // block starting symbol.
- break;
- }
- default:
- return nullptr;
- }
-
- char* unconstSymbol = const_cast<char*>(name);
-
- for (SizeT i = 0UL; i < rt_string_len(unconstSymbol, kPefNameLen); ++i)
- {
- if (unconstSymbol[i] == ' ')
- {
- unconstSymbol[i] = cMangleCharacter;
- }
- }
-
- errOrSym.Leak().Leak() += name;
-
- for (SizeT index = 0; index < container->Count; ++index)
- {
- if (StringBuilder::Equals(container_header->Name,
- errOrSym.Leak().Leak().CData()))
- {
- if (container_header->Kind == kind)
- {
- if (container_header->Cpu != Detail::rt_get_pef_platform())
- {
- if (!this->fFatBinary)
- {
- mm_delete_ke_heap(blob);
- return nullptr;
- }
- }
-
- Char* blobRet = new Char[container_header->Size];
-
- rt_copy_memory((VoidPtr)((Char*)blob + sizeof(PEFCommandHeader)), blobRet, container_header->Size);
-
- mm_delete_ke_heap(blob);
- return blobRet;
- }
- }
- }
-
- mm_delete_ke_heap(blob);
- return nullptr;
- }
-
- /// @brief Finds the executable entrypoint.
- /// @return
- ErrorOr<VoidPtr> PEFLoader::FindStart()
- {
- if (auto sym = this->FindSymbol(kPefStart, kPefCode); sym)
- return ErrorOr<VoidPtr>(sym);
-
- return ErrorOr<VoidPtr>(kErrorExecutable);
- }
-
- /// @brief Tells if the executable is loaded or not.
- /// @return
- bool PEFLoader::IsLoaded() noexcept
- {
- return !fBad && fCachedBlob;
- }
-
- namespace Utils
- {
- bool execute_from_image(PEFLoader& exec, const Int32& procKind) noexcept
- {
- auto errOrStart = exec.FindStart();
-
- if (errOrStart.Error() != 0)
- return false;
-
- PROCESS_HEADER_BLOCK proc(errOrStart.Leak().Leak());
- Ref<PROCESS_HEADER_BLOCK> refProc = proc;
-
- proc.Kind = procKind;
-
- return ProcessScheduler::The().Leak().Add(refProc);
- }
- } // namespace Utils
-
- const char* PEFLoader::Path()
- {
- return fPath.Leak().CData();
- }
-
- const char* PEFLoader::AsString()
- {
-#ifdef __32x0__
- return "32x0 PEF format.";
-#elif defined(__64x0__)
- return "64x0 PEF format.";
-#elif defined(__x86_64__)
- return "x86_64 PEF format.";
-#elif defined(__powerpc64__)
- return "POWER PEF format.";
-#else
- return "Unknown PEF format.";
-#endif // __32x0__ || __64x0__ || __x86_64__ || __powerpc64__
- }
-
- const char* PEFLoader::MIME()
- {
- return kPefApplicationMime;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/PEFSharedObject.cxx b/dev/Kernel/Sources/PEFSharedObject.cxx
deleted file mode 100644
index 22890e22..00000000
--- a/dev/Kernel/Sources/PEFSharedObject.cxx
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * ========================================================
- *
- * Kernel
- * Copyright ZKA Technologies., all rights reserved.
- *
- * ========================================================
- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <KernelKit/PEF.hxx>
-#include <KernelKit/PEFSharedObject.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/ThreadLocalStorage.hxx>
-#include <NewKit/Defines.hxx>
-
-/* -------------------------------------------
-
- Revision History:
-
- 01/02/24: Rework shared sharedObj ABI, except a rtl_init_shared_object and
- rtl_fini_shared_object (amlel) 15/02/24: Breaking changes, changed the name of the
- routines. (amlel)
-
- 07/28/24: Replace rt_library_free with rtl_fini_shared_object
-
- ------------------------------------------- */
-
-using namespace Kernel;
-
-/***********************************************************************************/
-/// @file PEFSharedObjectRT.cxx
-/// @brief PEF's shared object runtime.
-/***********************************************************************************/
-
-/***********************************************************************************/
-/** @brief Library initializer. */
-/***********************************************************************************/
-
-EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header)
-{
- SharedObjectPtr sharedObj = tls_new_class<PEFSharedObjectInterface>();
-
- if (!sharedObj)
- {
- header->Crash();
-
- return nullptr;
- }
-
- sharedObj->Mount(tls_new_class<PEFSharedObjectInterface::PEF_SHARED_OBJECT_TRAITS>());
-
- if (!sharedObj->Get())
- {
- header->Crash();
-
- return nullptr;
- }
-
- sharedObj->Get()->fImageObject =
- header->Image;
-
- if (!sharedObj->Get()->fImageObject)
- {
- header->Crash();
-
- return nullptr;
- }
-
- sharedObj->Get()->fImageEntrypointOffset =
- sharedObj->Load<VoidPtr>(kPefStart, rt_string_len(kPefStart, 0), kPefCode);
-
- return sharedObj;
-}
-
-/***********************************************************************************/
-/** @brief Frees the sharedObj. */
-/** @note Please check if the lib got freed! */
-/** @param lib The sharedObj to free. */
-/** @param successful Reports if successful or not. */
-/***********************************************************************************/
-
-EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectPtr lib, Bool* successful)
-{
- MUST_PASS(successful);
-
- // sanity check (will also trigger a bug check if this fails)
- if (lib == nullptr)
- {
- *successful = false;
- header->Crash();
- }
-
- delete lib->Get();
- delete lib;
-
- lib = nullptr;
-
- *successful = true;
-}
-
-/***********************************************************************************/
-/// @brief Unimplemented function (crashes by default)
-/// @param
-/***********************************************************************************/
-
-EXTERN_C void __mh_purecall(void)
-{
- kcout << "newoskrnl: unimplemented symbol!\r";
-}
diff --git a/dev/Kernel/Sources/PRDT.cxx b/dev/Kernel/Sources/PRDT.cxx
deleted file mode 100644
index f9bbd685..00000000
--- a/dev/Kernel/Sources/PRDT.cxx
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/String.hxx>
-#include <StorageKit/PRDT.hxx>
-
-namespace Kernel
-{
- /// @brief constructs a new PRD.
- /// @param prd PRD reference.
- /// @note This doesnt construct a valid, please fill it by yourself.
- void construct_prdt(Ref<PRDT>& prd)
- {
- prd.Leak().fPhysAddress = 0x0;
- prd.Leak().fSectorCount = 0x0;
- prd.Leak().fEndBit = 0x0;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/PageAllocator.cxx b/dev/Kernel/Sources/PageAllocator.cxx
deleted file mode 100644
index 4f64b05f..00000000
--- a/dev/Kernel/Sources/PageAllocator.cxx
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <ArchKit/ArchKit.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/PageAllocator.hxx>
-
-/// @brief Internal namespace, used internally by kernel.
-namespace Kernel::Detail
-{
- VoidPtr create_page_wrapper(Boolean rw, Boolean user, SizeT pageSz)
- {
- auto addr = HAL::hal_alloc_page(rw, user, pageSz);
-
- if (addr == kBadAddress)
- {
- kcout << "[create_page_wrapper] kBadAddress returned\n";
- ke_stop(RUNTIME_CHECK_POINTER);
- }
-
- return addr;
- }
-
- void exec_disable(UIntPtr VirtualAddr)
- {
-#ifdef __NEWOS_SUPPORT_NX__
- PTE* VirtualAddrTable = reinterpret_cast<PTE*>(VirtualAddr);
-
- MUST_PASS(!VirtualAddrTable->ExecDisable == false);
- VirtualAddrTable->ExecDisable = true;
-
- hal_flush_tlb();
-#endif // ifdef __NEWOS_SUPPORT_NX__
- }
-
- bool page_disable(UIntPtr VirtualAddr)
- {
- if (VirtualAddr)
- {
- auto VirtualAddrTable = (PTE*)(VirtualAddr);
-
- MUST_PASS(!VirtualAddrTable->Present == true);
- VirtualAddrTable->Present = false;
-
- hal_flush_tlb();
-
- return true;
- }
-
- return false;
- }
-} // namespace Kernel::Detail
diff --git a/dev/Kernel/Sources/PageManager.cxx b/dev/Kernel/Sources/PageManager.cxx
deleted file mode 100644
index 7e0ef67b..00000000
--- a/dev/Kernel/Sources/PageManager.cxx
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/PageManager.hxx>
-
-#ifdef __NEWOS_AMD64__
-#include <HALKit/AMD64/HalPageAlloc.hxx>
-#elif defined(__NEWOS_ARM64__)
-#include <HALKit/ARM64/HalPageAlloc.hxx>
-#endif // ifdef __NEWOS_AMD64__ || defined(__NEWOS_ARM64__)
-
-//! null deref will throw (Page Zero detected, aborting app!)
-#define kProtectedRegionEnd (512)
-
-namespace Kernel
-{
- PTEWrapper::PTEWrapper(Boolean Rw, Boolean User, Boolean ExecDisable, UIntPtr VirtAddr)
- : fRw(Rw),
- fUser(User),
- fExecDisable(ExecDisable),
- fVirtAddr(VirtAddr),
- fCache(false),
- fShareable(false),
- fWt(false),
- fPresent(true),
- fAccessed(false)
- {
- }
-
- PTEWrapper::~PTEWrapper() = default;
-
- /// @brief Flush virtual address.
- /// @param VirtAddr
- Void PageManager::FlushTLB(UIntPtr VirtAddr)
- {
- if (VirtAddr == kBadAddress)
- return;
-
- hal_flush_tlb();
- }
-
- /// @brief Reclaim freed page.
- /// @return
- Bool PTEWrapper::Reclaim()
- {
- if (!this->fPresent)
- {
- this->fPresent = true;
- return true;
- }
-
- return false;
- }
-
- /// @brief Request a PTE.
- /// @param Rw r/w?
- /// @param User user mode?
- /// @param ExecDisable disable execution on page?
- /// @return
- PTEWrapper PageManager::Request(Boolean Rw, Boolean User, Boolean ExecDisable, SizeT Sz)
- {
- kcout << "newoskrnl: Allocating VMH page from PageManager...\r";
-
- // Store PTE wrapper right after PTE.
- VoidPtr ptr = Kernel::HAL::hal_alloc_page(Rw, User, Sz);
-
- if (ptr == kBadAddress)
- {
- kcout << "[create_page_wrapper] kBadAddress returned\n";
- ke_stop(RUNTIME_CHECK_POINTER);
- }
-
- return PTEWrapper{Rw, User, ExecDisable, reinterpret_cast<UIntPtr>(ptr)};
- }
-
- /// @brief Disable PTE.
- /// @param wrapper the wrapper.
- /// @return
- bool PageManager::Free(Ref<PTEWrapper*>& wrapper)
- {
- if (wrapper)
- {
- if (!Detail::page_disable(wrapper->VirtualAddress()))
- return false;
- return true;
- }
-
- return false;
- }
-
- /// @brief Virtual PTE address.
- /// @return The virtual address of the page.
- const UIntPtr PTEWrapper::VirtualAddress()
- {
- return (fVirtAddr);
- }
-
- bool PTEWrapper::Shareable()
- {
- return fShareable;
- }
-
- bool PTEWrapper::Present()
- {
- return fPresent;
- }
-
- bool PTEWrapper::Access()
- {
- return fAccessed;
- }
-
- void PTEWrapper::NoExecute(const bool enable)
- {
- this->fExecDisable = enable;
- }
-
- const bool& PTEWrapper::NoExecute()
- {
- return this->fExecDisable;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Pmm.cxx b/dev/Kernel/Sources/Pmm.cxx
deleted file mode 100644
index 4a511c30..00000000
--- a/dev/Kernel/Sources/Pmm.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/Pmm.hxx>
-
-#if defined(__NEWOS_ARM64__)
-#include <HALKit/ARM64/Processor.hxx>
-#endif // defined(__NEWOS_ARM64__)
-
-#if defined(__NEWOS_AMD64__)
-#include <HALKit/AMD64/Processor.hxx>
-#endif // defined(__NEWOS_AMD64__)
-
-namespace Kernel
-{
- /// @brief Pmm constructor.
- Pmm::Pmm()
- : fPageManager()
- {
- kcout << "[PMM] Allocate PageMemoryManager";
- }
-
- Pmm::~Pmm() = default;
-
- /* If this returns Null pointer, enter emergency mode */
- /// @param user is this a user page?
- /// @param readWrite is it r/w?
- Ref<PTEWrapper> Pmm::RequestPage(Boolean user, Boolean readWrite)
- {
- PTEWrapper pt = fPageManager.Leak().Request(user, readWrite, false, kPTESize);
-
- if (pt.fPresent)
- {
- kcout << "[PMM]: Allocation was successful.\r";
- return Ref<PTEWrapper>(pt);
- }
-
- kcout << "[PMM]: Allocation failed.\r";
-
- return {};
- }
-
- Boolean Pmm::FreePage(Ref<PTEWrapper> PageRef)
- {
- if (!PageRef)
- return false;
-
- PageRef.Leak().fPresent = false;
-
- return true;
- }
-
- Boolean Pmm::TogglePresent(Ref<PTEWrapper> PageRef, Boolean Enable)
- {
- if (!PageRef)
- return false;
-
- PageRef.Leak().fPresent = Enable;
-
- return true;
- }
-
- Boolean Pmm::ToggleUser(Ref<PTEWrapper> PageRef, Boolean Enable)
- {
- if (!PageRef)
- return false;
-
- PageRef.Leak().fRw = Enable;
-
- return true;
- }
-
- Boolean Pmm::ToggleRw(Ref<PTEWrapper> PageRef, Boolean Enable)
- {
- if (!PageRef)
- return false;
-
- PageRef.Leak().fRw = Enable;
-
- return true;
- }
-
- Boolean Pmm::ToggleShare(Ref<PTEWrapper> PageRef, Boolean Enable)
- {
- if (!PageRef)
- return false;
-
- PageRef.Leak().fShareable = Enable;
-
- return true;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/ProcessHeap.cxx b/dev/Kernel/Sources/ProcessHeap.cxx
deleted file mode 100644
index d501f31d..00000000
--- a/dev/Kernel/Sources/ProcessHeap.cxx
+++ /dev/null
@@ -1,277 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/ProcessHeap.hxx>
-#include <NewKit/PageManager.hxx>
-
-#define cHeapHeaderPaddingSz (16U)
-
-/// @file ProcessHeap.cxx
-/// @brief User Heap Manager, Process heap allocator.
-/// @note if you want to look at the kernel allocator, please look for
-/// KernelHeap.cxx
-/// BUGS: 0
-
-namespace Kernel
-{
- /**
- * @brief Process Heap Header
- * @note Allocated per process, it denotes the user's heap.
- */
- struct PROCESS_HEAP_HEADER final
- {
- UInt32 fPageMagic;
- Int32 fPageFlags;
- Boolean fPageFree;
- UIntPtr fPageVirtStart;
- SizeT fPageVirtSize;
- UInt8 fPagePad[cHeapHeaderPaddingSz];
- };
-
- /// @brief PROCESS_HEAP_HEADER as pointer type.
- typedef PROCESS_HEAP_HEADER* PROCESS_HEAP_HEADER_PTR;
-
- /**
- * @brief Process heap class, takes care of allocating the process pools.
- * @note This rely on Virtual Memory! Consider adding good vmem support when
- * @note porting to a new arch.
- */
- class ProcessHeapHelper final
- {
- ProcessHeapHelper() = delete;
-
- public:
- ~ProcessHeapHelper() = default;
-
- public:
- STATIC SizeT& Count() noexcept
- {
- return s_NumPools;
- }
-
- STATIC Ref<Pmm>& Leak() noexcept
- {
- return s_Pmm;
- }
-
- STATIC Boolean& IsEnabled() noexcept
- {
- return s_PoolsAreEnabled;
- }
-
- STATIC MutableArray<Ref<PTEWrapper>>& The() noexcept
- {
- return s_Pool;
- }
-
- private:
- STATIC Size s_NumPools;
- STATIC Ref<Pmm> s_Pmm;
-
- private:
- STATIC Boolean s_PoolsAreEnabled;
- STATIC MutableArray<Ref<PTEWrapper>> s_Pool;
- };
-
- //! declare fields
-
- SizeT ProcessHeapHelper::s_NumPools = 0UL;
- Ref<Pmm> ProcessHeapHelper::s_Pmm;
- Boolean ProcessHeapHelper::s_PoolsAreEnabled = true;
- MutableArray<Ref<PTEWrapper>> ProcessHeapHelper::s_Pool;
-
- STATIC VoidPtr sched_find_unused_heap(Int32 flags, SizeT len);
- STATIC Void sched_free_heap_internal(VoidPtr vaddr);
- STATIC VoidPtr sched_make_heap_internal(VoidPtr vaddr, Int32 flags, SizeT len);
- STATIC Boolean sched_check_and_free_heap(const SizeT& index, VoidPtr ptr);
-
- /// @brief Find an unused heap header to allocate on.
- /// @param flags the flags to use.
- /// @return VoidPtr the heap pointer.
- STATIC VoidPtr sched_find_unused_heap(Int32 flags, SizeT len)
- {
- SizeT index = 0UL;
-
- while (true)
- {
- /* ************************************ */
- /* allocate if it doesnt exist. */
- /* ************************************ */
- if (!ProcessHeapHelper::The()[index])
- {
- ProcessHeapHelper::The().Add(Kernel::Ref<Kernel::PTEWrapper>());
- }
-
- if (ProcessHeapHelper::The()[index] &&
- !ProcessHeapHelper::The()[index].Leak().Leak().Present())
- {
- ProcessHeapHelper::Leak().Leak().TogglePresent(
- ProcessHeapHelper::The()[index].Leak().Leak(), true);
-
- ProcessHeapHelper::Leak().Leak().ToggleUser(
- ProcessHeapHelper::The()[index].Leak().Leak(), true);
-
- kcout << "[sched_find_unused_heap] Done, trying to make a pool now...\r";
-
- return sched_make_heap_internal(
- (VoidPtr)ProcessHeapHelper::The()[index].Leak().Leak().VirtualAddress(),
- flags, len);
- }
-
- ++index;
- }
-
- return nullptr;
- }
-
- /// @brief Makes a new heap for the process to use.
- /// @param virtual_address the virtual address of the process.
- /// @param flags the flags.
- /// @return
- STATIC VoidPtr sched_make_heap_internal(VoidPtr virtual_address, Int32 flags, SizeT len_in_gb)
- {
- if (virtual_address)
- {
- PROCESS_HEAP_HEADER* process_heap_hdr = reinterpret_cast<PROCESS_HEAP_HEADER*>(virtual_address);
-
- if (!process_heap_hdr->fPageFree)
- {
- kcout
- << "[sched_make_heap_internal] process_heap_hdr->fPageFree, HeapPtr already exists\n";
- return nullptr;
- }
-
- process_heap_hdr->fPageFlags = flags;
- process_heap_hdr->fPageMagic = kProcessHeapMag;
- process_heap_hdr->fPageFree = false;
- process_heap_hdr->fPageVirtStart = (UIntPtr)virtual_address + sizeof(PROCESS_HEAP_HEADER);
- process_heap_hdr->fPageVirtSize = len_in_gb;
-
- kcout << "[sched_make_heap_internal] New allocation has been done, returning new chunk.\n";
-
- return reinterpret_cast<VoidPtr>(
- (reinterpret_cast<UIntPtr>(virtual_address) + sizeof(PROCESS_HEAP_HEADER)));
- }
-
- kcout << "[sched_make_heap_internal] Address is invalid";
- return nullptr;
- }
-
- /// @brief Internally makrs the heap as free.
- /// This is done by setting the fPageFree bit to true
- /// @param virtual_address
- /// @return
- STATIC Void sched_free_heap_internal(VoidPtr virtual_address)
- {
- PROCESS_HEAP_HEADER* process_heap_hdr = reinterpret_cast<PROCESS_HEAP_HEADER*>(
- reinterpret_cast<UIntPtr>(virtual_address) - sizeof(PROCESS_HEAP_HEADER));
-
- if (process_heap_hdr->fPageMagic == kProcessHeapMag)
- {
- if (!process_heap_hdr->fPageFree)
- {
- ProcessScheduler::The().Leak().TheCurrent().Leak().Crash();
- return;
- }
-
- process_heap_hdr->fPageFree = true;
- process_heap_hdr->fPageFlags = 0;
-
- kcout << "[sched_free_heap_internal] Successfully marked header as free!\r";
- }
- }
-
- /**
- * @brief Check for the ptr and frees it.
- *
- * @param index Where to look at.
- * @param ptr The ptr to check.
- * @return Boolean true if successful.
- */
- STATIC Boolean sched_check_and_free_heap(const SizeT& index, VoidPtr ptr)
- {
- if (ProcessHeapHelper::The()[index])
- {
- // ErrorOr<>::operator Boolean
- /// if (address matches)
- /// -> Free heap.
- if (ProcessHeapHelper::The()[index].Leak().Leak().VirtualAddress() ==
- (UIntPtr)ptr)
- {
- ProcessHeapHelper::Leak().Leak().FreePage(
- ProcessHeapHelper::The()[index].Leak().Leak());
-
- --ProcessHeapHelper::Count();
-
- sched_free_heap_internal(ptr);
- ptr = nullptr;
-
- return true;
- }
- }
-
- return false;
- }
-
- /// @brief Creates a new pool pointer.
- /// @param flags the flags attached to it.
- /// @return a pool pointer with selected permissions.
- VoidPtr sched_new_heap(Int32 flags, SizeT page_size)
- {
- if (!ProcessHeapHelper::IsEnabled())
- return nullptr;
-
- if (VoidPtr ret = sched_find_unused_heap(flags, page_size))
- return ret;
-
- // this wasn't set to true
- auto ref_page = ProcessHeapHelper::Leak().Leak().RequestPage(
- ((flags & kProcessHeapUser)), (flags & kProcessHeapRw));
-
- if (ref_page)
- {
- ///! reserve page.
- ProcessHeapHelper::The()[ProcessHeapHelper::Count()].Leak() = ref_page;
- auto& ref = ProcessHeapHelper::Count();
-
- ++ref; // increment the number of addresses we have now.
-
- // finally make the pool address.
- return sched_make_heap_internal(
- reinterpret_cast<VoidPtr>(ref_page.Leak().VirtualAddress()), flags, page_size);
- }
-
- return nullptr;
- }
-
- /// @brief free a pool pointer.
- /// @param ptr The pool pointer to free.
- /// @return status code
- Int32 sched_free_heap(VoidPtr ptr)
- {
- if (!ProcessHeapHelper::IsEnabled())
- return -1;
-
- if (ptr)
- {
- SizeT base = ProcessHeapHelper::Count();
-
- if (sched_check_and_free_heap(base, ptr))
- return 0;
-
- for (SizeT index = 0; index < ProcessHeapHelper::The().Count(); ++index)
- {
- if (sched_check_and_free_heap(index, ptr))
- return 0;
-
- --base;
- }
- }
-
- return -1;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/ProcessScheduler.cxx b/dev/Kernel/Sources/ProcessScheduler.cxx
deleted file mode 100644
index 8ca94b60..00000000
--- a/dev/Kernel/Sources/ProcessScheduler.cxx
+++ /dev/null
@@ -1,464 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/***********************************************************************************/
-/// @file ProcessScheduler.cxx
-/// @brief MicroKernel process scheduler.
-/***********************************************************************************/
-
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/PEFSharedObject.hxx>
-#include <KernelKit/MP.hxx>
-#include <KernelKit/Heap.hxx>
-#include <NewKit/String.hxx>
-#include <KernelKit/LPC.hxx>
-
-///! BUGS: 0
-
-/***********************************************************************************/
-/* This file handles the process scheduling. */
-/***********************************************************************************/
-
-namespace Kernel
-{
- /***********************************************************************************/
- /// @brief Exit Code global
- /***********************************************************************************/
-
- STATIC Int32 cLastExitCode = 0U;
-
- /// @brief Gets the last exit code.
- /// @note Not thread-safe.
- /// @return Int32 the last exit code.
- const Int32& sched_get_exit_code(void) noexcept
- {
- return cLastExitCode;
- }
-
- /***********************************************************************************/
- /// @brief crash current process.
- /***********************************************************************************/
-
- void PROCESS_HEADER_BLOCK::Crash()
- {
- kcout << (*this->Name == 0 ? "Kernel" : this->Name) << ": crashed. (id = ";
- kcout << number(kErrorProcessFault);
- kcout << ")\r";
-
- if (Kernel::ProcessScheduler::The().Leak().CurrentTeam().AsArray().Count() < 1)
- {
- kcout << "*** BAD PROCESS ***\rTerminating as we are the only process...\r";
- ke_stop(RUNTIME_CHECK_PROCESS);
- }
-
- this->Exit(kErrorProcessFault);
- }
-
- /// @brief Gets the local last exit code.
- /// @note Not thread-safe.
- /// @return Int32 the last exit code.
- const Int32& PROCESS_HEADER_BLOCK::GetExitCode() noexcept
- {
- return this->fLastExitCode;
- }
-
- Int32& PROCESS_HEADER_BLOCK::GetLocalCode() noexcept
- {
- return fLocalCode;
- }
-
- void PROCESS_HEADER_BLOCK::Wake(const bool should_wakeup)
- {
- this->Status =
- should_wakeup ? ProcessStatus::kRunning : ProcessStatus::kFrozen;
- }
-
- /***********************************************************************************/
-
- VoidPtr PROCESS_HEADER_BLOCK::New(const SizeT& sz)
- {
- if (this->HeapCursor)
- {
- if (this->FreeMemory < 1)
- {
- ErrLocal() = kErrorHeapOutOfMemory;
-
- /* We're going out of memory! crash... */
- this->Crash();
-
- return nullptr;
- }
-
- this->HeapCursor = reinterpret_cast<VoidPtr>((UIntPtr)this->HeapCursor + (sizeof(sz)));
- VoidPtr ptr = this->HeapCursor;
-
- ++this->UsedMemory;
- --this->FreeMemory;
-
- return ptr;
- }
-
- return nullptr;
- }
-
- /***********************************************************************************/
-
- /* @brief checks if runtime pointer is in region. */
- bool rt_is_in_pool(VoidPtr pool_ptr, VoidPtr pool, const SizeT& pool_ptr_cur_sz, const SizeT& pool_ptr_used_sz)
- {
- if (pool == nullptr ||
- pool_ptr == nullptr)
- return false;
-
- UIntPtr* uint_pool_ptr = (UIntPtr*)pool_ptr;
- UIntPtr* uint_pool = (UIntPtr*)pool;
-
- return (UIntPtr)&uint_pool > (UIntPtr)&uint_pool_ptr &&
- pool_ptr_cur_sz > pool_ptr_used_sz;
- }
-
- /* @brief free pointer from usage. */
- Boolean PROCESS_HEADER_BLOCK::Delete(VoidPtr ptr, const SizeT& sz)
- {
- if (sz < 1 || this->HeapCursor == this->HeapPtr)
- return false;
-
- // also check for the amount of allocations we've done so far.
- if (this->UsedMemory < 1)
- return false;
-
- if (rt_is_in_pool(ptr, this->HeapCursor, this->UsedMemory, this->FreeMemory))
- {
- this->HeapCursor = (VoidPtr)((UIntPtr)this->HeapCursor - (sizeof(sz)));
- rt_zero_memory(ptr, sz);
-
- ++this->FreeMemory;
- --this->UsedMemory;
-
- return true;
- }
-
- return false;
- }
-
- /// @brief process name getter.
- const Char* PROCESS_HEADER_BLOCK::GetProcessName() noexcept
- {
- return this->Name;
- }
-
- /// @brief process selector getter.
- const ProcessLevelRing& PROCESS_HEADER_BLOCK::GetLevelRing() noexcept
- {
- return this->Selector;
- }
-
- /// @brief process status getter.
- const ProcessStatus& PROCESS_HEADER_BLOCK::GetStatus() noexcept
- {
- return this->Status;
- }
-
- /***********************************************************************************/
-
- /**
- @brief Affinity is the time slot allowed for the process.
- */
- const AffinityKind& PROCESS_HEADER_BLOCK::GetAffinity() noexcept
- {
- return this->Affinity;
- }
-
- /**
- @brief Standard exit proc.
- */
- void PROCESS_HEADER_BLOCK::Exit(const Int32& exit_code)
- {
- if (this->ProcessId !=
- ProcessScheduler::The().Leak().TheCurrent().Leak().ProcessId)
- ke_stop(RUNTIME_CHECK_PROCESS);
-
- fLastExitCode = exit_code;
- cLastExitCode = exit_code;
-
- //! Delete image if not done already.
- if (this->Image)
- mm_delete_ke_heap(this->Image);
-
- if (this->StackFrame)
- mm_delete_ke_heap((VoidPtr)this->StackFrame);
-
- this->Image = nullptr;
- this->StackFrame = nullptr;
-
- if (this->Kind == kSharedObjectKind)
- {
- bool success = false;
- rtl_fini_shared_object(this, this->DLLPtr, &success);
-
- if (success)
- {
- this->DLLPtr = nullptr;
- }
- }
-
- ProcessScheduler::The().Leak().Remove(this->ProcessId);
- }
-
- /// @brief Add process to list.
- /// @param process
- /// @return
- SizeT ProcessScheduler::Add(Ref<PROCESS_HEADER_BLOCK>& process)
- {
- if (!process.Leak().Image)
- {
- if (process.Leak().Kind != PROCESS_HEADER_BLOCK::kSharedObjectKind)
- {
- return -kErrorNoEntrypoint;
- }
- }
-
- if (mTeam.AsArray().Count() > kSchedProcessLimitPerTeam)
- return -kErrorOutOfTeamSlot;
-
- kcout << "ProcessScheduler:: adding process to team...\r";
-
- // Create heap according to type of process.
- if (process.Leak().Kind == PROCESS_HEADER_BLOCK::kAppKind)
- {
- process.Leak().HeapPtr = sched_new_heap(kProcessHeapUser | kProcessHeapRw, process.Leak().SizeMemory);
- }
- else if (process.Leak().Kind == PROCESS_HEADER_BLOCK::kSharedObjectKind)
- {
- process.Leak().DLLPtr = rtl_init_shared_object(&process.Leak());
- process.Leak().HeapPtr = sched_new_heap(kProcessHeapUser | kProcessHeapRw | kProcessHeapShared, process.Leak().SizeMemory);
- }
- else
- {
- // Something went wrong, do not continue, process may be incorrect.
- process.Leak().Crash();
- return -kErrorProcessFault;
- }
-
- process.Leak().StackFrame = reinterpret_cast<HAL::StackFrame*>(
- mm_new_ke_heap(sizeof(HAL::StackFrame), Yes, Yes));
-
- MUST_PASS(process.Leak().StackFrame);
-
- if (process.Leak().Image)
- {
- process.Leak().StackFrame->BP = reinterpret_cast<HAL::Reg>(process.Leak().Image);
- }
- else
- {
- if (process.Leak().Kind != PROCESS_HEADER_BLOCK::kSharedObjectKind)
- {
- process.Leak().Crash();
- return -kErrorProcessFault;
- }
- }
-
- if (!process.Leak().StackFrame->SP)
- process.Leak().StackFrame->SP = reinterpret_cast<HAL::Reg>(mm_new_ke_heap(sizeof(UInt8) * 8196, Yes, Yes));
-
- process.Leak().Status = ProcessStatus::kStarting;
-
- process.Leak().ProcessId = (mTeam.AsArray().Count() - 1);
- process.Leak().HeapCursor = process.Leak().HeapPtr;
-
- MUST_PASS(mTeam.AsArray().Add(process));
-
- return (mTeam.AsArray().Count() - 1);
- }
-
- /// @brief Remove process from list.
- /// @param processSlot process slot inside team.
- /// @retval true process was removed.
- /// @retval false process doesn't exist in team.
- Bool ProcessScheduler::Remove(SizeT processSlot)
- {
- // check if process is within range.
- if (processSlot > mTeam.AsArray().Count())
- return false;
-
- // also check if the process isn't a dummy one.
- if (mTeam.AsArray()[processSlot].Leak().Leak().Image == nullptr)
- return false;
-
- kcout << "ProcessScheduler: removing process\r";
-
- return mTeam.AsArray().Remove(processSlot);
- }
-
- /// @brief Run scheduler.
- /// @return
- SizeT ProcessScheduler::Run() noexcept
- {
- SizeT process_index = 0; //! we store this guy to tell the scheduler how many
- //! things we have scheduled.
-
- for (; process_index < mTeam.AsArray().Count(); ++process_index)
- {
- auto process = mTeam.AsArray()[process_index];
-
- //! check if process needs to be scheduled.
- if (ProcessHelper::CanBeScheduled(process.Leak()))
- {
- auto unwrapped_process = *process.Leak();
-
- // set the current process.
- mTeam.AsRef() = unwrapped_process;
-
- // tell helper to find a core to schedule on.
- ProcessHelper::Switch(unwrapped_process.StackFrame,
- unwrapped_process.ProcessId);
-
- unwrapped_process.PTime = static_cast<Int32>(unwrapped_process.Affinity);
-
- kcout << unwrapped_process.Name << ": has been switched to process core.\r";
- }
- else
- {
- // otherwise increment the P-time.
- --mTeam.AsRef().Leak().PTime;
- }
- }
-
- return process_index;
- }
-
- /// @brief Gets the current scheduled team.
- /// @return
- ProcessTeam& ProcessScheduler::CurrentTeam()
- {
- return mTeam;
- }
-
- /// @internal
- STATIC Ref<ProcessScheduler> cSchedulerRef;
-
- /// @brief Shared instance of the process scheduler.
- /// @return
- Ref<ProcessScheduler>& ProcessScheduler::The()
- {
- return cSchedulerRef;
- }
-
- /// @brief Gets current running process.
- /// @return
- Ref<PROCESS_HEADER_BLOCK>& ProcessScheduler::TheCurrent()
- {
- return mTeam.AsRef();
- }
-
- /// @brief Current proccess id getter.
- /// @return Process ID integer.
- PID& ProcessHelper::TheCurrentPID()
- {
- kcout << "ProcessHelper::TheCurrentPID: Leaking ProcessId...\r";
- return ProcessScheduler::The().Leak().TheCurrent().Leak().ProcessId;
- }
-
- /// @brief Check if process can be schedulded.
- /// @param process the process reference.
- /// @retval true can be schedulded.
- /// @retval false cannot be schedulded.
- bool ProcessHelper::CanBeScheduled(Ref<PROCESS_HEADER_BLOCK>& process)
- {
- if (process.Leak().Status == ProcessStatus::kFrozen ||
- process.Leak().Status == ProcessStatus::kDead)
- return false;
-
- if (process.Leak().Kind == PROCESS_HEADER_BLOCK::kSharedObjectKind)
- {
- if (auto start = process.Leak().DLLPtr->Load<VoidPtr>(kPefStart, rt_string_len(kPefStart), kPefCode);
- start)
- {
- process.Leak().Image = start;
- process.Leak().StackFrame->BP = reinterpret_cast<HAL::Reg>(start);
- }
- }
-
- if (process.Leak().GetStatus() == ProcessStatus::kStarting)
- {
- if (process.Leak().PTime <= 0)
- {
- process.Leak().Status = ProcessStatus::kRunning;
- process.Leak().Affinity = AffinityKind::kStandard;
-
- return true;
- }
-
- ++process.Leak().PTime;
- }
-
- return process.Leak().PTime > 0;
- }
-
- /**
- * @brief Spin scheduler class.
- */
-
- SizeT ProcessHelper::StartScheduling()
- {
- auto& process_ref = ProcessScheduler::The().Leak();
- SizeT ret = process_ref.Run();
-
- return ret;
- }
-
- /**
- * \brief Does a context switch in a CPU.
- * \param the_stack the stackframe of the running app.
- * \param new_pid the process's PID.
- */
-
- bool ProcessHelper::Switch(HAL::StackFrame* the_stack, const PID& new_pid)
- {
- if (!the_stack || new_pid < 0)
- return false;
-
- for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Leak().Count(); ++index)
- {
- if (HardwareThreadScheduler::The().Leak()[index].Leak()->Kind() == kInvalidHart)
- continue;
-
- if (HardwareThreadScheduler::The().Leak()[index].Leak()->StackFrame() == the_stack)
- {
- HardwareThreadScheduler::The().Leak()[index].Leak()->Busy(false);
- continue;
- }
-
- if (HardwareThreadScheduler::The().Leak()[index].Leak()->IsBusy())
- continue;
-
- if (HardwareThreadScheduler::The().Leak()[index].Leak()->Kind() !=
- ThreadKind::kHartBoot &&
- HardwareThreadScheduler::The().Leak()[index].Leak()->Kind() !=
- ThreadKind::kHartSystemReserved)
- {
- HardwareThreadScheduler::The().Leak()[index].Leak()->Busy(true);
- ProcessHelper::TheCurrentPID() = new_pid;
-
- return HardwareThreadScheduler::The().Leak()[index].Leak()->Switch(the_stack);
- }
- }
-
- return false;
- }
-
- /// @brief this checks if any process is on the team.
- ProcessScheduler::operator bool()
- {
- return mTeam.AsArray().Count() > 0;
- }
-
- /// @brief this checks if no process is on the team.
- bool ProcessScheduler::operator!()
- {
- return mTeam.AsArray().Count() == 0;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/ProcessTeam.cxx b/dev/Kernel/Sources/ProcessTeam.cxx
deleted file mode 100644
index 81307d97..00000000
--- a/dev/Kernel/Sources/ProcessTeam.cxx
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-/***********************************************************************************/
-/// @file ProcessTeam.cxx
-/// @brief Process teams implementation.
-/***********************************************************************************/
-
-#include <KernelKit/ProcessScheduler.hxx>
-
-namespace Kernel
-{
- /// @brief Process list array getter.
- /// @return The list of process to schedule.
- MutableArray<Ref<PROCESS_HEADER_BLOCK>>& ProcessTeam::AsArray()
- {
- return mProcessList;
- }
-
- /// @brief Get team ID.
- /// @return The team's ID.
- UInt64& ProcessTeam::Id() noexcept
- {
- return mTeamId;
- }
-
- /// @brief Current process getter.
- /// @return The current process header.
- Ref<PROCESS_HEADER_BLOCK>& ProcessTeam::AsRef()
- {
- return mCurrentProcess;
- }
-} // namespace Kernel
-
-// last rev 05-03-24
diff --git a/dev/Kernel/Sources/Property.cxx b/dev/Kernel/Sources/Property.cxx
deleted file mode 100644
index 04b4367e..00000000
--- a/dev/Kernel/Sources/Property.cxx
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <CFKit/Property.hxx>
-
-namespace Kernel
-{
- Property::~Property() = default;
-
- bool Property::StringEquals(StringView& name)
- {
- return this->fName && this->fName == name;
- }
-
- StringView& Property::GetKey()
- {
- return this->fName;
- }
-
- PropertyId& Property::GetValue()
- {
- return fAction;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Ref.cxx b/dev/Kernel/Sources/Ref.cxx
deleted file mode 100644
index cf383271..00000000
--- a/dev/Kernel/Sources/Ref.cxx
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Ref.hxx>
diff --git a/dev/Kernel/Sources/Semaphore.cxx b/dev/Kernel/Sources/Semaphore.cxx
deleted file mode 100644
index c159240e..00000000
--- a/dev/Kernel/Sources/Semaphore.cxx
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/Semaphore.hxx>
-
-namespace Kernel
-{
- bool Semaphore::Unlock() noexcept
- {
- if (fLockingProcess)
- fLockingProcess = nullptr;
-
- return fLockingProcess == nullptr;
- }
-
- bool Semaphore::Lock(PROCESS_HEADER_BLOCK* process)
- {
- if (!process || fLockingProcess)
- return false;
-
- fLockingProcess = process;
-
- return true;
- }
-
- bool Semaphore::IsLocked() const
- {
- return fLockingProcess;
- }
-
- bool Semaphore::LockOrWait(PROCESS_HEADER_BLOCK* process, HardwareTimerInterface* timer)
- {
- if (process == nullptr)
- return false;
-
- if (timer == nullptr)
- return false;
-
- this->Lock(process);
-
- timer->Wait();
-
- return this->Lock(process);
- }
-
- /// @brief Wait with process, either wait for process being invalid, or not being run.
- Void Semaphore::WaitForProcess() noexcept
- {
- while (fLockingProcess)
- {
- if (fLockingProcess->GetStatus() != ProcessStatus::kRunning)
- {
- this->Unlock();
- break;
- }
- }
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Storage/AHCIDeviceInterface.cxx b/dev/Kernel/Sources/Storage/AHCIDeviceInterface.cxx
deleted file mode 100644
index dde33193..00000000
--- a/dev/Kernel/Sources/Storage/AHCIDeviceInterface.cxx
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <StorageKit/AHCI.hxx>
-
-using namespace Kernel;
-
-/// @brief Class constructor
-/// @param Out Disk output
-/// @param In Disk input
-/// @param Cleanup Disk cleanup.
-AHCIDeviceInterface::AHCIDeviceInterface(void (*Out)(MountpointInterface* outpacket),
- void (*In)(MountpointInterface* inpacket),
- void (*Cleanup)(void))
- : DeviceInterface(Out, In), fCleanup(Cleanup)
-{
-}
-
-/// @brief Class desctructor
-AHCIDeviceInterface::~AHCIDeviceInterface()
-{
- MUST_PASS(fCleanup);
- if (fCleanup)
- fCleanup();
-}
-
-/// @brief Returns the name of the device interface.
-/// @return it's name as a string.
-const char* AHCIDeviceInterface::Name() const
-{
- return "AHCIDeviceInterface";
-}
diff --git a/dev/Kernel/Sources/Storage/ATADeviceInterface.cxx b/dev/Kernel/Sources/Storage/ATADeviceInterface.cxx
deleted file mode 100644
index 1611e790..00000000
--- a/dev/Kernel/Sources/Storage/ATADeviceInterface.cxx
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <StorageKit/ATA.hxx>
-
-using namespace Kernel;
-
-/// @brief Class constructor
-/// @param Out Disk output
-/// @param In Disk input
-/// @param Cleanup Disk cleanup.
-ATADeviceInterface::ATADeviceInterface(
- void (*Out)(MountpointInterface* outpacket),
- void (*In)(MountpointInterface* inpacket),
- void (*Cleanup)(void))
- : DeviceInterface(Out, In), fCleanup(Cleanup)
-{
-}
-
-/// @brief Class desctructor
-ATADeviceInterface::~ATADeviceInterface()
-{
- MUST_PASS(fCleanup);
- if (fCleanup)
- fCleanup();
-}
-
-/// @brief Returns the name of the device interface.
-/// @return it's name as a string.
-const char* ATADeviceInterface::Name() const
-{
- return "ATADeviceInterface";
-}
-
-/// @brief Output operator.
-/// @param Data
-/// @return
-ATADeviceInterface& ATADeviceInterface::operator<<(MountpointInterface* Data)
-{
- if (!Data)
- return *this;
-
- for (SizeT driveCount = 0; driveCount < kDriveManagerCount; ++driveCount)
- {
- auto interface = Data->GetAddressOf(driveCount);
- if ((interface) && rt_string_cmp((interface)->fDriveKind(), "ATA-", 5) == 0)
- {
- continue;
- }
- else if ((interface) &&
- rt_string_cmp((interface)->fDriveKind(), "ATA-", 5) != 0)
- {
- return *this;
- }
- }
-
- return (ATADeviceInterface&)DeviceInterface<MountpointInterface*>::operator<<(
- Data);
-}
-
-/// @brief Input operator.
-/// @param Data
-/// @return
-ATADeviceInterface& ATADeviceInterface::operator>>(MountpointInterface* Data)
-{
- if (!Data)
- return *this;
-
- for (SizeT driveCount = 0; driveCount < kDriveManagerCount; ++driveCount)
- {
- auto interface = Data->GetAddressOf(driveCount);
- if ((interface) && rt_string_cmp((interface)->fDriveKind(), "ATA-", 5) == 0)
- {
- continue;
- }
- else if ((interface) &&
- rt_string_cmp((interface)->fDriveKind(), "ATA-", 5) != 0)
- {
- return *this;
- }
- }
-
- return (ATADeviceInterface&)DeviceInterface<MountpointInterface*>::operator>>(
- Data);
-}
diff --git a/dev/Kernel/Sources/Storage/NVMEDeviceInterface.cxx b/dev/Kernel/Sources/Storage/NVMEDeviceInterface.cxx
deleted file mode 100644
index 7d07bf4b..00000000
--- a/dev/Kernel/Sources/Storage/NVMEDeviceInterface.cxx
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <StorageKit/NVME.hxx>
-
-namespace Kernel
-{
- NVMEDeviceInterface::NVMEDeviceInterface(void (*Out)(MountpointInterface* outpacket),
- void (*In)(MountpointInterface* inpacket),
- void (*Cleanup)(void))
- : DeviceInterface(Out, In), fCleanup(Cleanup)
- {
- }
-
- NVMEDeviceInterface::~NVMEDeviceInterface()
- {
- if (fCleanup)
- fCleanup();
- }
-
- const char* NVMEDeviceInterface::Name() const
- {
- return ("NVMEDeviceInterface");
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Storage/SCSIDeviceInterface.cxx b/dev/Kernel/Sources/Storage/SCSIDeviceInterface.cxx
deleted file mode 100644
index da75a181..00000000
--- a/dev/Kernel/Sources/Storage/SCSIDeviceInterface.cxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <StorageKit/SCSI.hxx>
-
-///! @brief ATAPI SCSI packet.
-const scsi_packet_type kCDRomPacketTemplate = {0x43, 0, 1, 0, 0, 0,
- 0, 12, 0x40, 0, 0};
diff --git a/dev/Kernel/Sources/Stream.cxx b/dev/Kernel/Sources/Stream.cxx
deleted file mode 100644
index 3a809a8d..00000000
--- a/dev/Kernel/Sources/Stream.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
- File: Stream.cxx
- Purpose: Stream object
-
- Revision History:
-
-------------------------------------------- */
-
-#include <NewKit/Stream.hxx>
diff --git a/dev/Kernel/Sources/String.cxx b/dev/Kernel/Sources/String.cxx
deleted file mode 100644
index 8ea7d65f..00000000
--- a/dev/Kernel/Sources/String.cxx
+++ /dev/null
@@ -1,246 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/String.hxx>
-#include <NewKit/Utils.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-namespace Kernel
-{
- Char* StringView::Data()
- {
- return fData;
- }
-
- const Char* StringView::CData() const
- {
- return fData;
- }
-
- Size StringView::Length() const
- {
- return fSz;
- }
-
- bool StringView::operator==(const StringView& rhs) const
- {
- if (rhs.Length() != this->Length())
- return false;
-
- for (Size index = 0; index < this->Length(); ++index)
- {
- if (rhs.fData[index] != fData[index])
- return false;
- }
-
- return true;
- }
-
- bool StringView::operator==(const Char* rhs) const
- {
- if (rt_string_len(rhs) != this->Length())
- return false;
-
- for (Size index = 0; index < rt_string_len(rhs); ++index)
- {
- if (rhs[index] != fData[index])
- return false;
- }
-
- return true;
- }
-
- bool StringView::operator!=(const StringView& rhs) const
- {
- if (rhs.Length() != this->Length())
- return false;
-
- for (Size index = 0; index < rhs.Length(); ++index)
- {
- if (rhs.fData[index] == fData[index])
- return false;
- }
-
- return true;
- }
-
- bool StringView::operator!=(const Char* rhs) const
- {
- if (rt_string_len(rhs) != this->Length())
- return false;
-
- for (Size index = 0; index < rt_string_len(rhs); ++index)
- {
- if (rhs[index] == fData[index])
- return false;
- }
-
- return true;
- }
-
- ErrorOr<StringView> StringBuilder::Construct(const Char* data)
- {
- if (!data || *data == 0)
- return {};
-
- StringView view(rt_string_len(data));
-
- view += data;
-
- return ErrorOr<StringView>(view);
- }
-
- const char* StringBuilder::FromInt(const char* fmt, int i)
- {
- if (!fmt)
- return ("-1");
-
- char* ret = (char*)ALLOCA(sizeof(char) * 8 + rt_string_len(fmt));
-
- if (!ret)
- return ("-1");
-
- Char result[8];
-
- if (!rt_to_string(result, sizeof(int), i))
- {
- return ("-1");
- }
-
- const auto fmt_len = rt_string_len(fmt);
- const auto res_len = rt_string_len(result);
-
- for (Size idx = 0; idx < fmt_len; ++idx)
- {
- if (fmt[idx] == '%')
- {
- SizeT result_cnt = idx;
-
- for (auto y_idx = idx; y_idx < res_len; ++y_idx)
- {
- ret[result_cnt] = result[y_idx];
- ++result_cnt;
- }
-
- break;
- }
-
- ret[idx] = fmt[idx];
- }
-
- return ret; /* Copy that ret into a buffer, 'ALLOCA' allocates to the stack */
- }
-
- const char* StringBuilder::FromBool(const char* fmt, bool i)
- {
- if (!fmt)
- return ("?");
-
- const char* boolean_expr = i ? "true" : "false";
- char* ret = (char*)ALLOCA((sizeof(char) * i) ? 4 : 5 + rt_string_len(fmt));
-
- if (!ret)
- return ("?");
-
- const auto fmt_len = rt_string_len(fmt);
- const auto res_len = rt_string_len(boolean_expr);
-
- for (Size idx = 0; idx < fmt_len; ++idx)
- {
- if (fmt[idx] == '%')
- {
- SizeT result_cnt = idx;
-
- for (auto y_idx = idx; y_idx < res_len; ++y_idx)
- {
- ret[result_cnt] = boolean_expr[y_idx];
- ++result_cnt;
- }
-
- break;
- }
-
- ret[idx] = fmt[idx];
- }
-
- return ret;
- }
-
- bool StringBuilder::Equals(const char* lhs, const char* rhs)
- {
- if (rt_string_len(rhs) != rt_string_len(lhs))
- return false;
-
- for (Size index = 0; index < rt_string_len(rhs); ++index)
- {
- if (rhs[index] != lhs[index])
- return false;
- }
-
- return true;
- }
-
- const char* StringBuilder::Format(const char* fmt, const char* fmt2)
- {
- if (!fmt || !fmt2)
- return ("?");
-
- char* ret =
- (char*)ALLOCA(sizeof(char) * rt_string_len(fmt2) + rt_string_len(fmt2));
-
- if (!ret)
- return ("?");
-
- for (Size idx = 0; idx < rt_string_len(fmt); ++idx)
- {
- if (fmt[idx] == '%')
- {
- Size result_cnt = idx;
- for (Size y_idx = 0; y_idx < rt_string_len(fmt2); ++y_idx)
- {
- ret[result_cnt] = fmt2[y_idx];
- ++result_cnt;
- }
-
- break;
- }
-
- ret[idx] = fmt[idx];
- }
-
- return ret;
- }
-
- STATIC void rt_string_append(Char* lhs, const Char* rhs, Int32 cur)
- {
- SizeT sz_rhs = rt_string_len(rhs);
- SizeT rhs_i = 0;
-
- for (; rhs_i < sz_rhs; ++rhs_i)
- {
- lhs[rhs_i + cur] = rhs[rhs_i];
- }
- }
-
- StringView& StringView::operator+=(const Char* rhs)
- {
- rt_string_append(this->fData, rhs, this->fCur);
- this->fCur += rt_string_len(rhs);
-
- return *this;
- }
-
- StringView& StringView::operator+=(const StringView& rhs)
- {
- if (rt_string_len(rhs.fData) > this->Length())
- return *this;
-
- rt_string_append(this->fData, const_cast<Char*>(rhs.fData), this->fCur);
- this->fCur += rt_string_len(const_cast<Char*>(rhs.fData));
-
- return *this;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/ThreadLocalStorage.cxx b/dev/Kernel/Sources/ThreadLocalStorage.cxx
deleted file mode 100644
index f258fa11..00000000
--- a/dev/Kernel/Sources/ThreadLocalStorage.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * ========================================================
- *
- * Kernel
- * Copyright ZKA Technologies., all rights reserved.
- *
- * ========================================================
- */
-
-#include <NewKit/String.hxx>
-#include <CFKit/Property.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/ThreadLocalStorage.hxx>
-
-///! BUGS: 0
-
-/***********************************************************************************/
-/// @file ThreadLocalStorage.cxx
-/// @brief TLS inside the kernel.
-/***********************************************************************************/
-
-using namespace Kernel;
-
-Kernel::Property cTLSEnforceCheck;
-
-/**
- * @brief Checks for cookie inside the TIB.
- * @param tib the TIB to check.
- * @return if the cookie is enabled.
- */
-
-Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* the_tib)
-{
- if (!the_tib)
- return false;
-
- Encoder encoder;
- const char* tibAsBytes = encoder.AsBytes(the_tib);
-
- kcout << "newoskrnl: checking for a valid cookie inside the TIB...\r";
-
- return tibAsBytes[0] == kCookieMag0 && tibAsBytes[1] == kCookieMag1 &&
- tibAsBytes[2] == kCookieMag2;
-}
-
-/**
- * @brief System call implementation of the TLS check.
- * @param stackPtr The call frame.
- * @return
- */
-EXTERN_C Bool tls_check_syscall_impl(Kernel::VoidPtr tib_ptr) noexcept
-{
- if (!tib_ptr)
- {
- if (cTLSEnforceCheck.GetValue() == No)
- {
- return true;
- }
- else
- {
- kcout << "newoskrnl: failing because of an invalid TIB...\r";
- return false;
- }
- }
-
- THREAD_INFORMATION_BLOCK* tib_struct = (THREAD_INFORMATION_BLOCK*)tib_ptr;
-
- if (!tls_check_tib(tib_struct))
- {
- kcout << "newoskrnl: crashing because of an invalid TIB...\r";
- return false;
- }
-
- kcout << "newoskrnl: Verification succeeded! staying alive...\r";
- return true;
-}
diff --git a/dev/Kernel/Sources/ThreadScheduler.cxx b/dev/Kernel/Sources/ThreadScheduler.cxx
deleted file mode 100644
index fb822a68..00000000
--- a/dev/Kernel/Sources/ThreadScheduler.cxx
+++ /dev/null
@@ -1,8 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/ProcessScheduler.hxx>
-#include <KernelKit/MP.hxx> \ No newline at end of file
diff --git a/dev/Kernel/Sources/Timer.cxx b/dev/Kernel/Sources/Timer.cxx
deleted file mode 100644
index 041c4b67..00000000
--- a/dev/Kernel/Sources/Timer.cxx
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <KernelKit/Timer.hxx>
-
-///! BUGS: 0
-///! @file Timer.cxx
-
-using namespace Kernel;
-
-/// @brief Unimplemented as it is an interface.
-Int32 HardwareTimerInterface::Wait() noexcept
-{
- return kErrorUnimplemented;
-}
-
-/// @brief HardwareTimer class, meant to be generic.
-
-HardwareTimer::HardwareTimer(Int64 seconds)
- : fWaitFor(seconds)
-{
- MUST_PASS(fWaitFor > 0);
-}
-
-HardwareTimer::~HardwareTimer()
-{
- fWaitFor = 0;
-}
-
-Int32 HardwareTimer::Wait() noexcept
-{
- if (fWaitFor < 1)
- return -1;
-
- while (*fDigitalTimer < (*fDigitalTimer + fWaitFor))
- {
- ;
- }
-
- return 0;
-}
diff --git a/dev/Kernel/Sources/URL.cxx b/dev/Kernel/Sources/URL.cxx
deleted file mode 100644
index 189aba8e..00000000
--- a/dev/Kernel/Sources/URL.cxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <CFKit/URL.hxx>
-#include <KernelKit/DebugOutput.hxx>
-#include <NewKit/Utils.hxx>
-
-/// BUGS: 0
-
-namespace Kernel
-{
- URL::URL(StringView& strUrl)
- : fUrlView(strUrl, false)
- {
- }
-
- URL::~URL() = default;
-
- /// @brief internal and reserved protocols by kernel.
- constexpr const Char* kURLProtocols[] = {
- "file", // Filesystem protocol
- "zup", // ZKA update protocol
- "oscc", // Open System Configuration Connectivity.
- "odbc", // ODBC connectivity.
- "https", // HTTPS layer driver (HTTPS.sys).
- };
-
- constexpr const int kUrlOutSz = 1; //! such as: ://
- constexpr const int kProtosCount = 5;
- constexpr const int kRangeSz = 4096;
-
- ErrorOr<StringView> url_extract_location(const Char* url)
- {
- if (!url || *url == 0 || rt_string_len(url, kRangeSz) > kRangeSz)
- return ErrorOr<StringView>{-1};
-
- StringView view(rt_string_len(url));
-
- SizeT i = 0;
- bool scheme_found = false;
-
- for (; i < rt_string_len(url); ++i)
- {
- if (!scheme_found)
- {
- for (int y = 0; kProtosCount; ++y)
- {
- if (rt_string_in_string(view.CData(), kURLProtocols[y]))
- {
- i += rt_string_len(kURLProtocols[y]) + kUrlOutSz;
- scheme_found = true;
-
- break;
- }
- }
- }
-
- view.Data()[i] = url[i];
- }
-
- return ErrorOr<StringView>(view);
- }
-
- ErrorOr<StringView> url_extract_protocol(const Char* url)
- {
- if (!url || *url == 0 || rt_string_len(url, kRangeSz) > kRangeSz)
- return ErrorOr<StringView>{-1};
-
- ErrorOr<StringView> view{-1};
-
- return view;
- }
-
- Ref<ErrorOr<StringView>> URL::Location() noexcept
- {
- const Char* src = fUrlView.Leak().CData();
- auto loc = url_extract_location(src);
-
- if (!loc)
- return {};
-
- return Ref<ErrorOr<StringView>>(loc);
- }
-
- Ref<ErrorOr<StringView>> URL::Protocol() noexcept
- {
- const Char* src = fUrlView.Leak().CData();
- auto loc = url_extract_protocol(src);
-
- if (!loc)
- return {};
-
- return Ref<ErrorOr<StringView>>(loc);
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/User.cxx b/dev/Kernel/Sources/User.cxx
deleted file mode 100644
index 4109864a..00000000
--- a/dev/Kernel/Sources/User.cxx
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * ========================================================
- *
- * Kernel
- * Copyright ZKA Technologies., all rights reserved.
- *
- * File: User.cxx
- * Purpose: User concept and management.
- *
- * ========================================================
- */
-
-#include <KernelKit/User.hxx>
-#include <NewKit/KernelCheck.hxx>
-#include <KernelKit/FileManager.hxx>
-#include <KernelKit/ProcessScheduler.hxx>
-
-#include <KernelKit/Heap.hxx>
-
-#define cStdUser (0xCF)
-#define cSuperUser (0xEF)
-
-/// BUGS: 0
-
-namespace Kernel
-{
- namespace Detail
- {
- /// \brief Constructs a token by hashing the password.
- /// \param password password to hash.
- /// \return the hashed password
- const Int32 cred_construct_token(Char* password, User* user)
- {
- if (!password || !user)
- return -1;
-
- for (Size i_pass = 0; i_pass < rt_string_len(password); ++i_pass)
- {
- Char cur_chr = password[i_pass];
- password[i_pass] = cur_chr + (user->IsStdUser() ? cStdUser : cSuperUser);
- }
-
- return 0;
- }
- } // namespace Detail
-
- User::User(const Int32& sel, const Char* userName)
- : fRing((RingKind)sel)
- {
- MUST_PASS(sel >= 0);
- this->fUserName += userName;
- }
-
- User::User(const RingKind& ringKind, const Char* userName)
- : fRing(ringKind)
- {
- this->fUserName += userName;
- }
-
- User::~User() = default;
-
- Bool User::TrySave(const Char* password) noexcept
- {
- kcout << "Trying to save password...\r";
-
- SizeT len = rt_string_len(password);
-
- Char* token = new Char[len];
-
- MUST_PASS(token);
-
- rt_copy_memory((VoidPtr)password, token, rt_string_len(password));
-
- Detail::cred_construct_token(token, this);
-
- if (NewFilesystemManager::GetMounted())
- {
- auto node = NewFilesystemManager::GetMounted()->Create(kUsersFile);
-
- if (node)
- {
- NewFilesystemManager::GetMounted()->Write(this->fUserName.CData(), node, (VoidPtr)token, (this->IsStdUser() ? cStdUser : cSuperUser) | kNewFSCatalogKindMetaFile, len);
- delete node;
- }
-
- delete token;
- return true;
- }
-
- delete token;
- return false;
- }
-
- bool User::operator==(const User& lhs)
- {
- return lhs.fRing == this->fRing;
- }
-
- bool User::operator!=(const User& lhs)
- {
- return lhs.fRing != this->fRing;
- }
-
- StringView& User::Name() noexcept
- {
- return this->fUserName;
- }
-
- const RingKind& User::Ring() noexcept
- {
- return this->fRing;
- }
-
- Bool User::IsStdUser() noexcept
- {
- return this->Ring() == RingKind::kRingStdUser;
- }
-
- Bool User::IsSuperUser() noexcept
- {
- return this->Ring() == RingKind::kRingSuperUser;
- }
-
- UserManager* UserManager::The() noexcept
- {
- UserManager* view = nullptr;
-
- if (!view)
- view = new UserManager();
-
- return view;
- }
-
- Bool UserManager::TryLogIn(User* user, const Char* password) noexcept
- {
- if (!password ||
- !user)
- {
- ErrLocal() = kErrorInvalidData;
-
- kcout << "newoskrnl: Incorrect data given.\r";
-
- return false;
- }
-
- kcout << "newoskrnl: Trying to log-in.\r";
-
- FileStreamUTF8 file(kUsersFile, "rb");
-
- // ------------------------------------------ //
- // Retrieve token from a specific file fork.
- // ------------------------------------------ //
-
- auto token = file.Read(user->fUserName.CData());
-
- if (!token)
- {
- ErrLocal() = kErrorInvalidCreds;
-
- kcout << "newoskrnl: Incorrect credentials.\r";
- return false;
- }
- else
- {
- Char generated_token[255] = {0};
-
- // ================================================== //
- // Provide password on token variable.
- // ================================================== //
-
- rt_copy_memory((VoidPtr)password, generated_token, rt_string_len(password));
-
- // ================================================== //
- // Construct token.
- // ================================================== //
-
- Detail::cred_construct_token(generated_token, user);
-
- // ================================================== //
- // Checks if it matches the current token we have.
- // ================================================== //
-
- if (rt_string_cmp((Char*)token, generated_token, rt_string_len(password)))
- {
- kcout << "newoskrnl: Incorrect credentials.\r";
-
- mm_delete_ke_heap(token);
- return false;
- }
-
- kcout << "newoskrnl: Credentials are correct, moving on.\r";
- }
-
- // ------------------------------------------ //
- // This was successful, continue.
- // ------------------------------------------ //
-
- user->fUserToken = token;
-
- if (fCurrentUser)
- {
- if (!fLastLoggedOffUser)
- {
- fLastLoggedOffUser = fCurrentUser;
- }
- else
- {
- this->TryLogOff();
- }
- }
-
- fCurrentUser = user;
- Kernel::kcout << "newoskrnl: Logged in as: " << fCurrentUser->Name().CData() << Kernel::endl;
-
- return true;
- }
-
- User* UserManager::GetCurrent() noexcept
- {
- return fCurrentUser;
- }
-
- Void UserManager::TryLogOff() noexcept
- {
- if (!fCurrentUser)
- return;
-
- // an illegal operation just occured, we can't risk more.
- if (fCurrentUser == fRootUser)
- {
- ke_stop(RUNTIME_CHECK_BOOTSTRAP);
- }
-
- if (fLastLoggedOffUser)
- delete fLastLoggedOffUser;
-
- fLastLoggedOffUser = nullptr;
- fLastLoggedOffUser = fCurrentUser;
- }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/Utils.cxx b/dev/Kernel/Sources/Utils.cxx
deleted file mode 100644
index 5673c5fd..00000000
--- a/dev/Kernel/Sources/Utils.cxx
+++ /dev/null
@@ -1,257 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Utils.hxx>
-#include <KernelKit/DebugOutput.hxx>
-
-namespace Kernel
-{
- Int rt_string_cmp(const Char* src, const Char* cmp, Size size)
- {
- if (!cmp ||
- !src)
- return 1;
-
- Int32 counter = 0;
-
- for (Size index = 0; index < size; ++index)
- {
- if (src[index] != cmp[index])
- ++counter;
- }
-
- return counter;
- }
-
- void rt_zero_memory(voidPtr pointer, Size len)
- {
- rt_set_memory(pointer, 0, len);
- }
-
- Size rt_string_len(const Char* str, SizeT _len)
- {
- Size len{0};
- while (str[len] != '\0')
- {
- if (len > _len)
- {
- return 0;
- }
-
- len++;
- }
-
- return len;
- }
-
- Size rt_string_len(const Char* ptr)
- {
- if (*ptr == 0)
- return 0;
-
- SizeT cnt = 0;
-
- while (ptr[cnt] != (Char)0)
- {
- cnt++;
- }
-
- return cnt;
- }
-
- voidPtr rt_set_memory(voidPtr src, char value, Size len)
- {
- if (!src || len < 1)
- return nullptr;
-
- char* start = reinterpret_cast<Char*>(src);
-
- while (len)
- {
- *start = value;
- ++start;
- --len;
- }
-
- return (voidPtr)start;
- }
-
- Int rt_move_memory(const voidPtr src, voidPtr dst, Size len)
- {
- if (len < 1)
- return -2;
- if (!src || !dst)
- return -1;
-
- char* srcChr = reinterpret_cast<Char*>(src);
- char* dstChar = reinterpret_cast<Char*>(dst);
- Size index = 0;
-
- while (index < len)
- {
- dstChar[index] = srcChr[index];
- srcChr[index] = 0;
-
- ++index;
- }
-
- return 0;
- }
-
- Int rt_copy_memory(const voidPtr src, voidPtr dst, Size len)
- {
- if (len < 1)
- return -2;
-
- char* srcChr = reinterpret_cast<char*>(src);
- char* dstChar = reinterpret_cast<char*>(dst);
- Size index = 0;
-
- while (index < len)
- {
- dstChar[index] = srcChr[index];
- ++index;
- }
-
- return index;
- }
-
- const Char* alloc_string(const Char* text)
- {
- if (!text)
- return nullptr;
-
- const Char* string = new Char[rt_string_len(text)];
- if (!string)
- return nullptr;
-
- voidPtr vText = reinterpret_cast<voidPtr>(const_cast<char*>(text));
- voidPtr vStr = reinterpret_cast<voidPtr>(const_cast<char*>(string));
- rt_copy_memory(vText, vStr, rt_string_len(text));
-
- return string;
- }
-
- Int rt_to_uppercase(Int character)
- {
- if (character >= 'a' && character <= 'z')
- return character - 0x20;
-
- return character;
- }
-
- Int rt_to_lower(Int character)
- {
- if (character >= 'A' && character <= 'Z')
- return character + 0x20;
-
- return character;
- }
-
- bool rt_to_string(Char* str, Int limit, Int base)
- {
- if (limit == 0)
- return false;
-
- Int copy_limit = limit;
- Int cnt = 0;
- Int ret = base;
-
- while (limit != 1)
- {
- ret = ret % 10;
- str[cnt] = ret;
-
- ++cnt;
- --limit;
- --ret;
- }
-
- str[copy_limit] = '\0';
- return true;
- }
-
- Boolean is_space(Char chr)
- {
- return chr == ' ';
- }
-
- Boolean is_newln(Char chr)
- {
- return chr == '\n';
- }
-
- voidPtr rt_string_in_string(const char* in, const char* needle)
- {
- for (SizeT i = 0; i < rt_string_len(in); ++i)
- {
- if (rt_string_cmp(in + i, needle, rt_string_len(needle)) == 0)
- return reinterpret_cast<voidPtr>(const_cast<char*>(in + i));
- }
-
- return nullptr;
- }
-
- // @brief Checks for a string start at the character.
-
- char* rt_string_has_char(char* str, const char chr)
- {
- while (*str != chr)
- {
- ++str;
-
- if (*str == 0)
- return nullptr;
- }
-
- return str;
- }
-} // namespace Kernel
-
-#ifdef __FREESTANDING__
-
-////////////////////////////////////////////////////////////////////////////////////////
-/// Exported C functions
-////////////////////////////////////////////////////////////////////////////////////////
-
-/// @brief memset in C++
-EXTERN_C void memset(void* dst, char src, Kernel::SizeT len)
-{
- Kernel::rt_set_memory(dst, src, len);
-}
-
-/// @brief memcpy in C++
-EXTERN_C void memcpy(void* dst, void* src, Kernel::SizeT len)
-{
- Kernel::rt_copy_memory(src, dst, len);
-}
-
-/// @brief memmove in C++
-EXTERN_C void* memmove(void* dst, void* src, Kernel::SizeT len)
-{
- Kernel::rt_copy_memory(src, dst, len);
- return dst;
-}
-
-/// @brief strlen definition in C++.
-EXTERN_C Kernel::SizeT strlen(const char* whatToCheck)
-{
- return Kernel::rt_string_len(whatToCheck);
-}
-
-/// @brief memcmp in C++
-EXTERN_C Kernel::SizeT memcmp(void* dst, void* src, Kernel::SizeT len)
-{
- return Kernel::rt_string_cmp((char*)src, (char*)dst, len);
-}
-
-/// @brief strcmp in C++
-EXTERN_C Kernel::SizeT strcmp(char* dst, char* src, Kernel::SizeT len)
-{
- return Kernel::rt_string_cmp(src, dst, len);
-}
-
-#endif // __FREESTANDING__ \ No newline at end of file
diff --git a/dev/Kernel/Sources/Variant.cxx b/dev/Kernel/Sources/Variant.cxx
deleted file mode 100644
index 97775900..00000000
--- a/dev/Kernel/Sources/Variant.cxx
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <NewKit/Variant.hxx>
-
-namespace Kernel
-{
- const Char* Variant::ToString()
- {
- switch (fKind)
- {
- case VariantKind::kJson:
- return ("Class:{Json}");
- case VariantKind::kString:
- return ("Class:{String}");
- case VariantKind::kBlob:
- return ("Class:{Blob}");
- default:
- return ("Class:{Null}");
- }
- }
-
- /// @brief Leak variant's instance.
- VoidPtr Variant::Leak() { return fPtr; }
-} // namespace Kernel
diff --git a/dev/Kernel/Sources/compile_flags.txt b/dev/Kernel/Sources/compile_flags.txt
deleted file mode 100644
index b02c5e3d..00000000
--- a/dev/Kernel/Sources/compile_flags.txt
+++ /dev/null
@@ -1,7 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I../
--I$(HOME)/
--D__FSKIT_USE_NEWFS__
--D__NEWOS_AMD64__
diff --git a/dev/Kernel/StorageKit/AHCI.hxx b/dev/Kernel/StorageKit/AHCI.hxx
deleted file mode 100644
index 81d0c5bf..00000000
--- a/dev/Kernel/StorageKit/AHCI.hxx
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/DeviceManager.hxx>
-#include <KernelKit/DriveManager.hxx>
-#include <NewKit/OwnPtr.hxx>
-
-namespace Kernel
-{
- class AHCIDeviceInterface : public DeviceInterface<MountpointInterface*>
- {
- public:
- explicit AHCIDeviceInterface(void (*Out)(MountpointInterface* outpacket),
- void (*In)(MountpointInterface* inpacket),
- void (*Cleanup)(void));
-
- virtual ~AHCIDeviceInterface();
-
- public:
- AHCIDeviceInterface& operator=(const AHCIDeviceInterface&) = default;
- AHCIDeviceInterface(const AHCIDeviceInterface&) = default;
-
- const char* Name() const override;
-
- private:
- void (*fCleanup)(void) = {nullptr};
- };
-} // namespace Kernel
diff --git a/dev/Kernel/StorageKit/ATA.hxx b/dev/Kernel/StorageKit/ATA.hxx
deleted file mode 100644
index 23437ca8..00000000
--- a/dev/Kernel/StorageKit/ATA.hxx
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/DeviceManager.hxx>
-#include <KernelKit/DriveManager.hxx>
-#include <NewKit/OwnPtr.hxx>
-#include <NewKit/Utils.hxx>
-
-namespace Kernel
-{
- /// @brief ATA device interface type.
- class ATADeviceInterface : public DeviceInterface<MountpointInterface*>
- {
- public:
- explicit ATADeviceInterface(void (*Out)(MountpointInterface* outpacket),
- void (*In)(MountpointInterface* inpacket),
- void (*Cleanup)(void));
-
- virtual ~ATADeviceInterface();
-
- public:
- ATADeviceInterface& operator<<(MountpointInterface* Data) override;
- ATADeviceInterface& operator>>(MountpointInterface* Data) override;
-
- public:
- ATADeviceInterface& operator=(const ATADeviceInterface&) = default;
- ATADeviceInterface(const ATADeviceInterface&) = default;
-
- const char* Name() const override;
-
- private:
- void (*fCleanup)(void) = { nullptr };
- };
-} // namespace Kernel
diff --git a/dev/Kernel/StorageKit/NVME.hxx b/dev/Kernel/StorageKit/NVME.hxx
deleted file mode 100644
index 9d42ce9d..00000000
--- a/dev/Kernel/StorageKit/NVME.hxx
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/DeviceManager.hxx>
-#include <KernelKit/DriveManager.hxx>
-#include <NewKit/OwnPtr.hxx>
-
-namespace Kernel
-{
- class NVMEDeviceInterface final : public DeviceInterface<MountpointInterface*>
- {
- public:
- explicit NVMEDeviceInterface(void (*Out)(MountpointInterface* outpacket),
- void (*In)(MountpointInterface* inpacket),
- void (*Cleanup)(void));
-
- ~NVMEDeviceInterface() override;
-
- public:
- NVMEDeviceInterface& operator=(const NVMEDeviceInterface&) = default;
- NVMEDeviceInterface(const NVMEDeviceInterface&) = default;
-
- const char* Name() const override;
-
- public:
- OwnPtr<MountpointInterface*> operator()(UInt32 dmaLow, UInt32 dmaHigh, SizeT sz);
-
- private:
- void (*fCleanup)(void) = {nullptr};
- };
-} // namespace Kernel
diff --git a/dev/Kernel/StorageKit/PRDT.hxx b/dev/Kernel/StorageKit/PRDT.hxx
deleted file mode 100644
index 6dec22c2..00000000
--- a/dev/Kernel/StorageKit/PRDT.hxx
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <KernelKit/PCI/Dma.hxx>
-#include <KernelKit/PCI/Iterator.hxx>
-#include <NewKit/Ref.hxx>
-
-#define kPrdtTransferSize (sizeof(Kernel::UShort))
-
-namespace Kernel
-{
- /// @brief Tranfer information about PRD.
- enum kPRDTTransfer
- {
- kPRDTTransferInProgress,
- kPRDTTransferIsDone,
- kPRDTTransferCount,
- };
-
- /// @brief Physical Region Descriptor Table.
- struct PRDT
- {
- UInt32 fPhysAddress;
- UInt32 fSectorCount;
- UInt8 fEndBit;
- };
-
- void construct_prdt(Ref<PRDT>& prd);
-
- EXTERN_C Int32 kPRDTTransferStatus;
-} // namespace Kernel
diff --git a/dev/Kernel/StorageKit/SCSI.hxx b/dev/Kernel/StorageKit/SCSI.hxx
deleted file mode 100644
index 5a684052..00000000
--- a/dev/Kernel/StorageKit/SCSI.hxx
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <Modules/SCSI/SCSI.hxx>
-
-extern const scsi_packet_type kCDRomPacketTemplate;
diff --git a/dev/Kernel/StorageKit/Storage.hxx b/dev/Kernel/StorageKit/Storage.hxx
deleted file mode 100644
index a9e0f8e4..00000000
--- a/dev/Kernel/StorageKit/Storage.hxx
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#define kDriveSectorSizeHDD (512)
-#define kDriveSectorSizeSSD (4096)
-#define kDriveSectorSizeOptical (2048)
-
-namespace Kernel
-{
- template <typename T>
- class DeviceInterface;
-
- class NVMEDeviceInterface;
- class AHCIDeviceInterface;
- class ATADeviceInterface;
- class SCSIDeviceInterface;
-} // namespace Kernel
diff --git a/dev/Kernel/amd64-efi.make b/dev/Kernel/amd64-efi.make
deleted file mode 100644
index 55517b2f..00000000
--- a/dev/Kernel/amd64-efi.make
+++ /dev/null
@@ -1,85 +0,0 @@
-##################################################
-# (C) ZKA Technologies, all rights reserved.
-# This is the newoskrnl's makefile.
-##################################################
-
-CC = x86_64-w64-mingw32-g++
-LD = x86_64-w64-mingw32-ld
-CCFLAGS = -fshort-wchar -c -shared -D__NEWOS_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions \
- -std=c++20 -D__NEWOS_SUPPORT_NX__ -I../Vendor -D__FSKIT_USE_NEWFS__ \
- -D__NEWOSKRNL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I./ -I../ -I../Boot
-
-ASM = nasm
-
-DISKDRIVER =
-
-ifneq ($(ATA_PIO_SUPPORT), )
-DISKDRIVER = -D__ATA_PIO__
-endif
-
-ifneq ($(ATA_DMA_SUPPORT), )
-DISKDRIVER = -D__ATA_DMA__
-endif
-
-ifneq ($(AHCI_SUPPORT), )
-DISKDRIVER = -D__AHCI__
-endif
-
-ifneq ($(DEBUG_SUPPORT), )
-DEBUG = -D__DEBUG__
-endif
-
-COPY = cp
-
-# Add assembler, linker, and object files variables.
-ASMFLAGS = -f win64
-
-# Kernel subsystem is 17 and entrypoint is __ImageStart
-LDFLAGS = -e hal_init_platform --subsystem=17 --image-base 0x10000000
-LDOBJ = Objects/*.obj
-
-# This file is the kernel, responsible of task management and memory.
-KERNEL = newoskrnl.dll
-
-.PHONY: error
-error:
- @echo "=== ERROR ==="
- @echo "=> Use a specific target."
-
-MOVEALL=./MoveAll.X64.sh
-WINDRES=x86_64-w64-mingw32-windres
-
-.PHONY: newos-amd64-epm
-newos-amd64-epm: clean
- $(WINDRES) KernelRsrc.rsrc -O coff -o KernelRsrc.obj
- $(CC) $(CCFLAGS) $(DISKDRIVER) $(DEBUG) $(wildcard Sources/*.cxx) \
- $(wildcard Sources/FS/*.cxx) $(wildcard HALKit/AMD64/Storage/*.cxx) \
- $(wildcard HALKit/AMD64/PCI/*.cxx) $(wildcard Sources/Network/*.cxx) $(wildcard Sources/Storage/*.cxx) \
- $(wildcard HALKit/AMD64/*.cxx) $(wildcard HALKit/AMD64/*.cpp) \
- $(wildcard HALKit/AMD64/*.s)
- $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm
- $(ASM) $(ASMFLAGS) HALKit/AMD64/HalSMPCoreManager.asm
- $(ASM) $(ASMFLAGS) HALKit/AMD64/HalBoot.asm
- $(ASM) $(ASMFLAGS) HALKit/AMD64/HalUtils.asm
- $(MOVEALL)
-
-OBJCOPY=x86_64-w64-mingw32-objcopy
-
-.PHONY: link-amd64-epm
-link-amd64-epm:
- $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL)
-
-.PHONY: all
-all: newos-amd64-epm link-amd64-epm
- @echo "NewOSKrnl => OK."
-
-.PHONY: help
-help:
- @echo "=== HELP ==="
- @echo "all: Build kernel and link it."
- @echo "link-amd64-epm: Link kernel for EPM based disks."
- @echo "newos-amd64-epm: Build kernel for EPM based disks."
-
-.PHONY: clean
-clean:
- rm -f $(LDOBJ) $(wildcard *.o) $(KERNEL)
diff --git a/dev/Kernel/arm64-efi.make b/dev/Kernel/arm64-efi.make
deleted file mode 100644
index 410e7789..00000000
--- a/dev/Kernel/arm64-efi.make
+++ /dev/null
@@ -1,68 +0,0 @@
-##################################################
-# (C) ZKA Technologies, all rights reserved.
-# This is the microkernel makefile.
-##################################################
-
-CC = clang++
-LD = lld-link
-CCFLAGS = -fshort-wchar -c -ffreestanding -MMD -mno-red-zone -D__NEWOS_ARM64__ -fno-rtti -fno-exceptions -I./ \
- -target aarch64-unknown-windows \
- -std=c++20 -D__FSKIT_USE_NEWFS__ -D__ZETA_MACHINE__ -D__NEWOSKRNL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../
-
-ASM = clang++
-
-DISKDRIVER = -D__FLASH_MEM__
-
-ifneq ($(SDCARD_SUPPORT), )
-DISKDRIVER = -D__SDCARD__
-endif
-
-ifneq ($(DEBUG_SUPPORT), )
-DEBUG = -D__DEBUG__
-endif
-
-COPY = cp
-
-LDFLAGS = -subsystem:efi_application -entry:hal_init_platform /nodefaultlib
-LDOBJ = Objects/*.obj
-
-# This file is the kernel, responsible of task management and memory.
-KERNEL = newoskrnl.dll
-
-.PHONY: error
-error:
- @echo "=== ERROR ==="
- @echo "=> Use a specific target."
-
-MOVEALL=./MoveAll.ARM64.sh
-
-.PHONY: newos-arm64-epm
-newos-arm64-epm: clean
- $(CC) $(CCFLAGS) $(DISKDRIVER) $(DEBUG) $(wildcard Sources/*.cxx) \
- $(wildcard Sources/FS/*.cxx) $(wildcard HALKit/ARM64/Storage/*.cxx) \
- $(wildcard HALKit/ARM64/PCI/*.cxx) $(wildcard Sources/Network/*.cxx) $(wildcard Sources/Storage/*.cxx) \
- $(wildcard HALKit/ARM64/*.cxx) $(wildcard HALKit/ARM64/*.cpp) \
- $(wildcard HALKit/ARM64/*.s)
-
- $(MOVEALL)
-
-OBJCOPY=x86_64-w64-mingw32-objcopy
-
-.PHONY: link-arm64-epm
-link-arm64-epm:
- $(LD) $(LDFLAGS) $(LDOBJ) /out:$(KERNEL)
-
-.PHONY: all
-all: newos-arm64-epm link-arm64-epm
- @echo "NewOSKrnl => OK."
-
-.PHONY: help
-help:
- @echo "=== HELP ==="
- @echo "all: Build kernel and link it."
- @echo "link-arm64-epm: Link kernel for EPM based disks."
- @echo "newos-arm64-epm: Build kernel for EPM based disks."
-
-.PHONY: clean
-clean:
- rm -f $(LDOBJ) $(wildcard *.o) $(KERNEL)
diff --git a/dev/Kernel/compile_flags.txt b/dev/Kernel/compile_flags.txt
deleted file mode 100644
index 4087caba..00000000
--- a/dev/Kernel/compile_flags.txt
+++ /dev/null
@@ -1,9 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I$(HOME)/
--D__NEWOS_AMD64__
--I../Vendor
--D__x86_64__
--D__ED__
diff --git a/dev/Kernel/power64-cb.make b/dev/Kernel/power64-cb.make
deleted file mode 100644
index f35df9ba..00000000
--- a/dev/Kernel/power64-cb.make
+++ /dev/null
@@ -1,4 +0,0 @@
-##################################################
-# (C) ZKA Technologies, all rights reserved.
-# This is the microkernel makefile.
-##################################################
diff --git a/dev/Kernel/riscv64-cb.make b/dev/Kernel/riscv64-cb.make
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/riscv64-cb.make
+++ /dev/null