Message ID | 20240107132237.50553-9-deller@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/hppa qemu v8.2 regression fixes | expand |
On 1/8/24 00:22, deller@kernel.org wrote: > From: Helge Deller <deller@gmx.de> > > The value of unwind_breg may reference register %r0, but we need to avoid > accessing gr0 directly and use the value 0 instead. > > At runtime I've seen unwind_breg being zero with the Linux kernel when > rfi is used to jump to smp_callin(). > > Signed-off-by: Helge Deller <deller@gmx.de> > --- > target/hppa/mem_helper.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c > index 011b192406..42bd0063c0 100644 > --- a/target/hppa/mem_helper.c > +++ b/target/hppa/mem_helper.c > @@ -335,7 +335,7 @@ raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr, > > cpu_restore_state(cs, retaddr); > > - b = env->gr[env->unwind_breg]; > + b = env->unwind_breg ? env->gr[env->unwind_breg] : 0; > b >>= (env->psw & PSW_W ? 62 : 30); > env->cr[CR_IOR] |= b << 62; > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c index 011b192406..42bd0063c0 100644 --- a/target/hppa/mem_helper.c +++ b/target/hppa/mem_helper.c @@ -335,7 +335,7 @@ raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr, cpu_restore_state(cs, retaddr); - b = env->gr[env->unwind_breg]; + b = env->unwind_breg ? env->gr[env->unwind_breg] : 0; b >>= (env->psw & PSW_W ? 62 : 30); env->cr[CR_IOR] |= b << 62;