target/microblaze: Collected fixes for env->iflags
There are several problems here that can result in soft lockup, depending on exactly where an interrupt or exception is delivered: Include BIMM_FLAG in IFLAGS_TB_MASK, since it needs to follow D_FLAG. Ensure that iflags is 0 when entering an interrupt/exception handler. Add mb_cpu_synchronize_from_tb to restore iflags from tb->flags. The change to t_sync_flags is cosmetic, but makes the code clearer. This fixes the reported regression in acceptance/replay_kernel.py. Fixes: 683a247e ("target/microblaze: Store "current" iflags in insn_start") Tested-by:Thomas Huth <thuth@redhat.com> Reported-by:
Thomas Huth <thuth@redhat.com> Signed-off-by:
Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200904190842.2282109-2-richard.henderson@linaro.org> Signed-off-by:
Thomas Huth <thuth@redhat.com>
Showing
- target/microblaze/cpu.c 11 additions, 0 deletionstarget/microblaze/cpu.c
- target/microblaze/cpu.h 2 additions, 1 deletiontarget/microblaze/cpu.h
- target/microblaze/helper.c 11 additions, 6 deletionstarget/microblaze/helper.c
- target/microblaze/translate.c 2 additions, 2 deletionstarget/microblaze/translate.c
Loading
Please register or sign in to comment