On 1/28/25 17:52, Richard Henderson wrote:
On 1/28/25 14:45, del...@kernel.org wrote:
+ if (ctx->is_pa20 && (a->dr == 2)) {
+ /* Exit TB to recalculate gva_offset_mask on %dr2 */
+ ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT;
+ }
Where does this update happen? I think you've missed that step.
To expand on this, I believe you want a new helper, invoked here, which calls
update_gva_offset_mask(). Then exit the tb as you do above.
We don't really have to go back to the main loop, but we can't chain with
DISAS_IAQ_N_STALE either. We'd have to invent another DISAS thingy for an exact fit. For
something that's probably called once at boot and never again, it hardly seems worth the
effort.
r~