ARM: Decode the 16 bit thumb versions of the REV* instructions.

This commit is contained in:
Gabe Black 2010-06-02 12:58:06 -05:00
parent 15356af288
commit f19b605aed

View file

@ -649,15 +649,19 @@ def format Thumb16Misc() {{
(bits(machInst, 7, 3) << 1), (bits(machInst, 7, 3) << 1),
(IntRegIndex)(uint32_t)bits(machInst, 2, 0)); (IntRegIndex)(uint32_t)bits(machInst, 2, 0));
case 0xa: case 0xa:
switch (bits(machInst, 7, 5)) { {
case 0x0: IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 2, 0);
return new WarnUnimplemented("rev", machInst); IntRegIndex rm = (IntRegIndex)(uint32_t)bits(machInst, 5, 3);
case 0x1: switch (bits(machInst, 7, 6)) {
return new WarnUnimplemented("rev16", machInst); case 0x0:
case 0x3: return new Rev(machInst, rd, rm);
return new WarnUnimplemented("revsh", machInst); case 0x1:
default: return new Rev16(machInst, rd, rm);
break; case 0x3:
return new Revsh(machInst, rd, rm);
default:
break;
}
} }
break; break;
case 0xb: case 0xb: