On Sat, Dec 7, 2013 at 10:55 AM, Antony Pavlov <antonynpav...@gmail.com> wrote: > Signed-off-by: Antony Pavlov <antonynpav...@gmail.com> > --- > target-arm/cpu.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/target-arm/cpu.c b/target-arm/cpu.c > index f838499..6f548c7 100644 > --- a/target-arm/cpu.c > +++ b/target-arm/cpu.c > @@ -126,6 +126,10 @@ static void arm_cpu_reset(CPUState *s) > env->cp15.c1_sys = c1_sys | (1 << 13); > } > > + if (!IS_M(env) && env->cp15.c1_sys & (1 << 13)) { > + env->regs[15] = 0xFFFF0000;
Dont see the need for the second if. This should only be reachable if reset_hivecs == true. Can you just put this line after the above "env->cp15.c1_sys = c1_sys | (1 << 13);" ? With the change I suggested in P1, the reset_hivecs variable wont be a property of M CPUs so it will be impossible for an M to have rest_hivecs regardless of board code (mis)behaviour. So I think you are safe to drop the IS_M here. Regards, Peter > + } > + > env->vfp.xregs[ARM_VFP_FPEXC] = 0; > #endif > set_flush_to_zero(1, &env->vfp.standard_fp_status); > -- > 1.8.5 > >