[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
No known key found for this signature in database
GPG key ID: 076E7C3D44720826
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 */