Am 26.03.2013 13:20, schrieb Peter Maydell: > Commit b350ab75 causes segfaults on accesses to PVR/PRR/CVR because > it tries to call SUPERH_CPU_GET_CLASS() on a pointer that isn't a > QOM object. Fix this by getting the actual QOM CPU object first. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > Tested with the r2d image/instructions from > https://oss.renesas.com/modules/document/?Getting%20Started%20with%20SH4%20and%20QEMU
Oops, reproduces with the test image from the QEMU Wiki as well. Seems to be a result of cherry-picking this commit before the full SH7750 QOM'ification. Is this blocking any work of yours? Otherwise I would try rebasing my SH7750 patches so that s->cpu becomes a SuperHCPU as expected here. (Not sure if simply reverting my offending patch still works?) Andreas > > hw/sh4/sh7750.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c > index e4d37ad..3580c87 100644 > --- a/hw/sh4/sh7750.c > +++ b/hw/sh4/sh7750.c > @@ -289,13 +289,13 @@ static uint32_t sh7750_mem_readl(void *opaque, hwaddr > addr) > case SH7750_CCR_A7: > return s->ccr; > case 0x1f000030: /* Processor version */ > - scc = SUPERH_CPU_GET_CLASS(s->cpu); > + scc = SUPERH_CPU_GET_CLASS(ENV_GET_CPU(s->cpu)); > return scc->pvr; > case 0x1f000040: /* Cache version */ > - scc = SUPERH_CPU_GET_CLASS(s->cpu); > + scc = SUPERH_CPU_GET_CLASS(ENV_GET_CPU(s->cpu)); > return scc->cvr; > case 0x1f000044: /* Processor revision */ > - scc = SUPERH_CPU_GET_CLASS(s->cpu); > + scc = SUPERH_CPU_GET_CLASS(ENV_GET_CPU(s->cpu)); > return scc->prr; > default: > error_access("long read", addr); > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg