On 10/09/2017 06:48 AM, Peter Maydell wrote: > - if (dc->condexec_mask) { > + if (dc->condexec_mask && !thumb_insn_is_unconditional(dc, insn)) { > uint32_t cond = dc->condexec_cond; > > if (cond != 0x0e) { /* Skip conditional when condition is AL. */
Don't you still need to advance the condexec_mask? For HLT it doesn't matter, clearly. I'm not sure what happens to an IT block for debug breakpoints. But SG behaves as NOP when in non-secure memory. That would seem to require that itft eq add r1, r0, r0 sg add r2, r0, r0 add r3, r0, r0 should modify both r1 and r2 for T and r3 should be unconditional. If you don't advance condexec_mask, it would seem that r2 gets F and r3 gets T. r~