diff --git a/sdk/xtdk/bltypes.h b/sdk/xtdk/bltypes.h index 719950a..d4a5513 100644 --- a/sdk/xtdk/bltypes.h +++ b/sdk/xtdk/bltypes.h @@ -77,7 +77,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 PVOID *MemoryMapAddress, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize); +typedef VOID (*PBL_INITIALIZE_PAGE_MAP)(OUT PXTBL_PAGE_MAPPING PageMap, 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); @@ -185,7 +185,6 @@ typedef struct _XTBL_PAGE_MAPPING { LIST_ENTRY MemoryMap; PVOID PtePointer; - PVOID MemoryMapAddress; SHORT PageMapLevel; PAGE_SIZE PageSize; } XTBL_PAGE_MAPPING, *PXTBL_PAGE_MAPPING; diff --git a/xtldr/includes/xtldr.h b/xtldr/includes/xtldr.h index 390e69e..55e00b4 100644 --- a/xtldr/includes/xtldr.h +++ b/xtldr/includes/xtldr.h @@ -157,7 +157,6 @@ BlInitializeConsole(); XTCDECL VOID BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap, - IN PVOID *MemoryMapAddress, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize); diff --git a/xtldr/memory.c b/xtldr/memory.c index 3b50942..717c871 100644 --- a/xtldr/memory.c +++ b/xtldr/memory.c @@ -160,9 +160,6 @@ BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap) * @param PageMap * Supplies a pointer to the page mapping structure. * - * @param MemoryMapAddress - * Supplies an address of the mapped virtual memory area. - * * @param PageMapLevel * Specifies a number of of paging structures levels. * @@ -176,7 +173,6 @@ BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap) XTCDECL VOID BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap, - IN PVOID *MemoryMapAddress, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize) { @@ -184,7 +180,6 @@ BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap, RtlInitializeListHead(&PageMap->MemoryMap); /* Set page map size/level and memory map address */ - PageMap->MemoryMapAddress = &MemoryMapAddress; PageMap->PageMapLevel = PageMapLevel; PageMap->PageSize = PageSize; } @@ -195,9 +190,8 @@ BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap, * @param PageMap * Supplies a pointer to the page mapping structure. * - * @param DesiredVirtualAddress - * Supplies a desired virtual address, where EFI memory will be mapped. - * If not specified, memory map address will be used. + * @param MemoryMapAddress + * Supplies a virtual address, where EFI memory will be mapped. * * @return This routine returns a status code. * @@ -206,7 +200,7 @@ BlInitializePageMap(OUT PXTBL_PAGE_MAPPING PageMap, XTCDECL EFI_STATUS BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap, - IN OUT PVOID *DesiredVirtualAddress) + IN OUT PVOID *MemoryMapAddress) { PEFI_MEMORY_DESCRIPTOR Descriptor; LOADER_MEMORY_TYPE MemoryType; @@ -216,17 +210,8 @@ BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap, EFI_STATUS Status; SIZE_T Index; - /* Set initial virtual address */ - if(*DesiredVirtualAddress != NULL) - { - /* Set virtual address as specified in argument */ - VirtualAddress = *DesiredVirtualAddress; - } - else - { - /* Otherwise, set virtual address as specified in page map */ - VirtualAddress = PageMap->MemoryMapAddress; - } + /* Set virtual address as specified in argument */ + VirtualAddress = *MemoryMapAddress; /* Allocate and zero-fill buffer for EFI memory map */ BlAllocateMemoryPool(sizeof(EFI_MEMORY_MAP), (PVOID*)&MemoryMap); @@ -288,7 +273,8 @@ BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap, } } - /* Return success */ + /* Store next valid virtual address and return success */ + *MemoryMapAddress = VirtualAddress; return STATUS_EFI_SUCCESS; } diff --git a/xtldr/modules/xtos_o/xtos.c b/xtldr/modules/xtos_o/xtos.c index a1f6f10..050ec95 100644 --- a/xtldr/modules/xtos_o/xtos.c +++ b/xtldr/modules/xtos_o/xtos.c @@ -191,9 +191,9 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir, VirtualAddress = (PVOID)(KSEG0_BASE + KSEG0_KERNEL_BASE); /* Initialize virtual memory mappings */ - XtLdrProtocol->Memory.InitializePageMap(&PageMap, &VirtualMemoryArea, 3, Size4K); + XtLdrProtocol->Memory.InitializePageMap(&PageMap, 3, Size4K); - Status = XtLdrProtocol->Memory.MapEfiMemory(&PageMap, NULL); + Status = XtLdrProtocol->Memory.MapEfiMemory(&PageMap, &VirtualMemoryArea); if(Status != STATUS_EFI_SUCCESS) { return Status;