summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/FirmwareKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
commit83d870e58457a1d335a1d9b9966a6a1887cc297b (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /dev/kernel/FirmwareKit
parentab37adbacf0f33845804c788b39680cd754752a8 (diff)
feat! breaking changes on kernel sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/FirmwareKit')
-rw-r--r--dev/kernel/FirmwareKit/.gitkeep1
-rw-r--r--dev/kernel/FirmwareKit/EFI.h12
-rw-r--r--dev/kernel/FirmwareKit/EFI/API.h88
-rw-r--r--dev/kernel/FirmwareKit/EFI/EFI.h916
-rw-r--r--dev/kernel/FirmwareKit/EFI/NS.h18
-rw-r--r--dev/kernel/FirmwareKit/EPM.h112
-rw-r--r--dev/kernel/FirmwareKit/GPT.h48
-rw-r--r--dev/kernel/FirmwareKit/Handover.h108
-rw-r--r--dev/kernel/FirmwareKit/NeBoot/BootNet.h41
-rw-r--r--dev/kernel/FirmwareKit/NeBoot/NS.h10
-rw-r--r--dev/kernel/FirmwareKit/NeBoot/NeBoot.h34
-rw-r--r--dev/kernel/FirmwareKit/VEPM.h47
12 files changed, 0 insertions, 1435 deletions
diff --git a/dev/kernel/FirmwareKit/.gitkeep b/dev/kernel/FirmwareKit/.gitkeep
deleted file mode 100644
index 8b137891..00000000
--- a/dev/kernel/FirmwareKit/.gitkeep
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/dev/kernel/FirmwareKit/EFI.h b/dev/kernel/FirmwareKit/EFI.h
deleted file mode 100644
index f75f0fbe..00000000
--- a/dev/kernel/FirmwareKit/EFI.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#pragma once
-
-#include <FirmwareKit/EFI/EFI.h>
-#include <FirmwareKit/GPT.h>
-
-/// @note this header is used to reference the EFI/EFI.h
diff --git a/dev/kernel/FirmwareKit/EFI/API.h b/dev/kernel/FirmwareKit/EFI/API.h
deleted file mode 100644
index 24fceb2b..00000000
--- a/dev/kernel/FirmwareKit/EFI/API.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#ifndef __EFI_API__
-#define __EFI_API__
-
-#include <FirmwareKit/EFI/EFI.h>
-#include <FirmwareKit/Handover.h>
-#include <KernelKit/MSDOS.h>
-#include <KernelKit/PE.h>
-
-#ifdef __BOOTZ__
-// forward decl.
-class BootTextWriter;
-
-#define __BOOTKIT_NO_INCLUDE__ 1
-
-#include <BootKit/BootKit.h>
-#include <modules/CoreGfx/CoreGfx.h>
-#endif // ifdef __BOOTZ__
-
-inline EfiSystemTable* ST = nullptr;
-inline EfiBootServices* BS = nullptr;
-
-EXTERN_C void rt_cli();
-EXTERN_C void rt_halt();
-
-namespace Boot {
-/// @brief Halt and clear interrut flag on x86.
-/// @return
-inline Void Stop() noexcept {
- while (YES) {
- rt_cli();
- rt_halt();
- }
-}
-
-/**
-@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);
-}
-
-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" ***\r *** REASON: ");
- ST->ConOut->OutputString(ST->ConOut, Reason);
-
- ST->ConOut->OutputString(ST->ConOut, L" ***\r");
-
- Boot::Stop();
-}
-} // namespace Boot
-
-inline void fw_init_efi(EfiSystemTable* SystemTable) noexcept {
- if (!SystemTable) return;
-
- ST = SystemTable;
- BS = ST->BootServices;
-}
-
-#ifdef __BOOTZ__
-
-#include <BootKit/Platform.h>
-
-#endif // ifdef __BOOTZ__
-
-#endif /* ifndef __EFI_API__ */
diff --git a/dev/kernel/FirmwareKit/EFI/EFI.h b/dev/kernel/FirmwareKit/EFI/EFI.h
deleted file mode 100644
index 240fb9ea..00000000
--- a/dev/kernel/FirmwareKit/EFI/EFI.h
+++ /dev/null
@@ -1,916 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#ifndef FIRMWARE_KIT_EFI_H
-#define FIRMWARE_KIT_EFI_H
-
-/**
-@brief Implementation of the main EFI protocols.
-*/
-
-#include <NeKit/Defines.h>
-
-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
-
-#ifndef EPIAPI
-#define EFIAPI __attribute__((ms_abi))
-#endif // ifndef EPIAPI
-
-#define IN
-#define OUT
-#define OPTIONAL
-
-#define EFI_STATUS EfiStatusType
-
-#define EFI_FINAL final
-
-// Forward decls
-
-struct EfiTableHeader;
-struct EfiLoadFileProtocol;
-struct EfiSimpleTextOutputProtocol;
-struct EfiDevicePathProtocol;
-struct EfiBootServices;
-struct EfiMemoryDescriptor;
-struct EfiSystemTable;
-struct EFI_GUID;
-struct EfiFileDevicePathProtocol;
-struct EfiHandle;
-struct EfiGraphicsOutputProtocol;
-struct EfiBitmask;
-struct EfiFileProtocol;
-struct EfiSimpleTextInputProtocol;
-
-typedef UInt64 EfiStatusType;
-
-typedef Char16 EfiChar16Type;
-
-/// @brief Core Handle Kind
-/// Self 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* Self,
- const WideChar* OutputString);
-
-typedef UInt64(EFI_API* EfiTextAttrib)(struct EfiSimpleTextOutputProtocol* Self,
- const WideChar Attribute);
-
-typedef UInt64(EFI_API* EfiTextClear)(struct EfiSimpleTextOutputProtocol* Self);
-
-typedef UInt64(EFI_API* EfiLoadFile)(EfiLoadFileProtocol* Self, 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, EFI_GUID* Guid, VoidPtr* Device);
-
-typedef UInt64(EFI_API* EfiLocateDevicePath)(EFI_GUID* 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 {
- /// @brief Kind of the memory region.
- UInt32 Kind;
-
- /// @brief Physical address of the first byte in the memory region. PhysicalStart
- 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;
- ///
- /// NumberOfPages Number 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_SIMPLE_NETWORK_PROTOCOL_GUID \
- { \
- 0xA19832B9, 0xAC25, 0x11D3, { 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
- }
-
-#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
-
-#define EFI_IP4_PROTOCOL_GUID \
- { \
- 0x41d94cd2, 0x35b6, 0x455a, { 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd } \
- }
-
-#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
-};
-
-struct EFI_SIMPLE_NETWORK_PROTOCOL;
-
-typedef EFI_STATUS(EFI_API* EFI_SIMPLE_NETWORK_START)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This);
-
-typedef EFI_STATUS(EFI_API* EFI_SIMPLE_NETWORK_STOP)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This);
-
-typedef EFI_STATUS(EFI_API* EFI_SIMPLE_NETWORK_INITIALIZE)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This,
- IN UInt32 ExtraRxBufferSize OPTIONAL,
- IN UInt32 ExtraTxBufferSize OPTIONAL);
-
-typedef EFI_STATUS(EFIAPI* EFI_SIMPLE_NETWORK_RESET)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This,
- IN Boolean ExtendedVerification);
-
-typedef EFI_STATUS(EFIAPI* EFI_SIMPLE_NETWORK_SHUTDOWN)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This);
-
-typedef UInt8 EfiMacAddress[32];
-
-#define MAX_MCAST_FILTER_CNT 16
-
-typedef struct {
- UInt32 State;
- UInt32 HwAddressSize;
- UInt32 MediaHeaderSize;
- UInt32 MaxPacketSize;
- UInt32 NvRamSize;
- UInt32 NvRamAccessSize;
- UInt32 ReceiveFilterMask;
- UInt32 ReceiveFilterSetting;
- UInt32 MaxMCastFilterCount;
- UInt32 MCastFilterCount;
- EfiMacAddress MCastFilter[MAX_MCAST_FILTER_CNT];
- EfiMacAddress CurrentAddress;
- EfiMacAddress BroadcastAddress;
- EfiMacAddress PermanentAddress;
- UInt8 IfType;
- BOOL MacAddressChangeable;
- BOOL MultipleTxSupported;
- BOOL MediaPresentSupported;
- BOOL MediaPresent;
-} EFI_SIMPLE_NETWORK_MODE;
-
-typedef EFI_STATUS(EFIAPI* EFI_SIMPLE_NETWORK_TRANSMIT)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This,
- IN UInt32 HeaderSize, IN UInt32 BufferSize,
- IN Void* Buffer,
- IN EfiMacAddress* SrcAddr OPTIONAL,
- IN EfiMacAddress* DestAddr OPTIONAL,
- IN UInt16* Protocol OPTIONAL);
-
-typedef EFI_STATUS(EFIAPI* EFI_SIMPLE_NETWORK_RECEIVE)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This,
- OUT UInt32* HeaderSize OPTIONAL,
- IN OUT UInt32* BufferSize, OUT Void* Buffer,
- OUT EfiMacAddress* SrcAddr OPTIONAL,
- OUT EfiMacAddress* DestAddr OPTIONAL,
- OUT UInt16* Protocol OPTIONAL);
-
-typedef struct EFI_SIMPLE_NETWORK_PROTOCOL {
- UInt64 Revision;
- EFI_SIMPLE_NETWORK_START Start;
- EFI_SIMPLE_NETWORK_STOP Stop;
- EFI_SIMPLE_NETWORK_INITIALIZE Initialize;
- EFI_SIMPLE_NETWORK_RESET Reset;
- EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown;
- VoidPtr ReceiveFilters;
- VoidPtr StationAddress;
- VoidPtr Statistics;
- VoidPtr MCastIpToMac;
- VoidPtr NvData;
- VoidPtr GetStatus;
- EFI_SIMPLE_NETWORK_TRANSMIT Transmit;
- EFI_SIMPLE_NETWORK_RECEIVE Receive;
- VoidPtr WaitForPacket;
- EFI_SIMPLE_NETWORK_MODE* Mode;
-} EFI_SIMPLE_NETWORK_PROTOCOL;
-
-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* Self, UInt32 ModeNumber, UInt32* SizeOfInfo,
- EfiGraphicsOutputProtocolModeInformation** Info);
-
-typedef UInt64(EFI_API* EfiGraphicsOutputProtocolSetMode)(EfiGraphicsOutputProtocol* Self,
- UInt32 ModeNumber);
-
-typedef UInt64(EFI_API* EfiGraphicsOutputProtocolBlt)(
- EfiGraphicsOutputProtocol* Self, 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;
-} EfiGraphicsOutputProtocolMode;
-
-typedef struct EfiGraphicsOutputProtocol {
- EfiGraphicsOutputProtocolQueryMode QueryMode;
- EfiGraphicsOutputProtocolSetMode SetMode;
- EfiGraphicsOutputProtocolBlt Blt;
- EfiGraphicsOutputProtocolMode* 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 EFI_GUID EFI_FINAL {
- UInt32 Data1;
- UInt16 Data2;
- UInt16 Data3;
- UInt8 Data4[8];
-} EFI_GUID;
-
-/***
- * Protocol stuff...
- */
-
-#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
- { \
- 0x387477c1, 0x69c7, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
-
-/** 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)(EFI_GUID* Protocol, VoidPtr Registration,
- VoidPtr* Interface);
-
-typedef UInt64(EFI_API* EfiOpenProtocol)(EfiHandlePtr Handle, EFI_GUID* Guid, VoidPtr* Interface,
- EfiHandlePtr AgentHandle, EfiHandlePtr ControllerHandle,
- UInt32 Attributes);
-
-typedef UInt64(EFI_API* EfiEnableCursor)(EfiSimpleTextOutputProtocol* Self, 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 DriveonnectController;
- 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 struct {
- UInt16 ScanCode;
- EfiChar16Type UnicodeChar;
-} EfiInputKey;
-
-typedef EfiStatusType(EFI_API* EfiInputReadKey)(IN EfiSimpleTextInputProtocol* This,
- OUT EfiInputKey* Key);
-
-typedef EfiStatusType(EFI_API* EfiInputReset)(IN EfiSimpleTextInputProtocol* This,
- IN Boolean ExtendedChk);
-
-typedef EfiStatusType(EFI_API* EfiWaitForEvent)(IN UInt32 NumberOfEvents, IN VoidPtr Event,
- OUT UInt32* Index);
-
-typedef struct EfiSimpleTextInputProtocol {
- EfiInputReset Reset;
- EfiInputReadKey ReadKeyStroke;
- EfiWaitForEvent WaitForKey;
-} EfiSimpleTextInputProtocol;
-
-/// @biref Open Volume procedure ptr.
-typedef UInt64(EFI_API* EfiOpenVolume)(struct EfiSimpleFilesystemProtocol*,
- struct EfiFileProtocol**);
-
-struct EfiSimpleFilesystemProtocol {
- UInt64 Revision;
- EfiOpenVolume OpenVolume;
-};
-
-typedef struct EfiRuntimeServices {
- EfiTableHeader SystemTable;
- VoidPtr GetTime, SetTime, GetWakeupTime, SetWakeupTime, SetVirtualAddressMap, ConvertPointer;
- UInt64(EFI_API* GetVariable)(const WideChar* Name, EFI_GUID VendorGUID, UInt32* Attributes,
- UInt32* DataSize, VoidPtr Data);
- VoidPtr GetNextVariable;
- UInt64(EFI_API* SetVariable)(const WideChar* Name, EFI_GUID VendorGUID, UInt32* Attributes,
- UInt32* DataSize, VoidPtr Data);
- VoidPtr GetNextHighMonotonicCount;
- VoidPtr ResetSystem;
- VoidPtr UpdateCapsule;
- VoidPtr QueryCapsuleCapabilites;
- VoidPtr QueryVariableInfo;
-} EfiRuntimeServices;
-
-/**
-@brief The Structure that they give you when booting.
-*/
-typedef struct EfiSystemTable {
- EfiTableHeader SystemHeader;
- WideChar* FirmwareVendor;
- UInt32 FirmwareRevision;
- EfiHandlePtr ConsoleInHandle;
- EfiSimpleTextInputProtocol* ConIn;
- EfiHandlePtr ConsoleOutHandle;
- EfiSimpleTextOutputProtocol* ConOut;
- EfiHandlePtr StandardErrorHandle;
- VoidPtr StdErr;
- EfiRuntimeServices* RuntimeServices;
- EfiBootServices* BootServices;
- UInt64 NumberOfTableEntries;
- /// The configuration table (contains the RSD PTR entry.)
- struct {
- EFI_GUID 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
-
-#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
-
-#define EFI_MP_SERVICES_PROTOCOL_GUID \
- { \
- 0x3fdda605, 0xa76e, 0x4f46, { 0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08 } \
- }
-
-#define PROCESSOR_AS_BSP_BIT 0x00000001
-#define PROCESSOR_ENABLED_BIT 0x00000002
-#define PROCESSOR_HEALTH_STATUS_BIT 0x00000004
-
-#define END_OF_CPU_LIST 0xffffffff
-
-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* Self, struct EfiFileProtocol** Out,
- EfiCharType* CharType, UInt64 OpenMode, UInt64 Attrib);
-
- EfiStatusType(EFI_API* Close)(struct EfiFileProtocol* Self);
-
- EfiStatusType(EFI_API* Delete)(struct EfiFileProtocol* Self);
-
- EfiStatusType(EFI_API* Read)(struct EfiFileProtocol* Self, UInt64* BufSize, VoidPtr BufOut);
-
- EfiStatusType(EFI_API* Write)(struct EfiFileProtocol* Self, UInt64* BufSize, VoidPtr BufOut);
-
- EfiStatusType(EFI_API* GetPosition)(EfiFileProtocol* Self, UInt64* Position);
-
- EfiStatusType(EFI_API* SetPosition)(EfiFileProtocol* Self, UInt64* Position);
-
- EfiStatusType(EFI_API* GetInfo)(struct EfiFileProtocol*, struct EFI_GUID*, UInt32*, void*);
-
- EfiStatusType(EFI_API* SetInfo)(struct EfiFileProtocol*, struct EFI_GUID*, UInt32*, void*);
-
- EfiStatusType(EFI_API* Flush)(EfiFileProtocol*);
-
- EfiStatusType(EFI_API* OpenEx)(EfiFileProtocol* Self, EfiFileProtocol** OutHandle,
- EfiCharType* Path, UInt64 Mode, UInt64 Attrib,
- struct EfiIOToken* Token);
-
- EfiStatusType(EFI_API* ReadEx)(EfiFileProtocol* Self, struct EfiIOToken* Token);
-
- EfiStatusType(EFI_API* WriteEx)(EfiFileProtocol* Self, struct EfiIOToken* Token);
-
- EfiStatusType(EFI_API* FlushEx)(EfiFileProtocol* Self, 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 EFI_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];
-};
-
-//*******************************************************
-// EFI_CPU_PHYSICAL_LOCATION
-// @note As in the EFI specs.
-//*******************************************************
-typedef struct _EfiCPUPhyiscalLocation {
- UInt32 Package;
- UInt32 Core;
- UInt32 Thread;
-} EfiCPUPhyiscalLocation;
-
-typedef union _EfiExtendedProcessorInformation {
- EfiCPUPhyiscalLocation Location2;
-} EfiExtendedProcessorInformation;
-
-typedef struct _EfiProcessorInformation {
- UInt64 ProcessorId;
- UInt32 StatusFlag;
- EfiCPUPhyiscalLocation Location;
- EfiExtendedProcessorInformation ExtendedInformation;
-} EfiProcessorInformation;
-
-typedef EfiStatusType EFI_API (*EfiMpServicesGetNumberOfProcessors)(
- IN struct _EfiMpServicesProtocol* Self, OUT UInt32* NumberOfProcessors,
- OUT UInt32* NumberOfEnabledProcessors);
-
-typedef EfiStatusType EFI_API (*EfiMpServicesGetProcessorInfo)(
- IN struct _EfiMpServicesProtocol* Self, IN UInt32* ProcessorNumber,
- OUT struct _EfiProcessorInformation* NumberOfEnabledProcessors);
-
-typedef void EFI_API (*EFI_AP_PROCEDURE)(IN VoidPtr ProcedureArgument);
-
-typedef EfiStatusType EFI_API (*EfiMpServicesStartupAllAPS)(
- IN struct _EfiMpServicesProtocol* Self, IN EFI_AP_PROCEDURE Procedure, IN Boolean SingleThread,
- IN VoidPtr WaitEvent OPTIONAL, // EFI_EVENT first, but unused here.
- IN UInt32 TimeoutInMicroSeconds, IN Void* ProcedureArgument OPTIONAL,
- OUT UInt32** FailedCpuList OPTIONAL);
-
-typedef EfiStatusType EFI_API (*EfiMpServicesSwitchBSP)(IN struct _EfiMpServicesProtocol* Self,
- IN UInt32 ProcessorNumber,
- IN Boolean EnableOldBSP);
-
-typedef EfiStatusType EFI_API (*EfiMpServicesStartupThisAP)(
- IN struct _EfiMpServicesProtocol* Self, IN EFI_AP_PROCEDURE Procedure,
- IN UInt32 ProcessorNumber, IN VoidPtr WaitEvent OPTIONAL, IN UInt32 TimeoutInMicroseconds,
- IN Void* ProcedureArgument OPTIONAL, OUT Boolean* Finished OPTIONAL);
-
-typedef EfiStatusType EFI_API (*EfiMpServicesDisableThisAP)(IN struct _EfiMpServicesProtocol* Self,
- IN UInt32 ProcessorNumber,
- IN Boolean EnableAP,
- IN UInt32* HealthFlag OPTIONAL);
-
-typedef EfiStatusType EFI_API (*EfiMpServicesWhoAmI)(IN struct _EfiMpServicesProtocol* Self,
- OUT UInt32* ProcessorNumber);
-
-typedef struct _EfiMpServicesProtocol {
- EfiMpServicesGetNumberOfProcessors GetNumberOfProcessors;
- EfiMpServicesGetProcessorInfo GetProcessorInfo;
- EfiMpServicesStartupAllAPS StartupAllAPs;
- EfiMpServicesStartupThisAP StartupThisAP;
- EfiMpServicesSwitchBSP SwitchBSP;
- EfiMpServicesDisableThisAP EnableDisableAP;
- EfiMpServicesWhoAmI WhoAmI;
-} EfiMpServicesProtocol;
-
-#endif // ifndef FIRMWARE_KIT_EFI_H
diff --git a/dev/kernel/FirmwareKit/EFI/NS.h b/dev/kernel/FirmwareKit/EFI/NS.h
deleted file mode 100644
index 64e59870..00000000
--- a/dev/kernel/FirmwareKit/EFI/NS.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#pragma once
-
-#include <NeKit/Defines.h>
-
-namespace Firmware::Detail::EFI {
-using namespace Kernel;
-
-EXTERN_C {
-#include <FirmwareKit/EFI/EFI.h>
-}
-
-} // namespace Firmware::Detail::EFI
diff --git a/dev/kernel/FirmwareKit/EPM.h b/dev/kernel/FirmwareKit/EPM.h
deleted file mode 100644
index 8df4d345..00000000
--- a/dev/kernel/FirmwareKit/EPM.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/**
- @brief The Explicit Partition Map scheme.
-*/
-
-#ifndef FIRMWAREKIT_EPM_H
-#define FIRMWAREKIT_EPM_H
-
-#include <NeKit/Defines.h>
-
-#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 Invalid magic for EPM */
-#define kEPMMagicError "EPM??"
-
-#ifdef __NE_AMD64__
-#define kEPMMagic kEPMMagic86
-#else
-#ifdef __NE_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 kEPMPartBlockLba (sizeof(EPM_PART_BLOCK))
-
-///! @brief Current EPM revision.
-#define kEPMRevisionBcd (0x0100)
-
-/// !@brief EPM boot block address.
-#define kEPMBootBlockLba (0U)
-
-#define kEPMReserveLen (399)
-
-struct EPM_GUID;
-struct EPM_PART_BLOCK;
-
-/* The first 0 > 128 addresses of a disk contains these headers. */
-
-/// @brief EPM GUID structure.
-typedef struct EPM_GUID {
- Kernel::UInt32 Data1;
- Kernel::UInt16 Data2;
- Kernel::UInt16 Data3;
- Kernel::UInt8 Data4[8];
-} PACKED EPM_GUID;
-
-/**
- * @brief The EPM boot block.
- * @note NumBlock and LbaStart are ignored on some platforms.
- */
-struct PACKED EPM_PART_BLOCK {
- Kernel::Char Magic[kEPMMagicLength];
- Kernel::Char Name[kEPMNameLength];
- EPM_GUID Guid;
- Kernel::Int32 Version;
- Kernel::Int64 NumBlocks;
- Kernel::Int64 SectorSz;
- Kernel::Int64 LbaStart; // base offset
- Kernel::Int64 LbaEnd; // end offset
- Kernel::Int16 Kind;
- Kernel::Int16 Flags;
- Kernel::Int32 FsVersion;
- Kernel::Char Fs[kEPMFilesystemLength]; /* NeFS, OpenHeFS... */
- Kernel::Char Reserved[kEPMReserveLen]; // to fill a full sector.
-};
-
-///! @brief Version kind enum.
-///! @brief Use in boot block version field.
-
-enum {
- kEPMInvalid = 0x00,
- kEPMGeneric = 0xcf, /// @brief Generic OS
- kEPMLinux = 0x8f, /// @brief Linux on EPM.
- kEPMBSD = 0x9f, /// @brief BSD on EPM.
- kEPMNeKernel = 0x1f, /// @brief NeKernel.
- kEPMLegacy = 0x2f, /// @brief Legacy VMKernel.
- /// @note ... the rest is reserved for future OSes.
- kEPMInvalidOS = 0xff,
-};
-
-inline EPM_GUID kEPMNilGuid = {0x0U, 0x0U, 0x0U, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
-
-#endif // ifndef FIRMWAREKIT_EPM_H
diff --git a/dev/kernel/FirmwareKit/GPT.h b/dev/kernel/FirmwareKit/GPT.h
deleted file mode 100644
index 1772cc79..00000000
--- a/dev/kernel/FirmwareKit/GPT.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#pragma once
-
-#include <FirmwareKit/EFI/EFI.h>
-#include <NeKit/Defines.h>
-
-#define kSectorAlignGPT_PartTbl (420U)
-#define kSectorAlignGPT_PartEntry (72U)
-#define kMagicLenGPT (8U)
-#define kMagicGPT ("EFI PART") // "EFI PART"
-#define kGPTPartitionTableLBA (512U + sizeof(GPT_PARTITION_TABLE))
-
-namespace Kernel {
-struct GPT_PARTITION_TABLE;
-struct GPT_PARTITION_ENTRY;
-
-struct PACKED GPT_PARTITION_TABLE final {
- Char Signature[kMagicLenGPT];
- UInt32 Revision;
- UInt32 HeaderSize;
- UInt32 CRC32;
- UInt32 Reserved1;
- UInt64 LBAHeader;
- UInt64 LBAAltHeader;
- UInt64 FirstGPTEntry;
- UInt64 LastGPTEntry;
- EFI_GUID Guid;
- UInt64 StartingLBA;
- UInt32 NumPartitionEntries;
- UInt32 SizeOfEntries;
- UInt32 CRC32PartEntry;
- UInt8 Reserved2[kSectorAlignGPT_PartTbl];
-};
-
-struct PACKED GPT_PARTITION_ENTRY {
- EFI_GUID PartitionTypeGUID;
- EFI_GUID UniquePartitionGUID;
- UInt64 StartLBA;
- UInt64 EndLBA;
- UInt64 Attributes;
- UInt8 Name[kSectorAlignGPT_PartEntry];
-};
-} // namespace Kernel
diff --git a/dev/kernel/FirmwareKit/Handover.h b/dev/kernel/FirmwareKit/Handover.h
deleted file mode 100644
index 354b6e57..00000000
--- a/dev/kernel/FirmwareKit/Handover.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-/**
- * @file Handover.h
- * @author Amlal El Mahrouss (amlal@nekernel.org)
- * @brief The handover boot protocol.
- * @version 1.15
- * @date 2024-02-23
- *
- * @copyright Copyright (c) 2024, Amlal El Mahrouss
- *
- */
-
-#pragma once
-
-#include <FirmwareKit/EFI/EFI.h>
-#include <NeKit/Defines.h>
-
-#define kHandoverMagic (0xBADCC)
-#define kHandoverVersion (0x0117)
-
-/* Initial bitmap pointer location and size. */
-#define kHandoverBitMapSz (gib_cast(4))
-#define kHandoverStructSz sizeof(HEL::BootInfoHeader)
-
-namespace Kernel::HEL {
-/**
-@brief The executable type enum.
-*/
-enum {
- kTypeKernel = 100,
- kTypeKernelDriver = 101,
- kTypeRsrc = 102,
- kTypeInvalid = 103,
- kTypeCount = 4,
-};
-
-/**
-@brief The executable architecture enum.
-*/
-
-enum {
- kArchAMD64 = 122,
- kArchARM64 = 123,
- kArchRISCV = 124,
- kArchCount = 3,
-};
-
-struct BootInfoHeader final {
- UInt64 f_Magic;
- UInt64 f_Version;
-
- VoidPtr f_BitMapStart;
- SizeT f_BitMapSize;
-
- VoidPtr f_PageStart;
-
- VoidPtr f_KernelImage;
- SizeT f_KernelSz;
-
- VoidPtr f_LibSystemImage;
- SizeT f_LibSystemSz;
-
- VoidPtr f_StackTop;
- SizeT f_StackSz;
-
- WideChar f_FirmwareVendorName[32];
- SizeT f_FirmwareVendorLen;
-
- VoidPtr f_FirmwareCustomTables[2]; // On EFI 0: BS 1: ST
-
- struct {
- VoidPtr f_SmBios;
- VoidPtr f_VendorPtr;
- VoidPtr f_MpPtr;
- Bool f_MultiProcessingEnabled;
- UInt32 f_ImageKey;
- EfiHandlePtr f_ImageHandle;
- } 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];
-};
-
-enum {
- kHandoverTableBS,
- kHandoverTableST,
- kHandoverTableCount,
-};
-
-/// @brief Alias of bootloader main type.
-typedef Int32 (*HandoverProc)(BootInfoHeader* boot_info);
-} // namespace Kernel::HEL
-
-/// @brief Bootloader information header global variable.
-inline Kernel::HEL::BootInfoHeader* kHandoverHeader = nullptr;
diff --git a/dev/kernel/FirmwareKit/NeBoot/BootNet.h b/dev/kernel/FirmwareKit/NeBoot/BootNet.h
deleted file mode 100644
index 3637bab0..00000000
--- a/dev/kernel/FirmwareKit/NeBoot/BootNet.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#pragma once
-
-#include <NeKit/Defines.h>
-
-#define kBootNetINetMagic "ONET"
-#define kBootNetINetMagicLength (4)
-#define kBootNetVersion (0x001)
-#define kBootNetNameLen (256U)
-
-struct _BOOTNET_INTERNET_HEADER;
-
-/// @brief Netboot Internet Header
-/// Consists of 4 magic characters, and a set of fields describing the current patch that's being
-/// sent (if m_preflight = 0)
-/// @note Can be used to patch ROMs too (if ImpliesProgram = 1)
-typedef struct _BOOTNET_INTERNET_HEADER {
- Kernel::Char NB1; /// magic char 1 'O'
- Kernel::Char NB2; /// magic char 2 'N'
- Kernel::Char NB3; /// magic char 3 'E'
- Kernel::Char NB4; /// magic char 4 'T'
-
- Kernel::UInt16 Version;
-
- Kernel::Char Name[kBootNetNameLen]; /// example: Modjo
-
- Kernel::Int32 Length; /// the patch length.
- Kernel::Char Target[kBootNetNameLen]; /// the target file.
-
- Kernel::Boolean ImpliesProgram : 1; /// does it imply reprogramming?
-
- Kernel::Boolean Preflight : 1; /// is it a preflight packet.
- Kernel::Char Data[1]; /// non preflight packet has a patch blob for a **PatchTarget**
-} PACKED BOOTNET_INTERNET_HEADER;
-
-using BOOTNET_INTERNET_HEADER_PTR = BOOTNET_INTERNET_HEADER*;
diff --git a/dev/kernel/FirmwareKit/NeBoot/NS.h b/dev/kernel/FirmwareKit/NeBoot/NS.h
deleted file mode 100644
index 3a6bed6d..00000000
--- a/dev/kernel/FirmwareKit/NeBoot/NS.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#pragma once
-
-#include <FirmwareKit/NeBoot/BootNet.h>
-#include <FirmwareKit/NeBoot/NeBoot.h> \ No newline at end of file
diff --git a/dev/kernel/FirmwareKit/NeBoot/NeBoot.h b/dev/kernel/FirmwareKit/NeBoot/NeBoot.h
deleted file mode 100644
index 8e8fd87f..00000000
--- a/dev/kernel/FirmwareKit/NeBoot/NeBoot.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#pragma once
-
-#include <NeKit/Defines.h>
-
-namespace Firmware::Detail::NeBoot {
-using namespace Kernel;
-
-struct NEBOOT_LINEAR_EXEC;
-
-/// @brief Linear Executable Header
-/// @author Amlal El Mahrouss
-struct ATTRIBUTE(aligned(4)) NEBOOT_LINEAR_EXEC {
- const Char fMagic[2]; // magic number
- const Char fName[10]; // operating system name
- const UInt32 fRevision; // firmware revision
- const UInt32 fStartAddress; // start address (master/slave(s) thread)
-
-#ifdef NE_IS_EXTENDED_COREBOOT
- UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such. (ARM)
- UIntPtr fMasterStructureVersion; // master structure version.
-#endif
-
-#ifdef NE_IS_MBCI_COREBOOT
- UIntPtr fMBCIStructure; // MBCI structure for MBCI (ARM)
- UIntPtr fMBCIStructureVersion; // MBCI structure version.
-#endif
-};
-} // namespace Firmware::Detail::NeBoot
diff --git a/dev/kernel/FirmwareKit/VEPM.h b/dev/kernel/FirmwareKit/VEPM.h
deleted file mode 100644
index b2bee0d3..00000000
--- a/dev/kernel/FirmwareKit/VEPM.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* ========================================
-
- Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#ifndef FIRMWAREKIT_VEPM_H
-#define FIRMWAREKIT_VEPM_H
-
-#include <FirmwareKit/EFI.h>
-#include <FirmwareKit/EPM.h>
-
-/// =========================================================== ///
-/// @brief The Virtual Explicit Partition Map scheme extension.
-/// =========================================================== ///
-
-#if defined(__NE_VEPM__)
-#ifdef kEPMMagic
-#undef kEPMMagic
-#endif // kEPMMagic
-
-/// =========================================================== ///
-/// @brief VEPM Ident String.
-/// =========================================================== ///
-#define kEPMMagic "EPMVM"
-
-/// =========================================================== ///
-/// @brief VEPM GUID.
-/// @note This is the GUID used to identify a VEPM partition.
-/// =========================================================== ///
-inline EPM_GUID kVEPMGuidEPM = {
- 0x9a1b3f2e, 0x4c3f, 0x4d52, {0xa7, 0x83, 0x9c, 0x21, 0x7b, 0x5e, 0x4d, 0xac}};
-
-/// =========================================================== ///
-/// @brief VEPM GUID.
-/// @note This is the GUID used to identify a VEPM partition (EFI version)
-/// =========================================================== ///
-inline EFI_GUID kVEPMGuidEFI = {
- 0x9a1b3f2e, 0x4c3f, 0x4d52, {0xa7, 0x83, 0x9c, 0x21, 0x7b, 0x5e, 0x4d, 0xac}};
-
-/// =========================================================== ///
-/// @brief VEPM GUID String.
-/// =========================================================== ///
-#define kVEPMGuidStr "9a1b3f2e-4c3f-4d52-a783-9c217b5e4dac"
-#endif // __NE_VEPM__
-
-#endif // FIRMWAREKIT_VEPM_H \ No newline at end of file