From 43c16d054dcc8ab4ab74bd0f875b8e60a23bff1c Mon Sep 17 00:00:00 2001 From: belliash Date: Wed, 7 Dec 2022 18:54:21 +0100 Subject: [PATCH] Use PVOID instead of HARDWARE_PTE to allow different variable types for different architectures --- xtldr/amd64/memory.c | 12 ++++++------ xtldr/i686/memory.c | 2 +- xtldr/includes/xtbl.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/xtldr/amd64/memory.c b/xtldr/amd64/memory.c index f0c4dab5..5f779258 100644 --- a/xtldr/amd64/memory.c +++ b/xtldr/amd64/memory.c @@ -36,7 +36,7 @@ BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, IN UINT_PTR PhysicalAddress, IN UINT NumberOfPages, - IN OUT PHARDWARE_PTE *PtePointer) + IN OUT PVOID *PtePointer) { PHARDWARE_PTE PageDirectoryPointTable, PageDirectory, PageTable; UINT Pml4Index, PdpIndex, PdIndex, PtIndex; @@ -58,7 +58,7 @@ BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, PtIndex = (VirtualAddress >> 12) & 0x1FF; /* Validate Page Map Level 4 (PML4) */ - if(!(*PtePointer)[Pml4Index].Valid) + if(!((PHARDWARE_PTE)(*PtePointer))[Pml4Index].Valid) { /* Allocate pages for the PDPT */ Status = BlEfiMemoryAllocatePages(1, &Address); @@ -78,15 +78,15 @@ BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, RtlZeroMemory((PVOID)(UINT_PTR)Address, EFI_PAGE_SIZE); /* Set paging entry setting */ - (*PtePointer)[Pml4Index].PageFrameNumber = Address / EFI_PAGE_SIZE; - (*PtePointer)[Pml4Index].Valid = 1; - (*PtePointer)[Pml4Index].Write = 1; + ((PHARDWARE_PTE)(*PtePointer))[Pml4Index].PageFrameNumber = Address / EFI_PAGE_SIZE; + ((PHARDWARE_PTE)(*PtePointer))[Pml4Index].Valid = 1; + ((PHARDWARE_PTE)(*PtePointer))[Pml4Index].Write = 1; PageDirectoryPointTable = (PHARDWARE_PTE)(UINT_PTR)Address; } else { /* Find Page Directory Point Table (PDPT) */ - Pointer = (*PtePointer)[Pml4Index].PageFrameNumber; + Pointer = ((PHARDWARE_PTE)(*PtePointer))[Pml4Index].PageFrameNumber; Pointer <<= EFI_PAGE_SHIFT; PageDirectoryPointTable = (PHARDWARE_PTE)(UINT_PTR)Pointer; } diff --git a/xtldr/i686/memory.c b/xtldr/i686/memory.c index 5ed6a1be..3e809503 100644 --- a/xtldr/i686/memory.c +++ b/xtldr/i686/memory.c @@ -36,7 +36,7 @@ BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, IN UINT_PTR PhysicalAddress, IN UINT NumberOfPages, - IN OUT PHARDWARE_PTE *PtePointer) + IN OUT PVOID *PtePointer) { return STATUS_EFI_SUCCESS; } diff --git a/xtldr/includes/xtbl.h b/xtldr/includes/xtbl.h index 832f9546..7c19eeeb 100644 --- a/xtldr/includes/xtbl.h +++ b/xtldr/includes/xtbl.h @@ -116,7 +116,7 @@ BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, IN UINT_PTR PhysicalAddress, IN UINT NumberOfPages, - IN OUT PHARDWARE_PTE *PtePointer); + IN OUT PVOID *PtePointer); EFI_STATUS BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,