diff options
Diffstat (limited to 'arch/armv7/thumb2_disasm/il_thumb2.cpp')
| -rw-r--r-- | arch/armv7/thumb2_disasm/il_thumb2.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/armv7/thumb2_disasm/il_thumb2.cpp b/arch/armv7/thumb2_disasm/il_thumb2.cpp index df205c73..c68506be 100644 --- a/arch/armv7/thumb2_disasm/il_thumb2.cpp +++ b/arch/armv7/thumb2_disasm/il_thumb2.cpp @@ -976,7 +976,21 @@ bool GetLowLevelILForThumbInstruction(Architecture* arch, LowLevelILFunction& il il.ShiftLeft(4, il.Const(2, instr->fields[instr->format->operands[1].field0]), il.Const(1, 16)), il.And(4, il.Const(4, 0x0000ffff), ReadILOperand(il, instr, 0))))); break; - case ARMV7_MSR: + case armv7::ARMV7_MRS: + { + int dest_reg = ReadILOperand(il, instr, 0); + int intrinsic_id = ARMV7_INTRIN_MRS; + + il.AddInstruction( + il.Intrinsic( + {RegisterOrFlag::Register(dest_reg)}, /* outputs */ + intrinsic_id, + {il.Register(4, GetSpecialRegister(il, instr, 1))} /* inputs */ + ) + ); + } + break; + case armv7::ARMV7_MSR: { int dest_reg = GetSpecialRegister(il, instr, 0); int intrinsic_id = ARMV7_INTRIN_MSR; |
