Allow to provide page size during initialization
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 47s
Builds / ExectOS (i686) (push) Successful in 27s

This commit is contained in:
Rafal Kupiec 2024-01-18 14:30:58 +01:00
parent 5acf8b4abd
commit 02f0e34b83
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
4 changed files with 13 additions and 10 deletions

View File

@ -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 */

View File

@ -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

View File

@ -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;
}
/**

View File

@ -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);