VOID* MemoryBuffer;\r
\r
Private = PEI_CORE_INSTANCE_FROM_PS_THIS (GetPeiServicesTablePointer ());\r
-\r
- if (!Private->PeiMemoryInstalled || (Private->HobList.HandoffInformationTable->BootMode == BOOT_ON_S3_RESUME) || \r
- EFI_IMAGE_MACHINE_TYPE_SUPPORTED(EFI_IMAGE_MACHINE_IA64) || EFI_IMAGE_MACHINE_TYPE_SUPPORTED(EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)) {\r
- //\r
- // Point to ROM version if memory is not installed, we are in an S3.\r
- // The shadow code is not ANSI C so skip on IA64 and ARM architectures. \r
+ \r
+ if ((Private->PeiMemoryInstalled && !(Private->HobList.HandoffInformationTable->BootMode == BOOT_ON_S3_RESUME)) &&\r
+ (EFI_IMAGE_MACHINE_TYPE_SUPPORTED(EFI_IMAGE_MACHINE_X64) || EFI_IMAGE_MACHINE_TYPE_SUPPORTED(EFI_IMAGE_MACHINE_IA32))) {\r
+ // \r
+ // Shadow algorithm makes lots of non ANSI C assumptions and only works for IA32 and X64 \r
+ // compilers that have been tested\r
//\r
- ImageContext->ImageRead = PeiImageRead;\r
- } else {\r
if (Private->ShadowedImageRead == NULL) {\r
MemoryBuffer = AllocatePages (0x400 / EFI_PAGE_SIZE + 1);\r
ASSERT (MemoryBuffer != NULL);\r
}\r
\r
ImageContext->ImageRead = Private->ShadowedImageRead;\r
+ } else {\r
+ ImageContext->ImageRead = PeiImageRead;\r
}\r
\r
return EFI_SUCCESS;\r