diff --git a/sdk/xtdk/bltypes.h b/sdk/xtdk/bltypes.h index 58a3e84..5b739a1 100644 --- a/sdk/xtdk/bltypes.h +++ b/sdk/xtdk/bltypes.h @@ -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 */ @@ -10,8 +10,10 @@ #define __XTDK_BLTYPES_H #include +#include #include #include +#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 */ diff --git a/xtldr/includes/xtldr.h b/xtldr/includes/xtldr.h index e777b13..390e69e 100644 --- a/xtldr/includes/xtldr.h +++ b/xtldr/includes/xtldr.h @@ -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 diff --git a/xtldr/memory.c b/xtldr/memory.c index f56a9e2..79d1101 100644 --- a/xtldr/memory.c +++ b/xtldr/memory.c @@ -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; } /** diff --git a/xtldr/modules/xtos_o/xtos.c b/xtldr/modules/xtos_o/xtos.c index cf7da62..7459b23 100644 --- a/xtldr/modules/xtos_o/xtos.c +++ b/xtldr/modules/xtos_o/xtos.c @@ -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);