target/i386: fix INHIBIT_IRQ/TF/RF handling for PAUSE
authorPaolo Bonzini <pbonzini@redhat.com>
Sat, 25 May 2024 08:47:31 +0000 (10:47 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 8 Jun 2024 08:33:38 +0000 (10:33 +0200)
commit3718523d011e898d414f09a4ed43cf13d76de0b4
tree7dcfa2556cab98c86386d028ec87d7052c786a6a
parent1a150d331d9bbd882c8b93146ff7fbc6259f0961
target/i386: fix INHIBIT_IRQ/TF/RF handling for PAUSE

PAUSE uses DISAS_NORETURN because the corresponding helper
calls cpu_loop_exit().  However, while HLT clear HF_INHIBIT_IRQ_MASK
to correctly handle "STI; HLT", the same is missing from PAUSE.
And also gen_eob() clears HF_RF_MASK and synthesizes a #DB exception
if single-step is active; none of this is done by HLT and PAUSE.
Start fixing PAUSE, HLT will follow.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/tcg/misc_helper.c