@@ -24,7 +24,7 @@ PHARDWARE_PTE PxeBase;
2424//PHARDWARE_PTE HalPageTable;
2525
2626PVOID GdtIdt ;
27- ULONG_PTR PcrBasePage ;
27+ PFN_NUMBER SharedUserDataPfn ;
2828ULONG_PTR TssBasePage ;
2929
3030/* FUNCTIONS **************************************************************/
@@ -246,15 +246,8 @@ WinLdrMapSpecialPages(VOID)
246246{
247247 PHARDWARE_PTE PpeBase , PdeBase ;
248248
249- /* Map the PCR page */
250- if (!MempMapSinglePage (KIP0PCRADDRESS , PcrBasePage * PAGE_SIZE ))
251- {
252- ERR ("Could not map PCR @ %lx\n" , PcrBasePage );
253- return FALSE;
254- }
255-
256249 /* Map KI_USER_SHARED_DATA */
257- if (!MempMapSinglePage (KI_USER_SHARED_DATA , ( PcrBasePage + 1 ) * PAGE_SIZE ))
250+ if (!MempMapSinglePage (KI_USER_SHARED_DATA , SharedUserDataPfn * PAGE_SIZE ))
258251 {
259252 ERR ("Could not map KI_USER_SHARED_DATA\n" );
260253 return FALSE;
@@ -380,22 +373,22 @@ WinLdrSetProcessorContext(
380373
381374void WinLdrSetupMachineDependent (PLOADER_PARAMETER_BLOCK LoaderBlock )
382375{
383- ULONG_PTR Pcr = 0 ;
376+ PVOID SharedUserDataAddress = NULL ;
384377 ULONG_PTR Tss = 0 ;
385378 ULONG BlockSize , NumPages ;
386379
387380 LoaderBlock -> u .I386 .CommonDataArea = (PVOID )DbgPrint ; // HACK
388381 LoaderBlock -> u .I386 .MachineType = MACHINE_TYPE_ISA ;
389382
390- /* Allocate 2 pages for PCR */
391- Pcr = ( ULONG_PTR ) MmAllocateMemoryWithType (2 * MM_PAGE_SIZE , LoaderStartupPcrPage );
392- PcrBasePage = Pcr >> MM_PAGE_SHIFT ;
393- if (Pcr == 0 )
383+ /* Allocate 1 page for SharedUserData */
384+ SharedUserDataAddress = MmAllocateMemoryWithType (MM_PAGE_SIZE , LoaderStartupPcrPage );
385+ SharedUserDataPfn = ( ULONG_PTR ) SharedUserDataAddress >> MM_PAGE_SHIFT ;
386+ if (SharedUserDataAddress == NULL )
394387 {
395- UiMessageBox ("Can't allocate PCR ." );
388+ UiMessageBox ("Can't allocate SharedUserData page ." );
396389 return ;
397390 }
398- RtlZeroMemory (( PVOID ) Pcr , 2 * MM_PAGE_SIZE );
391+ RtlZeroMemory (SharedUserDataAddress , MM_PAGE_SIZE );
399392
400393 /* Allocate TSS */
401394 BlockSize = (sizeof (KTSS ) + MM_PAGE_SIZE ) & ~(MM_PAGE_SIZE - 1 );
@@ -422,7 +415,7 @@ void WinLdrSetupMachineDependent(PLOADER_PARAMETER_BLOCK LoaderBlock)
422415 // FIXME: bugcheck
423416 }
424417
425- /* Map stuff like PCR, KI_USER_SHARED_DATA and Apic */
418+ /* Map KI_USER_SHARED_DATA, Apic and HAL space */
426419 WinLdrMapSpecialPages ();
427420}
428421
0 commit comments