Add support for the AArch64's CSDB instruction.

CSDB is a new instruction which Arm has defined. It has the same encoding as
HINT #0x14 and is available at all architecture levels.

opcodes	* aarch64-tbl.h (aarch64_opcode_table): Add "csdb".
	* aarch64-asm-2.c: Regenerate.
	* aarch64-dis-2.c: Regenerate.
	* aarch64-opc-2.c: Regenerate.

gas	* testsuite/gas/aarch64/system.d: Update expected results to expect
	CSDB.
This commit is contained in:
James Greenhalgh 2018-01-09 11:28:04 +00:00 committed by Nick Clifton
parent b1dc1806fa
commit be2e7d9541
7 changed files with 1145 additions and 1130 deletions

View File

@ -1,3 +1,8 @@
2018-01-09 James Greenhalgh <james.greenhalgh@arm.com>
* testsuite/gas/aarch64/system.d: Update expected results to expect
CSDB for hint 0x14.
2018-01-08 H.J. Lu <hongjiu.lu@intel.com>
PR gas/22681

View File

@ -32,7 +32,7 @@ Disassembly of section \.text:
60: d503223f (hint #0x11|psb csync)
64: d503225f hint #0x12
68: d503227f hint #0x13
6c: d503229f hint #0x14
6c: d503229f (hint #0x14|csdb)
70: d50322bf hint #0x15
74: d50322df hint #0x16
78: d50322ff hint #0x17

View File

@ -1,3 +1,10 @@
2018-01-09 James Greenhalgh <james.greenhalgh@arm.com>
* aarch64-tbl.h (aarch64_opcode_table): Add "csdb".
* aarch64-asm-2.c: Regenerate.
* aarch64-dis-2.c: Regenerate.
* aarch64-opc-2.c: Regenerate.
2018-01-08 H.J. Lu <hongjiu.lu@intel.com>
PR gas/22681

View File

@ -422,156 +422,157 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
case 1152: /* movz */
value = 1152; /* --> movz. */
break;
case 1191: /* autibsp */
case 1190: /* autibz */
case 1189: /* autiasp */
case 1188: /* autiaz */
case 1187: /* pacibsp */
case 1186: /* pacibz */
case 1185: /* paciasp */
case 1184: /* paciaz */
case 1171: /* psb */
case 1170: /* esb */
case 1169: /* autib1716 */
case 1168: /* autia1716 */
case 1167: /* pacib1716 */
case 1166: /* pacia1716 */
case 1165: /* xpaclri */
case 1164: /* sevl */
case 1163: /* sev */
case 1162: /* wfi */
case 1161: /* wfe */
case 1160: /* yield */
case 1192: /* autibsp */
case 1191: /* autibz */
case 1190: /* autiasp */
case 1189: /* autiaz */
case 1188: /* pacibsp */
case 1187: /* pacibz */
case 1186: /* paciasp */
case 1185: /* paciaz */
case 1172: /* psb */
case 1171: /* esb */
case 1170: /* autib1716 */
case 1169: /* autia1716 */
case 1168: /* pacib1716 */
case 1167: /* pacia1716 */
case 1166: /* xpaclri */
case 1165: /* sevl */
case 1164: /* sev */
case 1163: /* wfi */
case 1162: /* wfe */
case 1161: /* yield */
case 1160: /* csdb */
case 1159: /* nop */
case 1158: /* hint */
value = 1158; /* --> hint. */
break;
case 1180: /* tlbi */
case 1179: /* ic */
case 1178: /* dc */
case 1177: /* at */
case 1176: /* sys */
value = 1176; /* --> sys. */
case 1181: /* tlbi */
case 1180: /* ic */
case 1179: /* dc */
case 1178: /* at */
case 1177: /* sys */
value = 1177; /* --> sys. */
break;
case 1973: /* bic */
case 1239: /* and */
value = 1239; /* --> and. */
case 1974: /* bic */
case 1240: /* and */
value = 1240; /* --> and. */
break;
case 1222: /* mov */
case 1241: /* and */
value = 1241; /* --> and. */
case 1223: /* mov */
case 1242: /* and */
value = 1242; /* --> and. */
break;
case 1226: /* movs */
case 1242: /* ands */
value = 1242; /* --> ands. */
case 1227: /* movs */
case 1243: /* ands */
value = 1243; /* --> ands. */
break;
case 1974: /* cmple */
case 1277: /* cmpge */
value = 1277; /* --> cmpge. */
case 1975: /* cmple */
case 1278: /* cmpge */
value = 1278; /* --> cmpge. */
break;
case 1977: /* cmplt */
case 1280: /* cmpgt */
value = 1280; /* --> cmpgt. */
case 1978: /* cmplt */
case 1281: /* cmpgt */
value = 1281; /* --> cmpgt. */
break;
case 1975: /* cmplo */
case 1282: /* cmphi */
value = 1282; /* --> cmphi. */
case 1976: /* cmplo */
case 1283: /* cmphi */
value = 1283; /* --> cmphi. */
break;
case 1976: /* cmpls */
case 1285: /* cmphs */
value = 1285; /* --> cmphs. */
case 1977: /* cmpls */
case 1286: /* cmphs */
value = 1286; /* --> cmphs. */
break;
case 1219: /* mov */
case 1307: /* cpy */
value = 1307; /* --> cpy. */
break;
case 1221: /* mov */
case 1220: /* mov */
case 1308: /* cpy */
value = 1308; /* --> cpy. */
break;
case 1984: /* fmov */
case 1224: /* mov */
case 1222: /* mov */
case 1309: /* cpy */
value = 1309; /* --> cpy. */
break;
case 1214: /* mov */
case 1321: /* dup */
value = 1321; /* --> dup. */
case 1985: /* fmov */
case 1225: /* mov */
case 1310: /* cpy */
value = 1310; /* --> cpy. */
break;
case 1216: /* mov */
case 1213: /* mov */
case 1215: /* mov */
case 1322: /* dup */
value = 1322; /* --> dup. */
break;
case 1983: /* fmov */
case 1218: /* mov */
case 1217: /* mov */
case 1214: /* mov */
case 1323: /* dup */
value = 1323; /* --> dup. */
break;
case 1217: /* mov */
case 1324: /* dupm */
value = 1324; /* --> dupm. */
case 1984: /* fmov */
case 1219: /* mov */
case 1324: /* dup */
value = 1324; /* --> dup. */
break;
case 1978: /* eon */
case 1326: /* eor */
value = 1326; /* --> eor. */
case 1218: /* mov */
case 1325: /* dupm */
value = 1325; /* --> dupm. */
break;
case 1227: /* not */
case 1328: /* eor */
value = 1328; /* --> eor. */
case 1979: /* eon */
case 1327: /* eor */
value = 1327; /* --> eor. */
break;
case 1228: /* nots */
case 1329: /* eors */
value = 1329; /* --> eors. */
case 1228: /* not */
case 1329: /* eor */
value = 1329; /* --> eor. */
break;
case 1979: /* facle */
case 1334: /* facge */
value = 1334; /* --> facge. */
case 1229: /* nots */
case 1330: /* eors */
value = 1330; /* --> eors. */
break;
case 1980: /* faclt */
case 1335: /* facgt */
value = 1335; /* --> facgt. */
case 1980: /* facle */
case 1335: /* facge */
value = 1335; /* --> facge. */
break;
case 1981: /* fcmle */
case 1348: /* fcmge */
value = 1348; /* --> fcmge. */
case 1981: /* faclt */
case 1336: /* facgt */
value = 1336; /* --> facgt. */
break;
case 1982: /* fcmlt */
case 1350: /* fcmgt */
value = 1350; /* --> fcmgt. */
case 1982: /* fcmle */
case 1349: /* fcmge */
value = 1349; /* --> fcmge. */
break;
case 1983: /* fcmlt */
case 1351: /* fcmgt */
value = 1351; /* --> fcmgt. */
break;
case 1212: /* fmov */
case 1357: /* fcpy */
value = 1357; /* --> fcpy. */
break;
case 1211: /* fmov */
case 1356: /* fcpy */
value = 1356; /* --> fcpy. */
case 1380: /* fdup */
value = 1380; /* --> fdup. */
break;
case 1210: /* fmov */
case 1379: /* fdup */
value = 1379; /* --> fdup. */
break;
case 1212: /* mov */
case 1694: /* orr */
value = 1694; /* --> orr. */
break;
case 1985: /* orn */
case 1213: /* mov */
case 1695: /* orr */
value = 1695; /* --> orr. */
break;
case 1215: /* mov */
case 1697: /* orr */
value = 1697; /* --> orr. */
case 1986: /* orn */
case 1696: /* orr */
value = 1696; /* --> orr. */
break;
case 1225: /* movs */
case 1698: /* orrs */
value = 1698; /* --> orrs. */
case 1216: /* mov */
case 1698: /* orr */
value = 1698; /* --> orr. */
break;
case 1220: /* mov */
case 1760: /* sel */
value = 1760; /* --> sel. */
case 1226: /* movs */
case 1699: /* orrs */
value = 1699; /* --> orrs. */
break;
case 1223: /* mov */
case 1221: /* mov */
case 1761: /* sel */
value = 1761; /* --> sel. */
break;
case 1224: /* mov */
case 1762: /* sel */
value = 1762; /* --> sel. */
break;
default: return NULL;
}

File diff suppressed because it is too large Load Diff

View File

@ -292,17 +292,17 @@ static const unsigned op_enum_table [] =
385,
407,
409,
1215,
1220,
1213,
1212,
1216,
1223,
1225,
1221,
1214,
1213,
1217,
1224,
1226,
1222,
1228,
1227,
1223,
1229,
1228,
129,
};

View File

@ -3455,6 +3455,7 @@ struct aarch64_opcode aarch64_opcode_table[] =
CORE_INSN ("msr", 0xd500401f, 0xfff8f01f, ic_system, 0, OP2 (PSTATEFIELD, UIMM4), {}, 0),
CORE_INSN ("hint",0xd503201f, 0xfffff01f, ic_system, 0, OP1 (UIMM7), {}, F_HAS_ALIAS),
CORE_INSN ("nop", 0xd503201f, 0xffffffff, ic_system, 0, OP0 (), {}, F_ALIAS),
CORE_INSN ("csdb",0xd503229f, 0xffffffff, ic_system, 0, OP0 (), {}, F_ALIAS),
CORE_INSN ("yield", 0xd503203f, 0xffffffff, ic_system, 0, OP0 (), {}, F_ALIAS),
CORE_INSN ("wfe", 0xd503205f, 0xffffffff, ic_system, 0, OP0 (), {}, F_ALIAS),
CORE_INSN ("wfi", 0xd503207f, 0xffffffff, ic_system, 0, OP0 (), {}, F_ALIAS),