[FREELDR]: Use PaToVa to set the Hive and NLS data pointers, instead of assuming that KSEG0_BASE | Pa is the correct answer for all architectures.

svn path=/trunk/; revision=49754
This commit is contained in:
Sir Richard 2010-11-23 17:26:31 +00:00
parent 3cba3193a4
commit 15696106fe

View file

@ -88,7 +88,7 @@ WinLdrLoadSystemHive(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
}
/* Convert address to virtual */
HiveDataVirtual = (PVOID)(KSEG0_BASE | HiveDataPhysical);
HiveDataVirtual = PaToVa((PVOID)HiveDataPhysical);
/* Fill LoaderBlock's entries */
LoaderBlock->RegistryLength = HiveFileSize;
@ -379,7 +379,7 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
if (NlsDataBase == 0)
goto Failure;
NlsVirtual = (PVOID)(KSEG0_BASE | NlsDataBase);
NlsVirtual = PaToVa((PVOID)NlsDataBase);
LoaderBlock->NlsData->AnsiCodePageData = NlsVirtual;
LoaderBlock->NlsData->OemCodePageData = (PVOID)((PUCHAR)NlsVirtual +
(MM_SIZE_TO_PAGES(AnsiFileSize) << MM_PAGE_SHIFT));