UINT32 RealModeBufferSize;\r
UINT32 ExtraStackSize;\r
EFI_PHYSICAL_ADDRESS LegacyRegionBase;\r
- \r
+ UINT32 LegacyRegionSize;\r
//\r
// Get LegacyRegion\r
//\r
AsmGetThunk16Properties (&RealModeBufferSize, &ExtraStackSize);\r
-\r
+ LegacyRegionSize = (((RealModeBufferSize + ExtraStackSize) / EFI_PAGE_SIZE) + 1) * EFI_PAGE_SIZE;\r
LegacyRegionBase = 0x100000;\r
Status = gBS->AllocatePages (\r
AllocateMaxAddress,\r
EfiACPIMemoryNVS,\r
- EFI_SIZE_TO_PAGES(RealModeBufferSize + ExtraStackSize + 200),\r
+ EFI_SIZE_TO_PAGES(LegacyRegionSize),\r
&LegacyRegionBase\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
ThunkContext->RealModeBuffer = (VOID*)(UINTN)LegacyRegionBase;\r
- ThunkContext->RealModeBufferSize = EFI_PAGES_TO_SIZE (RealModeBufferSize);\r
- ThunkContext->ThunkAttributes = 3;\r
+ ThunkContext->RealModeBufferSize = LegacyRegionSize;\r
+ ThunkContext->ThunkAttributes = THUNK_ATTRIBUTE_BIG_REAL_MODE|THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15;\r
AsmPrepareThunk16(ThunkContext);\r
- \r
}\r
\r
/**\r