On Mon, Jan 10, 2022 at 03:15:46PM -0300, Fabiano Rosas wrote: > There's no sc 1. > > We also only used env->nip because of the vhyp code, so change to > 'vector' now.
I don't think this is right. The point with the env->nip change is changing the PC as it appeared *before* saving it to SRR0, so that we'll eventually return to the right place. 'vector' is the address for the interrupt vector itself. > > Signed-off-by: Fabiano Rosas <faro...@linux.ibm.com> > --- > target/ppc/excp_helper.c | 23 +++-------------------- > 1 file changed, 3 insertions(+), 20 deletions(-) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index f7b9af5065..ab298d0d8f 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -398,7 +398,7 @@ static void powerpc_excp_40x(PowerPCCPU *cpu, int excp) > CPUPPCState *env = &cpu->env; > int excp_model = env->excp_model; > target_ulong msr, new_msr, vector; > - int srr0, srr1, lev = -1; > + int srr0, srr1; > > if (excp <= POWERPC_EXCP_NONE || excp >= POWERPC_EXCP_NB) { > cpu_abort(cs, "Invalid PowerPC exception %d. Aborting\n", excp); > @@ -518,30 +518,13 @@ static void powerpc_excp_40x(PowerPCCPU *cpu, int excp) > } > break; > case POWERPC_EXCP_SYSCALL: /* System call exception > */ > - lev = env->error_code; > - > - if ((lev == 1) && cpu->vhyp) { > - dump_hcall(env); > - } else { > - dump_syscall(env); > - } > + dump_syscall(env); > > /* > * We need to correct the NIP which in this case is supposed > * to point to the next instruction > */ > - env->nip += 4; > - > - /* "PAPR mode" built-in hypercall emulation */ > - if ((lev == 1) && cpu->vhyp) { > - PPCVirtualHypervisorClass *vhc = > - PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp); > - vhc->hypercall(cpu->vhyp, cpu); > - return; > - } > - if (lev == 1) { > - new_msr |= (target_ulong)MSR_HVB; > - } > + vector += 4; > break; > case POWERPC_EXCP_FPU: /* Floating-point unavailable exception > */ > case POWERPC_EXCP_APU: /* Auxiliary processor unavailable > */ -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature