Reactos

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

authored by

Denis Malikov and committed by
Thomas Faber
4ea57097 4e32ad36

+51 -4
+5
hal/halx86/acpi/busemul.c
··· 26 26 27 27 /* Register memory functions */ 28 28 #ifndef _MINIHAL_ 29 + #if (NTDDI_VERSION >= NTDDI_VISTA) 30 + KdMapPhysicalMemory64 = HalpMapPhysicalMemory64Vista; 31 + KdUnmapVirtualAddress = HalpUnmapVirtualAddressVista; 32 + #else 29 33 KdMapPhysicalMemory64 = HalpMapPhysicalMemory64; 30 34 KdUnmapVirtualAddress = HalpUnmapVirtualAddress; 35 + #endif 31 36 #endif 32 37 33 38 /* Register ACPI stub */
+25 -4
hal/halx86/generic/memory.c
··· 140 140 HalpMapPhysicalMemory64(IN PHYSICAL_ADDRESS PhysicalAddress, 141 141 IN PFN_COUNT PageCount) 142 142 { 143 + return HalpMapPhysicalMemory64Vista(PhysicalAddress, PageCount, TRUE); 144 + } 145 + 146 + VOID 147 + NTAPI 148 + HalpUnmapVirtualAddress(IN PVOID VirtualAddress, 149 + IN PFN_COUNT PageCount) 150 + { 151 + HalpUnmapVirtualAddressVista(VirtualAddress, PageCount, TRUE); 152 + } 153 + 154 + PVOID 155 + NTAPI 156 + HalpMapPhysicalMemory64Vista(IN PHYSICAL_ADDRESS PhysicalAddress, 157 + IN PFN_COUNT PageCount, 158 + IN BOOLEAN FlushCurrentTLB) 159 + { 143 160 PHARDWARE_PTE PointerPte; 144 161 PFN_NUMBER UsedPages = 0; 145 162 PVOID VirtualAddress, BaseAddress; ··· 199 216 } 200 217 201 218 /* Flush the TLB and return the address */ 202 - HalpFlushTLB(); 219 + if (FlushCurrentTLB) 220 + HalpFlushTLB(); 221 + 203 222 return VirtualAddress; 204 223 } 205 224 206 225 VOID 207 226 NTAPI 208 - HalpUnmapVirtualAddress(IN PVOID VirtualAddress, 209 - IN PFN_COUNT PageCount) 227 + HalpUnmapVirtualAddressVista(IN PVOID VirtualAddress, 228 + IN PFN_COUNT PageCount, 229 + IN BOOLEAN FlushCurrentTLB) 210 230 { 211 231 PHARDWARE_PTE PointerPte; 212 232 ULONG i; ··· 226 246 } 227 247 228 248 /* Flush the TLB */ 229 - HalpFlushTLB(); 249 + if (FlushCurrentTLB) 250 + HalpFlushTLB(); 230 251 231 252 /* Put the heap back */ 232 253 if (HalpHeapStart > VirtualAddress) HalpHeapStart = VirtualAddress;
+16
hal/halx86/include/halp.h
··· 648 648 649 649 PVOID 650 650 NTAPI 651 + HalpMapPhysicalMemory64Vista( 652 + IN PHYSICAL_ADDRESS PhysicalAddress, 653 + IN PFN_COUNT PageCount, 654 + IN BOOLEAN FlushCurrentTLB 655 + ); 656 + 657 + VOID 658 + NTAPI 659 + HalpUnmapVirtualAddressVista( 660 + IN PVOID VirtualAddress, 661 + IN PFN_COUNT NumberPages, 662 + IN BOOLEAN FlushCurrentTLB 663 + ); 664 + 665 + PVOID 666 + NTAPI 651 667 HalpMapPhysicalMemory64( 652 668 IN PHYSICAL_ADDRESS PhysicalAddress, 653 669 IN PFN_COUNT PageCount
+5
hal/halx86/legacy/bussupp.c
··· 1228 1228 1229 1229 /* Register memory functions */ 1230 1230 #ifndef _MINIHAL_ 1231 + #if (NTDDI_VERSION >= NTDDI_VISTA) 1232 + KdMapPhysicalMemory64 = HalpMapPhysicalMemory64Vista; 1233 + KdUnmapVirtualAddress = HalpUnmapVirtualAddressVista; 1234 + #else 1231 1235 KdMapPhysicalMemory64 = HalpMapPhysicalMemory64; 1232 1236 KdUnmapVirtualAddress = HalpUnmapVirtualAddress; 1237 + #endif 1233 1238 #endif 1234 1239 1235 1240 /* Register ACPI stub */