/** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory * FILE: xtldr/includes/blmod.h * DESCRIPTION: Top level header for XTLDR modules support * DEVELOPERS: Rafal Kupiec */ #ifndef __XTLDR_BLMOD_H #define __XTLDR_BLMOD_H #include #include #include /* Structures forward declarations */ typedef struct _XT_BOOT_PROTOCOL XT_BOOT_PROTOCOL, *PXT_BOOT_PROTOCOL; typedef struct _XT_BOOT_PROTOCOL_PARAMETERS XT_BOOT_PROTOCOL_PARAMETERS, *PXT_BOOT_PROTOCOL_PARAMETERS; typedef struct _XT_PECOFFF_IMAGE_PROTOCOL XT_PECOFF_IMAGE_PROTOCOL, *PXT_PECOFF_IMAGE_PROTOCOL; /* Pointers to the routines provided by the modules */ typedef EFI_STATUS (*PXT_BOOTPROTO_BOOT_SYSTEM)(IN PXT_BOOT_PROTOCOL_PARAMETERS Parameters); typedef VOID (*PXT_FRAMEBUFFER_GET_DISPLAY_DRIVER)(OUT PWCHAR *DriverName); typedef VOID (*PXT_FRAMEBUFFER_GET_DISPLAY_INFORMATION)(OUT PLOADER_GRAPHICS_INFORMATION_BLOCK InformationBlock); typedef EFI_STATUS (*PXT_FRAMEBUFFER_INITIALIZE)(); typedef VOID (*PXT_FRAMEBUFFER_PRINT_DISPLAY_INFORMATION)(); typedef EFI_STATUS (*PXT_PECOFF_GET_ENTRY_POINT)(IN PPECOFF_IMAGE_CONTEXT Image, OUT PVOID *EntryPoint); typedef EFI_STATUS (*PXT_PECOFF_GET_MACHINE_TYPE)(IN PPECOFF_IMAGE_CONTEXT Image, OUT PUSHORT MachineType); typedef EFI_STATUS (*PXT_PECOFF_GET_SUBSYSTEM)(IN PPECOFF_IMAGE_CONTEXT Image, OUT PUSHORT SubSystem); typedef EFI_STATUS (*PXT_PECOFF_LOAD_IMAGE)(IN PEFI_FILE_HANDLE FileHandle, IN LOADER_MEMORY_TYPE MemoryType, IN PVOID VirtualAddress, OUT PPECOFF_IMAGE_CONTEXT *Image); typedef EFI_STATUS (*PXT_PECOFF_RELOCATE_IMAGE)(IN PPECOFF_IMAGE_CONTEXT Image, IN EFI_VIRTUAL_ADDRESS Address); /* XT common boot protocols */ typedef struct _XT_BOOT_PROTOCOL { PXT_BOOTPROTO_BOOT_SYSTEM BootSystem; } XT_BOOT_PROTOCOL, *PXT_BOOT_PROTOCOL; /* XT common boot protocol parameters */ typedef struct _XT_BOOT_PROTOCOL_PARAMETERS { PEFI_DEVICE_PATH_PROTOCOL DevicePath; PWCHAR ArcName; PWCHAR SystemPath; PWCHAR KernelFile; PWCHAR InitrdFile; PWCHAR HalFile; PWCHAR Arguments; } XT_BOOT_PROTOCOL_PARAMETERS, *PXT_BOOT_PROTOCOL_PARAMETERS; /* XT framebuffer support protocol */ typedef struct _XT_FRAMEBUFFER_PROTOCOL { PXT_FRAMEBUFFER_GET_DISPLAY_DRIVER GetDisplayDriver; PXT_FRAMEBUFFER_GET_DISPLAY_INFORMATION GetDisplayInformation; PXT_FRAMEBUFFER_INITIALIZE Initialize; PXT_FRAMEBUFFER_PRINT_DISPLAY_INFORMATION PrintDisplayInformation; } XT_FRAMEBUFFER_PROTOCOL, *PXT_FRAMEBUFFER_PROTOCOL; /* XT framebuffer information structure definition */ typedef struct _XT_FRAMEBUFFER_INFORMATION { BOOLEAN Initialized; EFI_GRAPHICS_PROTOCOL Protocol; union { PEFI_GRAPHICS_OUTPUT_PROTOCOL GOP; PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL UGA; } Adapter; UINT HorizontalResolution; UINT VerticalResolution; UINT BitsPerPixel; UINT BytesPerPixel; UINT PixelsPerScanLine; UINT Pitch; EFI_GRAPHICS_PIXEL_FORMAT PixelFormat; EFI_PHYSICAL_ADDRESS FrameBufferBase; ULONG_PTR FrameBufferSize; } XT_FRAMEBUFFER_INFORMATION, *PXT_FRAMEBUFFER_INFORMATION; /* EFI XT PE/COFF Image Protocol */ typedef struct _XT_PECOFFF_IMAGE_PROTOCOL { PXT_PECOFF_GET_ENTRY_POINT GetEntryPoint; PXT_PECOFF_GET_MACHINE_TYPE GetMachineType; PXT_PECOFF_GET_SUBSYSTEM GetSubSystem; PXT_PECOFF_LOAD_IMAGE Load; PXT_PECOFF_RELOCATE_IMAGE Relocate; } XT_PECOFF_IMAGE_PROTOCOL, *PXT_PECOFF_IMAGE_PROTOCOL; #endif /* __XTLDR_BLMOD_H */