Commit 7826c2b2 authored by Greg Kurz's avatar Greg Kurz Committed by Michael S. Tsirkin
Browse files

target-ppc: enable virtio endian ambivalent support



The device endianness is the cpu endianness at device reset time.

Signed-off-by: default avatarGreg Kurz <gkurz@linux.vnet.ibm.com>
Reviewed-by: default avatarAlexander Graf <agraf@suse.de>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent d64ccb91
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@
#define TARGET_LONG_BITS 64
#define TARGET_PAGE_BITS 12

#define TARGET_IS_BIENDIAN 1

/* Note that the official physical address space bits is 62-M where M
   is implementation dependent.  I've not looked up M for the set of
   cpus we emulate at the system level.  */
+15 −0
Original line number Diff line number Diff line
@@ -9597,6 +9597,18 @@ static void ppc_cpu_reset(CPUState *s)
    tlb_flush(s, 1);
}

#ifndef CONFIG_USER_ONLY
static bool ppc_cpu_is_big_endian(CPUState *cs)
{
    PowerPCCPU *cpu = POWERPC_CPU(cs);
    CPUPPCState *env = &cpu->env;

    cpu_synchronize_state(cs);

    return !msr_le;
}
#endif

static void ppc_cpu_initfn(Object *obj)
{
    CPUState *cs = CPU(obj);
@@ -9692,6 +9704,9 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
#else
    cc->gdb_core_xml_file = "power-core.xml";
#endif
#ifndef CONFIG_USER_ONLY
    cc->virtio_is_big_endian = ppc_cpu_is_big_endian;
#endif

    dc->fw_name = "PowerPC,UNKNOWN";
}