misc.isa (10506:aa23216161fa) misc.isa (11572:9eac6e12c673)
1// -*- mode:c++ -*-
2
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2013 ARM Limited
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:
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 NopInst(machInst);
184 return new McrMrcMiscInst(isRead ? "mrc nop" : "mcr nop",
185 machInst, iss, MISCREG_NOP);
185 case MISCREG_CP15_UNIMPL:
186 return new FailUnimplemented(isRead ? "mrc unkown" : "mcr unkown",
187 machInst,
188 csprintf("miscreg crn:%d opc1:%d crm:%d opc2:%d %s unknown",
189 crn, opc1, crm, opc2, isRead ? "read" : "write"));
190 case MISCREG_DCCMVAC:
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:
191 return new FlushPipeInst(
192 isRead ? "mrc dccmvac" : "mcr dccmvac", machInst);
192 return new McrMrcMiscInst(isRead ? "mrc dccmvac" : "mcr dccmvac",
193 machInst, iss, MISCREG_DCCMVAC);
193 case MISCREG_CP15ISB:
194 return new Isb(machInst, iss);
195 case MISCREG_CP15DSB:
196 return new Dsb(machInst, iss);
197 case MISCREG_CP15DMB:
198 return new Dmb(machInst, iss);
199 default:
200 if (miscRegInfo[miscReg][MISCREG_WARN_NOT_FAIL]) {

--- 103 unchanged lines hidden ---
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 ---