63 lines
2.8 KiB
C
63 lines
2.8 KiB
C
/**
|
|
* PROJECT: ExectOS
|
|
* COPYRIGHT: See COPYING.md in the top level directory
|
|
* FILE: xtldr/includes/blproto.h
|
|
* DESCRIPTION: XTLDR boot loader protocol support
|
|
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
*/
|
|
|
|
#ifndef __XTLDR_BLPROTO_H
|
|
#define __XTLDR_BLPROTO_H
|
|
|
|
#include <xtkmapi.h>
|
|
#include <bldefs.h>
|
|
|
|
|
|
/* Loader protocol routine pointers */
|
|
typedef EFI_STATUS (*PBL_ADD_VIRTUAL_MEMORY_MAPPING)(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, IN PVOID PhysicalAddress, IN UINT NumberOfPages, IN LOADER_MEMORY_TYPE MemoryType);
|
|
typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory);
|
|
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
|
|
typedef EFI_STATUS (*PBL_ENABLE_PAGING)(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, IN PEFI_LOADED_IMAGE_PROTOCOL ImageProtocol, IN PVOID *PtePointer);
|
|
typedef EFI_STATUS (*PBL_FREE_PAGES)(IN UINT64 Size, IN EFI_PHYSICAL_ADDRESS Memory);
|
|
typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory);
|
|
typedef EFI_STATUS (*PBL_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap);
|
|
typedef EFI_STATUS (*PBL_GET_VIRTUAL_ADDRESS)(IN PLIST_ENTRY MemoryMappings, IN PVOID PhysicalAddress, OUT PVOID *VirtualAddress);
|
|
typedef EFI_STATUS (*PBL_INIT_VIRTUAL_MEMORY)(IN OUT PLIST_ENTRY MemoryMappings, IN OUT PVOID *MemoryMapAddress);
|
|
typedef EFI_STATUS (*PBL_MAP_VIRTUAL_MEMORY)(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, IN UINT_PTR PhysicalAddress, IN UINT NumberOfPages, IN OUT PVOID *PtePointer);
|
|
typedef VOID (*PBL_GET_STACK)(OUT PVOID *Stack);
|
|
typedef VOID (*PBL_DBG_PRINT)(IN PUINT16 Format, IN ...);
|
|
typedef VOID (*PBL_EFI_PRINT)(IN PUINT16 Format, IN ...);
|
|
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
|
|
typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
|
|
|
|
/* EFI XT Boot Loader Protocol */
|
|
typedef struct _XT_BOOT_LOADER_PROTOCOL
|
|
{
|
|
PBL_ADD_VIRTUAL_MEMORY_MAPPING AddVirtualMemoryMapping;
|
|
PBL_ALLOCATE_PAGES AllocatePages;
|
|
PBL_ALLOCATE_POOL AllocatePool;
|
|
PBL_FREE_PAGES FreePages;
|
|
PBL_FREE_POOL FreePool;
|
|
PBL_ENABLE_PAGING EnablePaging;
|
|
PBL_GET_MEMORY_MAP GetMemoryMap;
|
|
PBL_GET_VIRTUAL_ADDRESS GetVirtualAddress;
|
|
PBL_INIT_VIRTUAL_MEMORY InitializeVirtualMemory;
|
|
PBL_MAP_VIRTUAL_MEMORY MapVirtualMemory;
|
|
PBL_DBG_PRINT DbgPrint;
|
|
PBL_EFI_PRINT EfiPrint;
|
|
PBL_CLOSE_VOLUME CloseVolume;
|
|
PBL_OPEN_VOLUME OpenVolume;
|
|
} XT_BOOT_LOADER_PROTOCOL, *PXT_BOOT_LOADER_PROTOCOL;
|
|
|
|
/* Loader protocol related routines forward references */
|
|
XTCDECL
|
|
EFI_STATUS
|
|
BlGetXtLoaderProtocol(OUT PXT_BOOT_LOADER_PROTOCOL *LdrProtocol);
|
|
|
|
XTCDECL
|
|
EFI_STATUS
|
|
BlLoadXtProtocol(OUT PVOID *ProtocolHandler,
|
|
IN PEFI_GUID ProtocolGuid);
|
|
|
|
#endif /* __XTLDR_BLPROTO_H */
|