\r
#define HW_IMAGE_FOOTER_SIGNATURE_1 0x464C5348\r
#define HW_IMAGE_FOOTER_SIGNATURE_2 0x464F4F54\r
+\r
#define HW_IMAGE_FOOTER_VERSION 1\r
#define HW_IMAGE_FOOTER_OFFSET 92\r
\r
+#define HW_IMAGE_FOOTER_VERSION2 2\r
+#define HW_IMAGE_FOOTER_OFFSET2 96\r
+\r
typedef struct {\r
CHAR8 Filename[MAX_NAME_LENGTH];\r
UINT32 Offset;\r
return FALSE;\r
}\r
\r
- if (Ptr->Version != HW_IMAGE_FOOTER_VERSION) {\r
- return FALSE;\r
- }\r
-\r
- if (Ptr->Offset != HW_IMAGE_FOOTER_OFFSET) {\r
+ if (Ptr->Version == HW_IMAGE_FOOTER_VERSION) {\r
+ if (Ptr->Offset != HW_IMAGE_FOOTER_OFFSET) {\r
+ return FALSE;\r
+ }\r
+ } else if (Ptr->Version == HW_IMAGE_FOOTER_VERSION2) {\r
+ if (Ptr->Offset != HW_IMAGE_FOOTER_OFFSET2) {\r
+ return FALSE;\r
+ }\r
+ } else {\r
return FALSE;\r
}\r
\r
Description->BlockEnd = Description->BlockStart + (NewFileSize / BlockSize);\r
Description->Footer.FooterSignature1 = HW_IMAGE_FOOTER_SIGNATURE_1;\r
Description->Footer.FooterSignature2 = HW_IMAGE_FOOTER_SIGNATURE_2;\r
+#ifdef MDE_CPU_ARM\r
Description->Footer.Version = HW_IMAGE_FOOTER_VERSION;\r
Description->Footer.Offset = HW_IMAGE_FOOTER_OFFSET;\r
+#else\r
+ Description->Footer.Version = HW_IMAGE_FOOTER_VERSION2;\r
+ Description->Footer.Offset = HW_IMAGE_FOOTER_OFFSET2;\r
+#endif\r
Description->RegionCount = 1;\r
Description->Region[0].Checksum = 0;\r
Description->Region[0].Offset = Description->BlockStart * BlockSize;\r