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,