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,16 +649,20 @@ 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)) { {
IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 2, 0);
IntRegIndex rm = (IntRegIndex)(uint32_t)bits(machInst, 5, 3);
switch (bits(machInst, 7, 6)) {
case 0x0: case 0x0:
return new WarnUnimplemented("rev", machInst); return new Rev(machInst, rd, rm);
case 0x1: case 0x1:
return new WarnUnimplemented("rev16", machInst); return new Rev16(machInst, rd, rm);
case 0x3: case 0x3:
return new WarnUnimplemented("revsh", machInst); return new Revsh(machInst, rd, rm);
default: default:
break; break;
} }
}
break; break;
case 0xb: case 0xb:
return new Cbnz(machInst, return new Cbnz(machInst,