@samitouri / QOSamiQemu / commits / b1475464f7

target/hppa: Delay MMU update until TLB protection bits were set

On a 32-bit HPPA CPU, the TLB update for a data translation happens with two consecutive instructions: IDTLBA and IDTLBP. The former sets the target page address, while the second sets the protection bits. There is no need to update the MMU after setting the address bits only, so delay the final update of the MMU until after the execution of the second instruction when the protection bits are known too. Signed-off-by: Helge Deller <deller@gmx.de>

Helge Deller committed Jul 3, 2026 at 15:00 UTC b1475464f7b6387eec1b297ee60dc9912ed661a2
1 file changed +2 -2
target/hppa/translate.c
+2 -2
@@ -2570,7 +2570,7 @@ static bool trans_ixtlbx(DisasContext *ctx, arg_ixtlbx *a)
2570 }
2571
2572 /* Exit TB for TLB change if mmu is enabled. */
2573 - if (ctx->tb_flags & PSW_C) {
2573 + if (ctx->tb_flags & PSW_C && !a->addr) {
2574 ctx->base.is_jmp = DISAS_IAQ_N_STALE;
2575 }
2576 return nullify_end(ctx);
@@ -2687,7 +2687,7 @@ static bool trans_ixtlbxf(DisasContext *ctx, arg_ixtlbxf *a)
2687 }
2688
2689 /* Exit TB for TLB change if mmu is enabled. */
2690 - if (ctx->tb_flags & PSW_C) {
2690 + if (ctx->tb_flags & PSW_C && !a->addr) {
2691 ctx->base.is_jmp = DISAS_IAQ_N_STALE;
2692 }
2693 return nullify_end(ctx);