forked from xt-sys/exectos
95 lines
3.5 KiB
C
95 lines
3.5 KiB
C
/**
|
|
* 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 <belliash@codingworkshop.eu.org>
|
|
*/
|
|
|
|
#ifndef __XTLDR_BLMOD_H
|
|
#define __XTLDR_BLMOD_H
|
|
|
|
#include <xtkmapi.h>
|
|
#include <bldefs.h>
|
|
#include <blproto.h>
|
|
|
|
|
|
/* 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 */
|