Refactor MMU for multi-paging support and add 5-Level paging #16
@ -63,6 +63,9 @@
|
|||||||
/* Maximum physical address used by HAL allocations */
|
/* Maximum physical address used by HAL allocations */
|
||||||
#define MM_MAXIMUM_PHYSICAL_ADDRESS 0x00000000FFFFFFFFULL
|
#define MM_MAXIMUM_PHYSICAL_ADDRESS 0x00000000FFFFFFFFULL
|
||||||
|
|
||||||
|
/* Trampoline code address */
|
||||||
|
#define MM_TRAMPOLINE_ADDRESS 0x80000
|
||||||
|
|
||||||
/* Page size enumeration list */
|
/* Page size enumeration list */
|
||||||
typedef enum _PAGE_SIZE
|
typedef enum _PAGE_SIZE
|
||||||
{
|
{
|
||||||
|
@ -53,6 +53,8 @@
|
|||||||
/* Maximum physical address used by HAL allocations */
|
/* Maximum physical address used by HAL allocations */
|
||||||
#define MM_MAXIMUM_PHYSICAL_ADDRESS 0xFFFFFFFF
|
#define MM_MAXIMUM_PHYSICAL_ADDRESS 0xFFFFFFFF
|
||||||
|
|
||||||
|
/* Trampoline code address */
|
||||||
|
#define MM_TRAMPOLINE_ADDRESS 0x80000
|
||||||
|
|
||||||
/* Page size enumeration list */
|
/* Page size enumeration list */
|
||||||
typedef enum _PAGE_SIZE
|
typedef enum _PAGE_SIZE
|
||||||
|
@ -54,6 +54,15 @@ BlBuildPageMap(IN PXTBL_PAGE_MAPPING PageMap,
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Map the trampoline code area */
|
||||||
|
Status = BlMapVirtualMemory(PageMap, (PVOID)MM_TRAMPOLINE_ADDRESS,(PVOID)MM_TRAMPOLINE_ADDRESS,
|
||||||
|
1, LoaderFirmwareTemporary);
|
||||||
|
if(Status != STATUS_EFI_SUCCESS)
|
||||||
|
{
|
||||||
|
/* Mapping trampoline code failed */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get list of XTLDR modules */
|
/* Get list of XTLDR modules */
|
||||||
ModulesList = BlGetModulesList();
|
ModulesList = BlGetModulesList();
|
||||||
ModulesListEntry = ModulesList->Flink;
|
ModulesListEntry = ModulesList->Flink;
|
||||||
|
@ -90,6 +90,15 @@ BlBuildPageMap(IN PXTBL_PAGE_MAPPING PageMap,
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Map the trampoline code area */
|
||||||
|
Status = BlMapVirtualMemory(PageMap, (PVOID)MM_TRAMPOLINE_ADDRESS,(PVOID)MM_TRAMPOLINE_ADDRESS,
|
||||||
|
1, LoaderFirmwareTemporary);
|
||||||
|
if(Status != STATUS_EFI_SUCCESS)
|
||||||
|
{
|
||||||
|
/* Mapping trampoline code failed */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get list of XTLDR modules */
|
/* Get list of XTLDR modules */
|
||||||
ModulesList = BlGetModulesList();
|
ModulesList = BlGetModulesList();
|
||||||
ModulesListEntry = ModulesList->Flink;
|
ModulesListEntry = ModulesList->Flink;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user