+ if (FvDevice->IsMemoryMapped) {\r
+ //\r
+ // Memory mapped FV has not been cached, so here is to cache by file.\r
+ //\r
+ if (!FvDevice->LastKey->FileCached) {\r
+ //\r
+ // Cache FFS file to memory buffer.\r
+ //\r
+ WholeFileSize = IS_FFS_FILE2 (FfsHeader) ? FFS_FILE2_SIZE (FfsHeader) : FFS_FILE_SIZE (FfsHeader);\r
+ FfsHeader = AllocateCopyPool (WholeFileSize, FfsHeader);\r
+ if (FfsHeader == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ //\r
+ // Let FfsHeader in FfsFileEntry point to the cached file buffer.\r
+ //\r
+ FvDevice->LastKey->FfsHeader = FfsHeader;\r
+ FvDevice->LastKey->FileCached = TRUE;\r
+ }\r
+ }\r