diff options
-rw-r--r-- | elf_ops.h | 17 | ||||
-rw-r--r-- | target-ppc/cpu.h | 3 |
2 files changed, 16 insertions, 4 deletions
@@ -194,8 +194,21 @@ static int glue(load_elf, SZ)(int fd, int64_t address_offset, glue(bswap_ehdr, SZ)(&ehdr); } - if (ELF_MACHINE != ehdr.e_machine) - goto fail; + switch (ELF_MACHINE) { + case EM_PPC64: + if (EM_PPC64 != ehdr.e_machine) + if (EM_PPC != ehdr.e_machine) + goto fail; + break; + case EM_X86_64: + if (EM_X86_64 != ehdr.e_machine) + if (EM_386 != ehdr.e_machine) + goto fail; + break; + default: + if (ELF_MACHINE != ehdr.e_machine) + goto fail; + } if (pentry) *pentry = (uint64_t)(elf_sword)ehdr.e_entry; diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index 77cf6de71e..87b34600ed 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -68,8 +68,7 @@ #define TARGET_HAS_ICE 1 -/* Load a 32 bit BIOS also on 64 bit machines */ -#if defined (TARGET_PPC64) && defined(CONFIG_USER_ONLY) +#if defined (TARGET_PPC64) #define ELF_MACHINE EM_PPC64 #else #define ELF_MACHINE EM_PPC |