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 ---