ARM: Decode the 16 bit thumb versions of the REV* instructions.
This commit is contained in:
parent
15356af288
commit
f19b605aed
1 changed files with 13 additions and 9 deletions
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue