\r
#include <PiPei.h>\r
\r
+#include <Library/CacheMaintenanceLib.h>\r
#include <Library/DebugAgentLib.h>\r
#include <Library/PrePiLib.h>\r
#include <Library/PrintLib.h>\r
#include "PrePi.h"\r
\r
#define IS_XIP() (((UINT64)FixedPcdGet64 (PcdFdBaseAddress) > mSystemMemoryEnd) || \\r
- ((FixedPcdGet64 (PcdFdBaseAddress) + FixedPcdGet32 (PcdFdSize)) < FixedPcdGet64 (PcdSystemMemoryBase)))\r
+ ((FixedPcdGet64 (PcdFdBaseAddress) + FixedPcdGet32 (PcdFdSize)) <= FixedPcdGet64 (PcdSystemMemoryBase)))\r
\r
UINT64 mSystemMemoryEnd = FixedPcdGet64(PcdSystemMemoryBase) +\r
FixedPcdGet64(PcdSystemMemorySize) - 1;\r
\r
// Data Cache enabled on Primary core when MMU is enabled.\r
ArmDisableDataCache ();\r
- // Invalidate Data cache\r
- ArmInvalidateDataCache ();\r
// Invalidate instruction cache\r
ArmInvalidateInstructionCache ();\r
// Enable Instruction Caches on all cores.\r
ArmCallSEV ();\r
}\r
} else {\r
- // Wait the Primay core has defined the address of the Global Variable region (event: ARM_CPU_EVENT_DEFAULT)\r
+ // Wait the Primary core has defined the address of the Global Variable region (event: ARM_CPU_EVENT_DEFAULT)\r
ArmCallWFE ();\r
}\r
}\r
\r
// If not primary Jump to Secondary Main\r
if (ArmPlatformIsPrimaryCore (MpId)) {\r
+\r
+ InvalidateDataCacheRange ((VOID *)UefiMemoryBase,\r
+ FixedPcdGet32 (PcdSystemMemoryUefiRegionSize));\r
+\r
// Goto primary Main.\r
PrimaryMain (UefiMemoryBase, StacksBase, StartTimeStamp);\r
} else {\r
// DXE Core should always load and never return\r
ASSERT (FALSE);\r
}\r
-\r