1// -*- mode:c++ -*- 2 |
3// Copyright (c) 2010-2013,2016 ARM Limited |
4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating 9// to a hardware implementation of the functionality of the software 10// licensed hereunder. You may use the software subject to the license 11// terms below provided that you ensure that this notice is replicated --- 164 unchanged lines hidden (view full) --- 176 const uint32_t crm = bits(machInst, 3, 0); 177 const MiscRegIndex miscReg = decodeCP15Reg(crn, opc1, crm, opc2); 178 const IntRegIndex rt = (IntRegIndex)(uint32_t)bits(machInst, 15, 12); 179 const bool isRead = bits(machInst, 20); 180 uint32_t iss = mcrMrcIssBuild(isRead, crm, rt, crn, opc1, opc2); 181 182 switch (miscReg) { 183 case MISCREG_NOP: |
184 return new McrMrcMiscInst(isRead ? "mrc nop" : "mcr nop", 185 machInst, iss, MISCREG_NOP); |
186 case MISCREG_CP15_UNIMPL: 187 return new FailUnimplemented(isRead ? "mrc unkown" : "mcr unkown", 188 machInst, 189 csprintf("miscreg crn:%d opc1:%d crm:%d opc2:%d %s unknown", 190 crn, opc1, crm, opc2, isRead ? "read" : "write")); 191 case MISCREG_DCCMVAC: |
192 return new McrMrcMiscInst(isRead ? "mrc dccmvac" : "mcr dccmvac", 193 machInst, iss, MISCREG_DCCMVAC); |
194 case MISCREG_CP15ISB: 195 return new Isb(machInst, iss); 196 case MISCREG_CP15DSB: 197 return new Dsb(machInst, iss); 198 case MISCREG_CP15DMB: 199 return new Dmb(machInst, iss); 200 default: 201 if (miscRegInfo[miscReg][MISCREG_WARN_NOT_FAIL]) { --- 103 unchanged lines hidden --- |