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