Allow to provide page size during initialization
This commit is contained in:
parent
5acf8b4abd
commit
02f0e34b83
@ -2,7 +2,7 @@
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: sdk/xtdk/bltypes.h
|
||||
* DESCRIPTION: XT Boot Manager structures definitions
|
||||
* DESCRIPTION: XT Boot Loader structures definitions
|
||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||
*/
|
||||
|
||||
@ -10,8 +10,10 @@
|
||||
#define __XTDK_BLTYPES_H
|
||||
|
||||
#include <xttypes.h>
|
||||
#include <xtstruct.h>
|
||||
#include <xtuefi.h>
|
||||
#include <hltypes.h>
|
||||
#include ARCH_HEADER(xtstruct.h)
|
||||
|
||||
|
||||
/* Architecture specific definitions */
|
||||
@ -92,7 +94,7 @@ typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory);
|
||||
typedef EFI_STATUS (*PBL_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap);
|
||||
typedef PLIST_ENTRY (*PBL_GET_MODULES_LIST)();
|
||||
typedef INT_PTR (*PBL_GET_SECURE_BOOT_STATUS)();
|
||||
typedef VOID (*PBL_INITIALIZE_PAGE_MAP)(OUT PXTBL_PAGE_MAPPING PageMap, IN SHORT PageMapLevel, IN PVOID *MemoryMapAddress);
|
||||
typedef VOID (*PBL_INITIALIZE_PAGE_MAP)(OUT PXTBL_PAGE_MAPPING PageMap, IN PVOID *MemoryMapAddress, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize);
|
||||
typedef EFI_STATUS (*PBL_INSTALL_XT_PROTOCOL)(IN PVOID Interface, IN PEFI_GUID Guid);
|
||||
typedef EFI_STATUS (*PBL_INVOKE_BOOT_PROTOCOL)(IN PLIST_ENTRY OptionsList);
|
||||
typedef EFI_STATUS (*PBL_LOCATE_PROTOCOL_HANDLES)(OUT PEFI_HANDLE *Handles, OUT PUINT_PTR Count, IN PEFI_GUID ProtocolGuid);
|
||||
@ -202,6 +204,7 @@ typedef struct _XTBL_PAGE_MAPPING
|
||||
PVOID PtePointer;
|
||||
PVOID MemoryMapAddress;
|
||||
SHORT PageMapLevel;
|
||||
PAGE_SIZE PageSize;
|
||||
} XTBL_PAGE_MAPPING, *PXTBL_PAGE_MAPPING;
|
||||
|
||||
/* XTLDR Status data */
|
||||
|
@ -157,8 +157,9 @@ BlInitializeConsole();
|
||||
XTCDECL
|
||||
VOID
|
||||
BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap,
|
||||
IN PVOID *MemoryMapAddress,
|
||||
IN SHORT PageMapLevel,
|
||||
IN PVOID *MemoryMapAddress);
|
||||
IN PAGE_SIZE PageSize);
|
||||
|
||||
XTCDECL
|
||||
EFI_STATUS
|
||||
|
@ -173,15 +173,17 @@ BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap)
|
||||
XTCDECL
|
||||
VOID
|
||||
BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap,
|
||||
IN PVOID *MemoryMapAddress,
|
||||
IN SHORT PageMapLevel,
|
||||
IN PVOID *MemoryMapAddress)
|
||||
IN PAGE_SIZE PageSize)
|
||||
{
|
||||
/* Initialize memory mappings */
|
||||
RtlInitializeListHead(&PageMap->MemoryMap);
|
||||
|
||||
/* Set page map level and memory map address */
|
||||
PageMap->PageMapLevel = PageMapLevel;
|
||||
/* Set page map size/level and memory map address */
|
||||
PageMap->MemoryMapAddress = &MemoryMapAddress;
|
||||
PageMap->PageMapLevel = PageMapLevel;
|
||||
PageMap->PageSize = PageSize;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -186,21 +186,18 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir,
|
||||
/* Initialize XTOS startup sequence */
|
||||
XtLdrProtocol->Debug.Print(L"Initializing XTOS startup sequence\n");
|
||||
|
||||
XtLdrProtocol->Debug.Print(L"DUPA1\n");
|
||||
/* Set base virtual memory area for the kernel mappings */
|
||||
VirtualMemoryArea = (PVOID)KSEG0_BASE;
|
||||
VirtualAddress = (PVOID)(KSEG0_BASE + KSEG0_KERNEL_BASE);
|
||||
|
||||
/* Initialize virtual memory mappings */
|
||||
XtLdrProtocol->Memory.InitializePageMap(&PageMap, 3, VirtualMemoryArea);
|
||||
XtLdrProtocol->Debug.Print(L"DUPA2\n");
|
||||
XtLdrProtocol->Memory.InitializePageMap(&PageMap, VirtualMemoryArea, 3, Size4K);
|
||||
|
||||
Status = XtLdrProtocol->Memory.MapEfiMemory(&PageMap, NULL);
|
||||
if(Status != STATUS_EFI_SUCCESS)
|
||||
{
|
||||
return Status;
|
||||
}
|
||||
XtLdrProtocol->Debug.Print(L"DUPA3\n");
|
||||
|
||||
/* Load the kernel */
|
||||
Status = XtpLoadModule(BootDir, Parameters->KernelFile, VirtualAddress, LoaderSystemCode, &ImageContext);
|
||||
|
Loading…
Reference in New Issue
Block a user