#define IMAGE_FILE_MACHINE_IA64 0x0200\r
#define IMAGE_FILE_MACHINE_EBC 0x0EBC\r
#define IMAGE_FILE_MACHINE_X64 0x8664\r
-//\r
-// Support old names for backward compatible\r
-//\r
-#define EFI_IMAGE_MACHINE_IA32 IMAGE_FILE_MACHINE_I386 \r
-#define EFI_IMAGE_MACHINE_IA64 IMAGE_FILE_MACHINE_IA64 \r
-#define EFI_IMAGE_MACHINE_IPF IMAGE_FILE_MACHINE_IA64 \r
-#define EFI_IMAGE_MACHINE_EBC IMAGE_FILE_MACHINE_EBC \r
-#define EFI_IMAGE_MACHINE_X64 IMAGE_FILE_MACHINE_X64\r
\r
//\r
// EXE file formats\r
#define EFI_IMAGE_FILE_DLL BIT13 ///< 0x2000 File is a DLL.\r
#define EFI_IMAGE_FILE_BYTES_REVERSED_HI BIT15 ///< 0x8000 Bytes of machine word are reversed.\r
\r
-//\r
-// Other Machine Types\r
-//\r
-#define EFI_IMAGE_FILE_MACHINE_UNKNOWN 0 ///< Any machine type\r
-#define EFI_IMAGE_FILE_MACHINE_I386 0x14c ///< Intel 386.\r
-#define EFI_IMAGE_FILE_MACHINE_R3000 0x162 ///< MIPS* little-endian, 0540 big-endian\r
-#define EFI_IMAGE_FILE_MACHINE_R4000 0x166 ///< MIPS* little-endian\r
-#define EFI_IMAGE_FILE_MACHINE_POWERPC 0x1F0 ///< IBM* PowerPC Little-Endian\r
-//\r
-// * Other names and brands may be claimed as the property of others.\r
-//\r
-\r
///\r
/// Header Data Directories\r
///\r
///\r
/// @attention\r
/// EFI_IMAGE_NT_HEADERS32 is for use ONLY by tools.\r
-/// All proper EFI code MUST use EFI_IMAGE_NT_HEADERS ONLY!!!\r
///\r
typedef struct {\r
UINT32 Signature;\r
///\r
/// @attention\r
/// EFI_IMAGE_HEADERS64 is for use ONLY by tools.\r
-/// All proper EFI code MUST use EFI_IMAGE_NT_HEADERS ONLY!!!\r
///\r
typedef struct {\r
UINT32 Signature;\r
\r
#define EFI_IMAGE_SIZEOF_NT_OPTIONAL64_HEADER sizeof (EFI_IMAGE_NT_HEADERS64)\r
\r
-\r
-///\r
-/// Processor specific definition of EFI_IMAGE_OPTIONAL_HEADER so the\r
-/// type name EFI_IMAGE_OPTIONAL_HEADER is appropriate to the build. Same for\r
-/// EFI_IMAGE_NT_HEADERS. These definitions MUST be used by ALL EFI code.\r
-///\r
-#if defined (MDE_CPU_IA32)\r
-\r
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
- (((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
-\r
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64) \r
-\r
-typedef EFI_IMAGE_NT_HEADERS32 EFI_IMAGE_NT_HEADERS;\r
-\r
-#elif defined (MDE_CPU_IPF)\r
-\r
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
- (((Machine) == EFI_IMAGE_MACHINE_IPF) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
-\r
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) \r
-\r
-typedef EFI_IMAGE_NT_HEADERS64 EFI_IMAGE_NT_HEADERS;\r
-\r
-#elif defined (MDE_CPU_X64)\r
-\r
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
- (((Machine) == EFI_IMAGE_MACHINE_X64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
-\r
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32) \r
-\r
-typedef EFI_IMAGE_NT_HEADERS64 EFI_IMAGE_NT_HEADERS;\r
-\r
-#elif defined (MDE_CPU_EBC)\r
-\r
-///\r
-/// This is just to make sure you can cross compile with the EBC compiiler.\r
-/// It does not make sense to have a PE loader coded in EBC. You need to \r
-/// understand the basic \r
-///\r
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)\r
-\r
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) \r
-\r
-typedef EFI_IMAGE_NT_HEADERS64 EFI_IMAGE_NT_HEADERS;\r
-\r
-#else\r
-#error Unknown Processor Type\r
-#endif\r
-\r
-\r
-#define EFI_IMAGE_FIRST_SECTION(ntheader) \\r
- ( \\r
- (EFI_IMAGE_SECTION_HEADER *) \\r
- ( \\r
- (UINT32) ntheader + \\r
- OFFSET_OF (EFI_IMAGE_NT_HEADERS, OptionalHeader) + \\r
- ((EFI_IMAGE_NT_HEADERS *) (ntheader))->FileHeader.SizeOfOptionalHeader \\r
- ) \\r
- )\r
-\r
//\r
// Other Windows Subsystem Values\r
//\r
///\r
#define ISO_639_2_ENTRY_SIZE 3\r
\r
+///\r
+/// PE32+ Machine type for IA32 UEFI images\r
+///\r
+#define EFI_IMAGE_MACHINE_IA32 0x014C\r
+\r
+///\r
+/// PE32+ Machine type for IA64 UEFI images\r
+///\r
+#define EFI_IMAGE_MACHINE_IA64 0x0200\r
+\r
+///\r
+/// PE32+ Machine type for EBC UEFI images\r
+///\r
+#define EFI_IMAGE_MACHINE_EBC 0x0EBC\r
+\r
+///\r
+/// PE32+ Machine type for X64 UEFI images\r
+///\r
+#define EFI_IMAGE_MACHINE_X64 0x8664\r
+\r
+\r
+#if defined (MDE_CPU_IA32)\r
+\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+ (((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64) \r
+\r
+#elif defined (MDE_CPU_IPF)\r
+\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+ (((Machine) == EFI_IMAGE_MACHINE_IA64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) \r
+\r
+#elif defined (MDE_CPU_X64)\r
+\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \\r
+ (((Machine) == EFI_IMAGE_MACHINE_X64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))\r
+\r
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32) \r
+\r
+#elif defined (MDE_CPU_EBC)\r
+\r
+///\r
+/// This is just to make sure you can cross compile with the EBC compiiler.\r
+/// It does not make sense to have a PE loader coded in EBC. You need to \r
+/// understand the basic \r
+///\r
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)\r
+\r
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) \r
+\r
+#else\r
+#error Unknown Processor Type\r
+#endif\r
\r
#endif\r
// generate PE32+ image with PE32 Magic.\r
//\r
switch (Hdr.Pe32->FileHeader.Machine) {\r
- case EFI_IMAGE_MACHINE_IA32:\r
+ case IMAGE_FILE_MACHINE_I386:\r
//\r
// Assume PE32 image with IA32 Machine field.\r
//\r
Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC;\r
break;\r
- case EFI_IMAGE_MACHINE_X64:\r
- case EFI_IMAGE_MACHINE_IPF:\r
+ case IMAGE_FILE_MACHINE_X64:\r
+ case IMAGE_FILE_MACHINE_IA64:\r
//\r
- // Assume PE32+ image with x64 or IPF Machine field\r
+ // Assume PE32+ image with x64 or IA64 Machine field\r
//\r
Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;\r
break;\r