113d112
< const uint32_t op2 = bits(machInst, 11, 8);
137,139c136,140
< if ((op2 & 0x3) == 0) {
< // Application level
< return new WarnUnimplemented("msr", machInst);
---
> {
> const IntRegIndex rn =
> (IntRegIndex)(uint32_t)bits(machInst, 19, 16);
> const uint8_t byteMask = bits(machInst, 11, 8);
> return new MsrCpsrReg(machInst, rn, byteMask);
141d141
< // Fall through on purpose...
143,144c143,148
< // System level
< return new WarnUnimplemented("msr", machInst);
---
> {
> const IntRegIndex rn =
> (IntRegIndex)(uint32_t)bits(machInst, 19, 16);
> const uint8_t byteMask = bits(machInst, 11, 8);
> return new MsrSpsrReg(machInst, rn, byteMask);
> }
200a205,209
> {
> const IntRegIndex rd =
> (IntRegIndex)(uint32_t)bits(machInst, 11, 8);
> return new MrsCpsr(machInst, rd);
> }
202c211,215
< return new WarnUnimplemented("mrs", machInst);
---
> {
> const IntRegIndex rd =
> (IntRegIndex)(uint32_t)bits(machInst, 11, 8);
> return new MrsSpsr(machInst, rd);
> }