> > invalid/unsupported opcode: 00 - 00 - 00 (00000000) 4800fa44 1 > > I have fixed that in HEAD by stopping the translation just after a trap, > as the instructions might never be executed. > > It is not a full fix, as the OS can actually use any instruction that > always generate a trap (even a memory access) as an instruction barrier > to make sure the following instructions are never executed. This > actually affects all targets, but is unlikely to happen. > > One solution for that would be to only generate an exception for an > unsupported instruction when it is the first instruction of a TB, and > otherwise just end the translation before this instruction.
By my reading the code is correct. We end up calling gen_invalid which output code to raise an invalid instruction exception. If earlier code faults at runtime then that code is never executed, and everything is happy. The real bug is that we have debugging printfs enabled by default. Paul