On Thu, Sep 02, 2010 at 11:40:50PM +0200, Adam Lackorzynski wrote:
> +        case 7:
> +            /* SMC? */
> +            if ((insn & 0xfffffff0) == 0xe1600070) {
> +                goto illegal_op;
> +            }
> +            /* bkpt */

This doesn't look right to me. SMC in the ARM encoding is a standard
conditionalised instruction, so you shouldn't be mandating that the
cond field is 0xe.

I think the correct way to distinguish BKPT from SMC is to look at
bits [22..21] of the instruction: 01 for BKPT, 11 for SMC and
other combinations are UNDEFINED. This is in 'op1' at this point
in the code...

-- Peter Maydell

Reply via email to