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