[HAL] Add NT6-compatible version of HalpMapPhysicalMemory64 and HalpUnmapVirtualAddress

This commit is contained in:
Denis Malikov
2018-02-04 22:59:21 +07:00
committed by Thomas Faber
parent 4e32ad3623
commit 4ea570975c
4 changed files with 51 additions and 4 deletions

View File

@@ -26,8 +26,13 @@ HalpRegisterKdSupportFunctions(VOID)
/* Register memory functions */
#ifndef _MINIHAL_
#if (NTDDI_VERSION >= NTDDI_VISTA)
KdMapPhysicalMemory64 = HalpMapPhysicalMemory64Vista;
KdUnmapVirtualAddress = HalpUnmapVirtualAddressVista;
#else
KdMapPhysicalMemory64 = HalpMapPhysicalMemory64;
KdUnmapVirtualAddress = HalpUnmapVirtualAddress;
#endif
#endif
/* Register ACPI stub */

View File

@@ -139,6 +139,23 @@ PVOID
NTAPI
HalpMapPhysicalMemory64(IN PHYSICAL_ADDRESS PhysicalAddress,
IN PFN_COUNT PageCount)
{
return HalpMapPhysicalMemory64Vista(PhysicalAddress, PageCount, TRUE);
}
VOID
NTAPI
HalpUnmapVirtualAddress(IN PVOID VirtualAddress,
IN PFN_COUNT PageCount)
{
HalpUnmapVirtualAddressVista(VirtualAddress, PageCount, TRUE);
}
PVOID
NTAPI
HalpMapPhysicalMemory64Vista(IN PHYSICAL_ADDRESS PhysicalAddress,
IN PFN_COUNT PageCount,
IN BOOLEAN FlushCurrentTLB)
{
PHARDWARE_PTE PointerPte;
PFN_NUMBER UsedPages = 0;
@@ -199,14 +216,17 @@ HalpMapPhysicalMemory64(IN PHYSICAL_ADDRESS PhysicalAddress,
}
/* Flush the TLB and return the address */
HalpFlushTLB();
if (FlushCurrentTLB)
HalpFlushTLB();
return VirtualAddress;
}
VOID
NTAPI
HalpUnmapVirtualAddress(IN PVOID VirtualAddress,
IN PFN_COUNT PageCount)
HalpUnmapVirtualAddressVista(IN PVOID VirtualAddress,
IN PFN_COUNT PageCount,
IN BOOLEAN FlushCurrentTLB)
{
PHARDWARE_PTE PointerPte;
ULONG i;
@@ -226,7 +246,8 @@ HalpUnmapVirtualAddress(IN PVOID VirtualAddress,
}
/* Flush the TLB */
HalpFlushTLB();
if (FlushCurrentTLB)
HalpFlushTLB();
/* Put the heap back */
if (HalpHeapStart > VirtualAddress) HalpHeapStart = VirtualAddress;

View File

@@ -646,6 +646,22 @@ HalpAllocPhysicalMemory(
IN BOOLEAN Aligned
);
PVOID
NTAPI
HalpMapPhysicalMemory64Vista(
IN PHYSICAL_ADDRESS PhysicalAddress,
IN PFN_COUNT PageCount,
IN BOOLEAN FlushCurrentTLB
);
VOID
NTAPI
HalpUnmapVirtualAddressVista(
IN PVOID VirtualAddress,
IN PFN_COUNT NumberPages,
IN BOOLEAN FlushCurrentTLB
);
PVOID
NTAPI
HalpMapPhysicalMemory64(

View File

@@ -1228,8 +1228,13 @@ HalpRegisterKdSupportFunctions(VOID)
/* Register memory functions */
#ifndef _MINIHAL_
#if (NTDDI_VERSION >= NTDDI_VISTA)
KdMapPhysicalMemory64 = HalpMapPhysicalMemory64Vista;
KdUnmapVirtualAddress = HalpUnmapVirtualAddressVista;
#else
KdMapPhysicalMemory64 = HalpMapPhysicalMemory64;
KdUnmapVirtualAddress = HalpUnmapVirtualAddress;
#endif
#endif
/* Register ACPI stub */