I'm wondering if the existing behavior is good: what I have understood is we define ppc32 guests in ppc64 target to be able to run 32bit guest with 64bit qemu, but I don't think it means an oldworld mac is able to run a ppc64 kernel.
So I think we could use directly EM_PPC with e500, ppc440, virtex_ml507, prep and oldworld, and EM_PPC64 with pseries/spapr. Newworld mac should be able to run EM_PPC and EM_PPC64 kernel (G3/G4 <-> G5), according to the machine type and not to the target. Laurent On 15/08/2015 16:28, Peter Crosthwaite wrote: > From: Peter Crosthwaite <crosthwaitepe...@gmail.com> > > Rename ELF_MACHINE to be PPC specific. This is used as-is by the > various PPC bootloaders and is locally defined to ELF_MACHINE in linux > user in PPC specific ifdeffery. > > This removes another architecture specific definition from the global > namespace (as desired by multi-arch). > > Cc: Alexander Graf <ag...@suse.de> > Cc: qemu-...@nongnu.org > Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> > --- > hw/ppc/e500.c | 2 +- > hw/ppc/mac_newworld.c | 4 ++-- > hw/ppc/mac_oldworld.c | 4 ++-- > hw/ppc/ppc440_bamboo.c | 2 +- > hw/ppc/prep.c | 2 +- > hw/ppc/spapr.c | 4 ++-- > hw/ppc/virtex_ml507.c | 2 +- > linux-user/elfload.c | 1 + > target-ppc/cpu.h | 4 ++-- > 9 files changed, 13 insertions(+), 12 deletions(-) > > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c > index d300846..8b45bf6 100644 > --- a/hw/ppc/e500.c > +++ b/hw/ppc/e500.c > @@ -1017,7 +1017,7 @@ void ppce500_init(MachineState *machine, PPCE500Params > *params) > filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); > > bios_size = load_elf(filename, NULL, NULL, &bios_entry, &loadaddr, NULL, > - 1, ELF_MACHINE, 0); > + 1, PPC_ELF_MACHINE, 0); > if (bios_size < 0) { > /* > * Hrm. No ELF image? Try a uImage, maybe someone is giving us an > diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c > index 77d5c81..81d744c 100644 > --- a/hw/ppc/mac_newworld.c > +++ b/hw/ppc/mac_newworld.c > @@ -219,7 +219,7 @@ static void ppc_core99_init(MachineState *machine) > /* Load OpenBIOS (ELF) */ > if (filename) { > bios_size = load_elf(filename, NULL, NULL, NULL, > - NULL, NULL, 1, ELF_MACHINE, 0); > + NULL, NULL, 1, PPC_ELF_MACHINE, 0); > > g_free(filename); > } else { > @@ -242,7 +242,7 @@ static void ppc_core99_init(MachineState *machine) > kernel_base = KERNEL_LOAD_ADDR; > > kernel_size = load_elf(kernel_filename, translate_kernel_address, > NULL, > - NULL, &lowaddr, NULL, 1, ELF_MACHINE, 0); > + NULL, &lowaddr, NULL, 1, PPC_ELF_MACHINE, 0); > if (kernel_size < 0) > kernel_size = load_aout(kernel_filename, kernel_base, > ram_size - kernel_base, bswap_needed, > diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c > index 06fdbaf..00cb080 100644 > --- a/hw/ppc/mac_oldworld.c > +++ b/hw/ppc/mac_oldworld.c > @@ -147,7 +147,7 @@ static void ppc_heathrow_init(MachineState *machine) > /* Load OpenBIOS (ELF) */ > if (filename) { > bios_size = load_elf(filename, 0, NULL, NULL, NULL, NULL, > - 1, ELF_MACHINE, 0); > + 1, PPC_ELF_MACHINE, 0); > g_free(filename); > } else { > bios_size = -1; > @@ -168,7 +168,7 @@ static void ppc_heathrow_init(MachineState *machine) > #endif > kernel_base = KERNEL_LOAD_ADDR; > kernel_size = load_elf(kernel_filename, translate_kernel_address, > NULL, > - NULL, &lowaddr, NULL, 1, ELF_MACHINE, 0); > + NULL, &lowaddr, NULL, 1, PPC_ELF_MACHINE, 0); > if (kernel_size < 0) > kernel_size = load_aout(kernel_filename, kernel_base, > ram_size - kernel_base, bswap_needed, > diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c > index 032fa80..c54f79d 100644 > --- a/hw/ppc/ppc440_bamboo.c > +++ b/hw/ppc/ppc440_bamboo.c > @@ -256,7 +256,7 @@ static void bamboo_init(MachineState *machine) > NULL, NULL); > if (success < 0) { > success = load_elf(kernel_filename, NULL, NULL, &elf_entry, > - &elf_lowaddr, NULL, 1, ELF_MACHINE, 0); > + &elf_lowaddr, NULL, 1, PPC_ELF_MACHINE, 0); > entry = elf_entry; > loadaddr = elf_lowaddr; > } > diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c > index 45b5f62..b421bff 100644 > --- a/hw/ppc/prep.c > +++ b/hw/ppc/prep.c > @@ -610,7 +610,7 @@ static void ppc_prep_init(MachineState *machine) > bios_name = BIOS_FILENAME; > } > qdev_prop_set_string(dev, "bios-name", bios_name); > - qdev_prop_set_uint32(dev, "elf-machine", ELF_MACHINE); > + qdev_prop_set_uint32(dev, "elf-machine", PPC_ELF_MACHINE); > pcihost = PCI_HOST_BRIDGE(dev); > object_property_add_child(qdev_get_machine(), "raven", OBJECT(dev), > NULL); > qdev_init_nofail(dev); > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index bf0c64f..4500497 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1636,11 +1636,11 @@ static void ppc_spapr_init(MachineState *machine) > uint64_t lowaddr = 0; > > kernel_size = load_elf(kernel_filename, translate_kernel_address, > NULL, > - NULL, &lowaddr, NULL, 1, ELF_MACHINE, 0); > + NULL, &lowaddr, NULL, 1, PPC_ELF_MACHINE, 0); > if (kernel_size == ELF_LOAD_WRONG_ENDIAN) { > kernel_size = load_elf(kernel_filename, > translate_kernel_address, NULL, > - NULL, &lowaddr, NULL, 0, ELF_MACHINE, 0); > + NULL, &lowaddr, NULL, 0, PPC_ELF_MACHINE, > 0); > kernel_le = kernel_size > 0; > } > if (kernel_size < 0) { > diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c > index de86f7c..d3cf437 100644 > --- a/hw/ppc/virtex_ml507.c > +++ b/hw/ppc/virtex_ml507.c > @@ -257,7 +257,7 @@ static void virtex_init(MachineState *machine) > > /* Boots a kernel elf binary. */ > kernel_size = load_elf(kernel_filename, NULL, NULL, > - &entry, &low, &high, 1, ELF_MACHINE, 0); > + &entry, &low, &high, 1, PPC_ELF_MACHINE, 0); > boot_info.bootstrap_pc = entry & 0x00ffffff; > > if (kernel_size < 0) { > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 09e1e6a..4ade8e9 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -678,6 +678,7 @@ static inline void init_thread(struct target_pt_regs > *regs, > > #ifdef TARGET_PPC > > +#define ELF_MACHINE PPC_ELF_MACHINE > #define ELF_START_MMAP 0x80000000 > > #if defined(TARGET_PPC64) && !defined(TARGET_ABI32) > diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h > index 6f76674..2bb3934 100644 > --- a/target-ppc/cpu.h > +++ b/target-ppc/cpu.h > @@ -81,9 +81,9 @@ > #include "fpu/softfloat.h" > > #if defined (TARGET_PPC64) > -#define ELF_MACHINE EM_PPC64 > +#define PPC_ELF_MACHINE EM_PPC64 > #else > -#define ELF_MACHINE EM_PPC > +#define PPC_ELF_MACHINE EM_PPC > #endif > > > /*****************************************************************************/ >