mirror of https://github.com/xemu-project/xemu.git
spapr: Force 32bit when resetting a core
"PowerPC Processor binding to IEEE 1275" says in "8.2.1. Initial Register Values" that the initial state is defined as 32bit so do it for both SLOF and VOF. This should not cause behavioral change as SLOF switches to 64bit very early anyway. As nothing enforces LE anywhere, this drops it for VOF. The goal is to make VOF work with TCG as otherwise it barfs with qemu: fatal: TCG hflags mismatch (current:0x6c000004 rebuilt:0x6c000000) Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20220107072423.2278113-1-aik@ozlabs.ru> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
cfe63e46be
commit
6e3f09c28a
|
@ -37,6 +37,11 @@ static void spapr_reset_vcpu(PowerPCCPU *cpu)
|
|||
|
||||
cpu_reset(cs);
|
||||
|
||||
/*
|
||||
* "PowerPC Processor binding to IEEE 1275" defines the initial MSR state
|
||||
* as 32bit (MSR_SF=0) in "8.2.1. Initial Register Values".
|
||||
*/
|
||||
env->msr &= ~(1ULL << MSR_SF);
|
||||
env->spr[SPR_HIOR] = 0;
|
||||
|
||||
lpcr = env->spr[SPR_LPCR];
|
||||
|
|
|
@ -88,8 +88,6 @@ void spapr_vof_reset(SpaprMachineState *spapr, void *fdt, Error **errp)
|
|||
spapr_cpu_set_entry_state(first_ppc_cpu, SPAPR_ENTRY_POINT,
|
||||
stack_ptr, spapr->initrd_base,
|
||||
spapr->initrd_size);
|
||||
/* VOF is 32bit BE so enforce MSR here */
|
||||
first_ppc_cpu->env.msr &= ~((1ULL << MSR_SF) | (1ULL << MSR_LE));
|
||||
|
||||
/*
|
||||
* At this point the expected allocation map is:
|
||||
|
|
Loading…
Reference in New Issue