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~