Create new stack and then boot XTOS, export more routines with the loader protocol
Some checks failed
ci/woodpecker/push/build Pipeline failed
Some checks failed
ci/woodpecker/push/build Pipeline failed
This commit is contained in:
@@ -14,10 +14,15 @@
|
||||
|
||||
|
||||
/* 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, 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_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_DESCRIPTOR *MemoryMap, OUT PUINT_PTR MapKey, OUT PUINT_PTR DescriptorSize, OUT PUINT_PTR DescriptorCount);
|
||||
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);
|
||||
@@ -26,10 +31,15 @@ typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, O
|
||||
/* 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_GET_MEMORY_MAP GetMemoryMap;
|
||||
PBL_INIT_VIRTUAL_MEMORY InitializeVirtualMemory;
|
||||
PBL_MAP_VIRTUAL_MEMORY MapVirtualMemory;
|
||||
PBL_GET_STACK GetStack;
|
||||
PBL_DBG_PRINT DbgPrint;
|
||||
PBL_EFI_PRINT EfiPrint;
|
||||
PBL_CLOSE_VOLUME CloseVolume;
|
||||
|
@@ -26,6 +26,9 @@ EXTERN PEFI_SYSTEM_TABLE EfiSystemTable;
|
||||
/* EFI Secure Boot status */
|
||||
EXTERN INT_PTR EfiSecureBoot;
|
||||
|
||||
/* New bootloader stack */
|
||||
EXTERN PVOID EfiLoaderStack;
|
||||
|
||||
/* Serial port configuration */
|
||||
EXTERN CPPORT EfiSerialPort;
|
||||
|
||||
@@ -103,6 +106,8 @@ BlGetMemoryMap(OUT PEFI_MEMORY_DESCRIPTOR *MemoryMap,
|
||||
OUT PUINT_PTR DescriptorSize,
|
||||
OUT PUINT_PTR DescriptorCount);
|
||||
|
||||
VOID BlGetStackPointer(OUT PVOID *Stack);
|
||||
|
||||
EFI_STATUS
|
||||
BlGetVolumeDevicePath(IN PUCHAR SystemPath,
|
||||
OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
@@ -131,6 +136,9 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,
|
||||
EFI_STATUS
|
||||
BlRegisterXtLoaderProtocol();
|
||||
|
||||
EFI_STATUS
|
||||
BlStartNewStack();
|
||||
|
||||
EFI_STATUS
|
||||
BlStartXtLoader(IN EFI_HANDLE ImageHandle,
|
||||
IN PEFI_SYSTEM_TABLE SystemTable);
|
||||
|
Reference in New Issue
Block a user