data.isa (7410:1589cdca3c6e) | data.isa (7418:e81194228b6e) |
---|---|
1// Copyright (c) 2010 ARM Limited 2// All rights reserved 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 1059 unchanged lines hidden (view full) --- 1068 { 1069 const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 10, 8); 1070 const uint32_t imm8 = bits(machInst, 7, 0) << 2; 1071 return new AddImm(machInst, rd, INTREG_SP, imm8, true); 1072 } 1073 ''' 1074}}; 1075 | 1// Copyright (c) 2010 ARM Limited 2// All rights reserved 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 1059 unchanged lines hidden (view full) --- 1068 { 1069 const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 10, 8); 1070 const uint32_t imm8 = bits(machInst, 7, 0) << 2; 1071 return new AddImm(machInst, rd, INTREG_SP, imm8, true); 1072 } 1073 ''' 1074}}; 1075 |
1076def format ArmMisc() {{ 1077 decode_block = ''' 1078 { 1079 const uint32_t unrotated = bits(machInst, 7, 0); 1080 const uint32_t rotation = (bits(machInst, 11, 8) << 1); 1081 const uint32_t imm = rotate_imm(unrotated, rotation); 1082 const uint8_t byteMask = bits(machInst, 19, 16); 1083 switch (OPCODE) { 1084 case 0x8: 1085 return new MovImm(machInst, (IntRegIndex)(uint32_t)RD, 1086 (IntRegIndex)INTREG_ZERO, 1087 bits(machInst, 11, 0) | (bits(machInst, 19, 16) << 12), 1088 false); 1089 case 0x9: 1090 if (RN == 0) { 1091 switch (IMM) { 1092 case 0x0: 1093 return new NopInst(machInst); 1094#if FULL_SYSTEM 1095 case 0x1: 1096 return new YieldInst(machInst); 1097 case 0x2: 1098 return new WfeInst(machInst); 1099 case 0x3: 1100 return new WfiInst(machInst); 1101 case 0x4: 1102 return new SevInst(machInst); 1103#endif 1104 default: 1105 return new Unknown(machInst); 1106 } 1107 } else { 1108 return new MsrCpsrImm(machInst, imm, byteMask); 1109 } 1110 case 0xa: 1111 { 1112 const uint32_t timm = (bits(machInst, 19, 16) << 12) | 1113 bits(machInst, 11, 0); 1114 return new MovtImm(machInst, (IntRegIndex)(uint32_t)RD, 1115 (IntRegIndex)(uint32_t)RD, timm, true); 1116 } 1117 case 0xb: 1118 return new MsrSpsrImm(machInst, imm, byteMask); 1119 default: 1120 return new Unknown(machInst); 1121 } 1122 } 1123 ''' 1124}}; 1125 |
|
1076def format Thumb16Misc() {{ 1077 decode_block = ''' 1078 { 1079 switch (bits(machInst, 11, 8)) { 1080 case 0x0: 1081 if (bits(machInst, 7)) { 1082 return new SubImm(machInst, INTREG_SP, INTREG_SP, 1083 bits(machInst, 6, 0) << 2, true); --- 411 unchanged lines hidden --- | 1126def format Thumb16Misc() {{ 1127 decode_block = ''' 1128 { 1129 switch (bits(machInst, 11, 8)) { 1130 case 0x0: 1131 if (bits(machInst, 7)) { 1132 return new SubImm(machInst, INTREG_SP, INTREG_SP, 1133 bits(machInst, 6, 0) << 2, true); --- 411 unchanged lines hidden --- |