diff options
author | Sudakshina Das <sudi.das@arm.com> | 2020-04-20 10:58:16 +0100 |
---|---|---|
committer | Sudakshina Das <sudi.das@arm.com> | 2020-04-20 10:58:16 +0100 |
commit | c2e5c986b3825c16a578e5bf84aa412eec276dc7 (patch) | |
tree | a3164a12168f5db7c0145d75fc0255a4de02bc23 /opcodes/aarch64-asm-2.c | |
parent | 8a6e1d1d7f2fb09245fe42f7b8dc6d53f61df1d1 (diff) | |
download | gdb-c2e5c986b3825c16a578e5bf84aa412eec276dc7.zip gdb-c2e5c986b3825c16a578e5bf84aa412eec276dc7.tar.gz gdb-c2e5c986b3825c16a578e5bf84aa412eec276dc7.tar.bz2 |
[AArch64, Binutils] Add missing TSB instruction
This patch implements the TSB instructions:
https://developer.arm.com/docs/ddi0596/f/base-instructions-alphabetic-order/
tsb-csync-trace-synchronization-barrier
Since TSB and PSB both use the same (and only) argument "CSYNC", this patch
reuses it for TSB. However, the same argument would imply different value
for CRm:Op2 which are anyway fixed values, so I have diverted the
inserter/extracter function to dummy versions instead of the "hint" version.
The operand checker part still uses the existing infratructure for
AARCH64_OPND_BARRIER_PSB to make sure the operand is parsed correctly.
gas/ChangeLog:
2020-04-20 Sudakshina Das <sudi.das@arm.com>
* config/tc-aarch64.c (parse_barrier_psb): Update error messages
to include TSB.
* testsuite/gas/aarch64/system-2.d: Update -march and new tsb tests.
* testsuite/gas/aarch64/system-2.s: Add new tsb tests.
* testsuite/gas/aarch64/system.d: Update.
opcodes/ChangeLog:
2020-04-20 Sudakshina Das <sudi.das@arm.com>
* aarch64-asm.c (aarch64_ins_none): New.
* aarch64-asm.h (ins_none): New declaration.
* aarch64-dis.c (aarch64_ext_none): New.
* aarch64-dis.h (ext_none): New declaration.
* aarch64-opc.c (aarch64_print_operand): Update case for
AARCH64_OPND_BARRIER_PSB.
* aarch64-tbl.h (aarch64_opcode_table): Add tsb.
(AARCH64_OPERANDS): Update inserter/extracter for
AARCH64_OPND_BARRIER_PSB to use new dummy functions.
* aarch64-asm-2.c: Regenerated.
* aarch64-dis-2.c: Regenerated.
* aarch64-opc-2.c: Regenerated.
Diffstat (limited to 'opcodes/aarch64-asm-2.c')
-rw-r--r-- | opcodes/aarch64-asm-2.c | 206 |
1 files changed, 104 insertions, 102 deletions
diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index 464fd8d..bb2da48 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -426,14 +426,15 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) case 1183: /* movz */ value = 1183; /* --> movz. */ break; - case 1236: /* autibsp */ - case 1235: /* autibz */ - case 1234: /* autiasp */ - case 1233: /* autiaz */ - case 1232: /* pacibsp */ - case 1231: /* pacibz */ - case 1230: /* paciasp */ - case 1229: /* paciaz */ + case 1237: /* autibsp */ + case 1236: /* autibz */ + case 1235: /* autiasp */ + case 1234: /* autiaz */ + case 1233: /* pacibsp */ + case 1232: /* pacibz */ + case 1231: /* paciasp */ + case 1230: /* paciaz */ + case 1210: /* tsb */ case 1209: /* psb */ case 1208: /* esb */ case 1207: /* autib1716 */ @@ -452,140 +453,140 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) case 1193: /* hint */ value = 1193; /* --> hint. */ break; - case 1213: /* pssbb */ - case 1212: /* ssbb */ - case 1211: /* dsb */ - value = 1211; /* --> dsb. */ - break; - case 1224: /* cpp */ - case 1223: /* dvp */ - case 1222: /* cfp */ - case 1221: /* tlbi */ - case 1220: /* ic */ - case 1219: /* dc */ - case 1218: /* at */ - case 1217: /* sys */ - value = 1217; /* --> sys. */ - break; - case 2034: /* bic */ - case 1284: /* and */ - value = 1284; /* --> and. */ + case 1214: /* pssbb */ + case 1213: /* ssbb */ + case 1212: /* dsb */ + value = 1212; /* --> dsb. */ + break; + case 1225: /* cpp */ + case 1224: /* dvp */ + case 1223: /* cfp */ + case 1222: /* tlbi */ + case 1221: /* ic */ + case 1220: /* dc */ + case 1219: /* at */ + case 1218: /* sys */ + value = 1218; /* --> sys. */ + break; + case 2035: /* bic */ + case 1285: /* and */ + value = 1285; /* --> and. */ break; - case 1267: /* mov */ - case 1286: /* and */ - value = 1286; /* --> and. */ - break; - case 1271: /* movs */ - case 1287: /* ands */ - value = 1287; /* --> ands. */ + case 1268: /* mov */ + case 1287: /* and */ + value = 1287; /* --> and. */ break; - case 2035: /* cmple */ - case 1322: /* cmpge */ - value = 1322; /* --> cmpge. */ + case 1272: /* movs */ + case 1288: /* ands */ + value = 1288; /* --> ands. */ break; - case 2038: /* cmplt */ - case 1325: /* cmpgt */ - value = 1325; /* --> cmpgt. */ + case 2036: /* cmple */ + case 1323: /* cmpge */ + value = 1323; /* --> cmpge. */ break; - case 2036: /* cmplo */ - case 1327: /* cmphi */ - value = 1327; /* --> cmphi. */ + case 2039: /* cmplt */ + case 1326: /* cmpgt */ + value = 1326; /* --> cmpgt. */ break; - case 2037: /* cmpls */ - case 1330: /* cmphs */ - value = 1330; /* --> cmphs. */ + case 2037: /* cmplo */ + case 1328: /* cmphi */ + value = 1328; /* --> cmphi. */ break; - case 1264: /* mov */ - case 1352: /* cpy */ - value = 1352; /* --> cpy. */ + case 2038: /* cmpls */ + case 1331: /* cmphs */ + value = 1331; /* --> cmphs. */ break; - case 1266: /* mov */ + case 1265: /* mov */ case 1353: /* cpy */ value = 1353; /* --> cpy. */ break; - case 2045: /* fmov */ - case 1269: /* mov */ + case 1267: /* mov */ case 1354: /* cpy */ value = 1354; /* --> cpy. */ break; - case 1259: /* mov */ - case 1366: /* dup */ - value = 1366; /* --> dup. */ + case 2046: /* fmov */ + case 1270: /* mov */ + case 1355: /* cpy */ + value = 1355; /* --> cpy. */ break; - case 1261: /* mov */ - case 1258: /* mov */ + case 1260: /* mov */ case 1367: /* dup */ value = 1367; /* --> dup. */ break; - case 2044: /* fmov */ - case 1263: /* mov */ + case 1262: /* mov */ + case 1259: /* mov */ case 1368: /* dup */ value = 1368; /* --> dup. */ break; - case 1262: /* mov */ - case 1369: /* dupm */ - value = 1369; /* --> dupm. */ + case 2045: /* fmov */ + case 1264: /* mov */ + case 1369: /* dup */ + value = 1369; /* --> dup. */ break; - case 2039: /* eon */ - case 1371: /* eor */ - value = 1371; /* --> eor. */ + case 1263: /* mov */ + case 1370: /* dupm */ + value = 1370; /* --> dupm. */ break; - case 1272: /* not */ - case 1373: /* eor */ - value = 1373; /* --> eor. */ + case 2040: /* eon */ + case 1372: /* eor */ + value = 1372; /* --> eor. */ break; - case 1273: /* nots */ - case 1374: /* eors */ - value = 1374; /* --> eors. */ + case 1273: /* not */ + case 1374: /* eor */ + value = 1374; /* --> eor. */ break; - case 2040: /* facle */ - case 1379: /* facge */ - value = 1379; /* --> facge. */ + case 1274: /* nots */ + case 1375: /* eors */ + value = 1375; /* --> eors. */ break; - case 2041: /* faclt */ - case 1380: /* facgt */ - value = 1380; /* --> facgt. */ + case 2041: /* facle */ + case 1380: /* facge */ + value = 1380; /* --> facge. */ break; - case 2042: /* fcmle */ - case 1393: /* fcmge */ - value = 1393; /* --> fcmge. */ + case 2042: /* faclt */ + case 1381: /* facgt */ + value = 1381; /* --> facgt. */ break; - case 2043: /* fcmlt */ - case 1395: /* fcmgt */ - value = 1395; /* --> fcmgt. */ + case 2043: /* fcmle */ + case 1394: /* fcmge */ + value = 1394; /* --> fcmge. */ break; - case 1256: /* fmov */ - case 1401: /* fcpy */ - value = 1401; /* --> fcpy. */ + case 2044: /* fcmlt */ + case 1396: /* fcmgt */ + value = 1396; /* --> fcmgt. */ break; - case 1255: /* fmov */ - case 1424: /* fdup */ - value = 1424; /* --> fdup. */ + case 1257: /* fmov */ + case 1402: /* fcpy */ + value = 1402; /* --> fcpy. */ break; - case 1257: /* mov */ - case 1755: /* orr */ - value = 1755; /* --> orr. */ + case 1256: /* fmov */ + case 1425: /* fdup */ + value = 1425; /* --> fdup. */ break; - case 2046: /* orn */ + case 1258: /* mov */ case 1756: /* orr */ value = 1756; /* --> orr. */ break; - case 1260: /* mov */ - case 1758: /* orr */ - value = 1758; /* --> orr. */ + case 2047: /* orn */ + case 1757: /* orr */ + value = 1757; /* --> orr. */ break; - case 1270: /* movs */ - case 1759: /* orrs */ - value = 1759; /* --> orrs. */ + case 1261: /* mov */ + case 1759: /* orr */ + value = 1759; /* --> orr. */ break; - case 1265: /* mov */ - case 1821: /* sel */ - value = 1821; /* --> sel. */ + case 1271: /* movs */ + case 1760: /* orrs */ + value = 1760; /* --> orrs. */ break; - case 1268: /* mov */ + case 1266: /* mov */ case 1822: /* sel */ value = 1822; /* --> sel. */ break; + case 1269: /* mov */ + case 1823: /* sel */ + value = 1823; /* --> sel. */ + break; default: return NULL; } @@ -771,6 +772,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 104: return aarch64_ins_prfop (self, info, code, inst, errors); case 105: + return aarch64_ins_none (self, info, code, inst, errors); case 106: return aarch64_ins_hint (self, info, code, inst, errors); case 107: |