misc.isa (7199:3e96b80d1b55) | misc.isa (7203:39753c33e7aa) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 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 --- 26 unchanged lines hidden (view full) --- 35// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 36// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37// 38// Authors: Gabe Black 39 40def format Svc() {{ 41 decode_block = "return new Svc(machInst);" 42}}; | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 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 --- 26 unchanged lines hidden (view full) --- 35// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 36// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37// 38// Authors: Gabe Black 39 40def format Svc() {{ 41 decode_block = "return new Svc(machInst);" 42}}; |
43 44def format ArmMsrMrs() {{ 45 decode_block = ''' 46 { 47 const uint8_t byteMask = bits(machInst, 19, 16); 48 const IntRegIndex rn = (IntRegIndex)(uint32_t)bits(machInst, 3, 0); 49 const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 15, 12); 50 const uint32_t opcode = bits(machInst, 24, 21); 51 const bool useImm = bits(machInst, 25); 52 53 const uint32_t unrotated = bits(machInst, 7, 0); 54 const uint32_t rotation = (bits(machInst, 11, 8) << 1); 55 const uint32_t imm = rotate_imm(unrotated, rotation); 56 57 switch (opcode) { 58 case 0x8: 59 return new MrsCpsr(machInst, rd); 60 case 0x9: 61 if (useImm) { 62 return new MsrCpsrImm(machInst, imm, byteMask); 63 } else { 64 return new MsrCpsrReg(machInst, rn, byteMask); 65 } 66 case 0xa: 67 return new MrsSpsr(machInst, rd); 68 case 0xb: 69 if (useImm) { 70 return new MsrSpsrImm(machInst, imm, byteMask); 71 } else { 72 return new MsrSpsrReg(machInst, rn, byteMask); 73 } 74 default: 75 return new Unknown(machInst); 76 } 77 } 78 ''' 79}}; |
|