On 06.04.18 01:03, Heinrich Schuchardt wrote: > On 04/06/2018 12:43 AM, Alexander Graf wrote: >> >> >> On 05.04.18 23:28, Ivan Gorinov wrote: >>> Check FileHeader.Machine to make sure the EFI executable image is built >>> for the same architecture. For example, 32-bit U-Boot on x86 will print >>> an error message instead of loading an x86_64 image and crashing. >>> >>> Signed-off-by: Ivan Gorinov <ivan.gori...@intel.com> >>> --- >>> include/pe.h | 24 ++++++++++++++++++++++++ >>> lib/efi_loader/efi_image_loader.c | 24 ++++++++++++------------ >>> 2 files changed, 36 insertions(+), 12 deletions(-) >>> >>> diff --git a/include/pe.h b/include/pe.h >>> index c3a19ce..0dc33f0 100644 >>> --- a/include/pe.h >>> +++ b/include/pe.h >>> @@ -38,11 +38,35 @@ typedef struct _IMAGE_DOS_HEADER { >>> #define IMAGE_DOS_SIGNATURE 0x5A4D /* MZ */ >>> #define IMAGE_NT_SIGNATURE 0x00004550 /* PE00 */ >>> >>> +#define IMAGE_FILE_MACHINE_I386 0x014c >>> #define IMAGE_FILE_MACHINE_ARM 0x01c0 >>> #define IMAGE_FILE_MACHINE_THUMB 0x01c2 >>> #define IMAGE_FILE_MACHINE_ARMNT 0x01c4 >>> #define IMAGE_FILE_MACHINE_AMD64 0x8664 >>> #define IMAGE_FILE_MACHINE_ARM64 0xaa64 >>> +#define IMAGE_FILE_MACHINE_RISCV32 0x5032 >>> +#define IMAGE_FILE_MACHINE_RISCV64 0x5064 >>> + >>> +#if defined(CONFIG_ARM64) >>> +#define TARGET_PE_MACHINE_TYPE IMAGE_FILE_MACHINE_ARM64 >>> +#elif defined(CONFIG_ARM) >>> +#define TARGET_PE_MACHINE_TYPE IMAGE_FILE_MACHINE_THUMB >> >> Are you sure we always have thumb as machine type here? Aren't we >> compatible with either ARM or THUMB? > > The value 0x01c2 means ARM or THUMB > It is used by Linux, GRUB, iPXE.
I'm not sure that's fully accurate. ARM means some old legacy one, but ARMNT and THUMB can both be used, no? https://www.npmjs.com/package/binarycpu What I'm trying to say is that a 1:1 matching might not be the only thing we want. Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot