diff options
| author | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-16 18:12:59 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-16 18:12:59 +0100 |
| commit | 44cb9590d86a507b226a7157b1c8d10ee4a63bb4 (patch) | |
| tree | 469214c8f0cfbc6b2330e5b641600087ba2ac71f | |
| parent | 82f0a2da77af7d79e53f5e65e46c527c1fe92765 (diff) | |
Boot: See below.
- Handover header inside information header isn't necessary, removing it.
- Add EfiLoadImage and EfiStartImage, need a EFIHelper1 class.
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
| -rw-r--r-- | Private/EFIKit/EFI.hxx | 67 | ||||
| -rw-r--r-- | Private/EFIKit/Handover.hxx | 1 |
2 files changed, 38 insertions, 30 deletions
diff --git a/Private/EFIKit/EFI.hxx b/Private/EFIKit/EFI.hxx index f2810c8c..2ccbb625 100644 --- a/Private/EFIKit/EFI.hxx +++ b/Private/EFIKit/EFI.hxx @@ -82,6 +82,15 @@ 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 { @@ -460,51 +469,51 @@ firmware level application. */ typedef struct EfiBootServices { EfiTableHeader SystemTable; - UIntPtr RaiseTPL; - UIntPtr RestoreTPL; + VoidPtr RaiseTPL; + VoidPtr RestoreTPL; EfiAllocatePages AllocatePages; EfiFreePages FreePages; EfiGetMemoryMap GetMemoryMap; EfiAllocatePool AllocatePool; EfiFreePool FreePool; - UIntPtr CreateEvent; - UIntPtr SetTimer; - UIntPtr WaitForEvent; - UIntPtr SignalEvent; - UIntPtr CloseEvent; - UIntPtr CheckEvent; - UIntPtr InstallProtocolInterface; - UIntPtr ReinstallProtocolInterface; - UIntPtr UninstallProtocolInterface; + VoidPtr CreateEvent; + VoidPtr SetTimer; + VoidPtr WaitForEvent; + VoidPtr SignalEvent; + VoidPtr CloseEvent; + VoidPtr CheckEvent; + VoidPtr InstallProtocolInterface; + VoidPtr ReinstallProtocolInterface; + VoidPtr UninstallProtocolInterface; EfiHandleProtocol HandleProtocol; VoidPtr Reserved; - UIntPtr RegisterProtocolNotify; - UIntPtr LocateHandle; + VoidPtr RegisterProtocolNotify; + VoidPtr LocateHandle; EfiLocateDevicePath LocateDevicePath; - UIntPtr InstallConfigurationTable; - UIntPtr LoadImage; - UIntPtr StartImage; - UIntPtr Exit; - UIntPtr UnloadImage; + VoidPtr InstallConfigurationTable; + EfiLoadImage LoadImage; + EfiStartImage StartImage; + VoidPtr Exit; + VoidPtr UnloadImage; EfiExitBootServices ExitBootServices; - UIntPtr GetNextMonotonicCount; - UIntPtr Stall; + VoidPtr GetNextMonotonicCount; + VoidPtr Stall; EfiStatusType(EFI_API *SetWatchdogTimer)(UInt32 Timeout, UInt64 WatchdogCode, UInt32 DataSize, EfiCharType *Data); - UIntPtr ConnectController; - UIntPtr DisconnectController; + VoidPtr ConnectController; + VoidPtr DisconnectController; EfiOpenProtocol OpenProtocol; - UIntPtr CloseProtocol; - UIntPtr OpenProtocolInformation; - UIntPtr ProtocolsPerHandle; - UIntPtr LocateHandleBuffer; + VoidPtr CloseProtocol; + VoidPtr OpenProtocolInformation; + VoidPtr ProtocolsPerHandle; + VoidPtr LocateHandleBuffer; EfiLocateProtocol LocateProtocol; - UIntPtr InstallMultipleProtocolInterfaces; - UIntPtr UninstallMultipleProtocolInterfaces; + VoidPtr InstallMultipleProtocolInterfaces; + VoidPtr UninstallMultipleProtocolInterfaces; EfiCalculateCrc32 CalculateCrc32; EfiCopyMem CopyMem; EfiSetMem SetMem; - UIntPtr CreateEventEx; + VoidPtr CreateEventEx; } EfiBootServices; #define kEntireDevPath 0xFF diff --git a/Private/EFIKit/Handover.hxx b/Private/EFIKit/Handover.hxx index 840af2ec..42926a3e 100644 --- a/Private/EFIKit/Handover.hxx +++ b/Private/EFIKit/Handover.hxx @@ -61,7 +61,6 @@ typedef struct HandoverHeader final { } __attribute__((packed)) HandoverHeader, *HandoverHeaderPtr; struct HandoverInformationHeader { - HandoverHeader f_Header; voidPtr f_VirtualStart; SizeT f_VirtualSize; voidPtr f_PhysicalStart; |
