diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2016-11-11 10:29:07 +0000 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2016-11-11 10:29:07 +0000 |
commit | 8787d804e1cbbd1946239d6c5e560c87d38bac06 (patch) | |
tree | bf469e9f10eb08ac3bed247e17723cd347e08e91 /opcodes/aarch64-asm-2.c | |
parent | 3d731f6949e2b0099cfbe0cf608d60a52a66d354 (diff) | |
download | gdb-8787d804e1cbbd1946239d6c5e560c87d38bac06.zip gdb-8787d804e1cbbd1946239d6c5e560c87d38bac06.tar.gz gdb-8787d804e1cbbd1946239d6c5e560c87d38bac06.tar.bz2 |
[AArch64] Add ARMv8.3 instructions which are in the NOP space
This patch adds support for a subset of the ARMv8.3 pointer authentication
instructions: XPACLRI, PACIA1716, PACIB1716, AUTIA1716, AUTIA1716, PACIAZ,
PACIASP, PACIBZ, PACISP, AUTIAZ, AUTIASP, AUTIBZ, AUTIBSP.
These are aliases to HINT #0x7, HINT #0x8, HINT #0xa, HINT #0xc, HINT #0xe,
HINT #0x18, HINT #0x19, ..., HINT #0x1f respectively.
For more details about pointer authentication in ARMv8.3 see
https://community.arm.com/groups/processors/blog/2016/10/27/armv8-a-architecture-2016-additions
opcodes/
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
* aarch64-tbl.h (aarch64_feature_v8_3, ARMV8_3, V8_3_INSN): New.
(arch64_opcode_table): Add xpaclri, pacia1716, pacib1716, autia1716,
autib1716, paciaz, paciasp, pacibz, pacibsp, autiaz, autiasp, autibz,
autibsp.
* aarch64-asm-2.c: Regenerate.
* aarch64-dis-2.c: Regenerate.
gas/
2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
* testsuite/gas/aarch64/system-3.s: New.
* testsuite/gas/aarch64/system-3.d: New.
* testsuite/gas/aarch64/system.d: Update expected output.
Diffstat (limited to 'opcodes/aarch64-asm-2.c')
-rw-r--r-- | opcodes/aarch64-asm-2.c | 267 |
1 files changed, 140 insertions, 127 deletions
diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index 5977a66..e24a267 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -422,8 +422,21 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) case 1112: /* movz */ value = 1112; /* --> movz. */ break; - case 1126: /* psb */ - case 1125: /* esb */ + case 1151: /* autibsp */ + case 1150: /* autibz */ + case 1149: /* autiasp */ + case 1148: /* autiaz */ + case 1147: /* pacibsp */ + case 1146: /* pacibz */ + case 1145: /* paciasp */ + case 1144: /* paciaz */ + case 1131: /* psb */ + case 1130: /* esb */ + case 1129: /* autib1716 */ + case 1128: /* autia1716 */ + case 1127: /* pacib1716 */ + case 1126: /* pacia1716 */ + case 1125: /* xpaclri */ case 1124: /* sevl */ case 1123: /* sev */ case 1122: /* wfi */ @@ -433,131 +446,131 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) case 1118: /* hint */ value = 1118; /* --> hint. */ break; - case 1135: /* tlbi */ - case 1134: /* ic */ - case 1133: /* dc */ - case 1132: /* at */ - case 1131: /* sys */ - value = 1131; /* --> sys. */ - break; - case 1881: /* bic */ - case 1186: /* and */ - value = 1186; /* --> and. */ - break; - case 1169: /* mov */ - case 1188: /* and */ - value = 1188; /* --> and. */ - break; - case 1173: /* movs */ - case 1189: /* ands */ - value = 1189; /* --> ands. */ - break; - case 1882: /* cmple */ - case 1224: /* cmpge */ - value = 1224; /* --> cmpge. */ - break; - case 1885: /* cmplt */ - case 1227: /* cmpgt */ - value = 1227; /* --> cmpgt. */ - break; - case 1883: /* cmplo */ - case 1229: /* cmphi */ - value = 1229; /* --> cmphi. */ - break; - case 1884: /* cmpls */ - case 1232: /* cmphs */ - value = 1232; /* --> cmphs. */ - break; - case 1166: /* mov */ - case 1254: /* cpy */ - value = 1254; /* --> cpy. */ - break; - case 1168: /* mov */ - case 1255: /* cpy */ - value = 1255; /* --> cpy. */ - break; - case 1892: /* fmov */ - case 1171: /* mov */ - case 1256: /* cpy */ - value = 1256; /* --> cpy. */ - break; - case 1161: /* mov */ - case 1268: /* dup */ - value = 1268; /* --> dup. */ - break; - case 1163: /* mov */ - case 1160: /* mov */ - case 1269: /* dup */ - value = 1269; /* --> dup. */ - break; - case 1891: /* fmov */ - case 1165: /* mov */ - case 1270: /* dup */ - value = 1270; /* --> dup. */ - break; - case 1164: /* mov */ - case 1271: /* dupm */ - value = 1271; /* --> dupm. */ - break; - case 1886: /* eon */ - case 1273: /* eor */ - value = 1273; /* --> eor. */ - break; - case 1174: /* not */ - case 1275: /* eor */ - value = 1275; /* --> eor. */ - break; - case 1175: /* nots */ - case 1276: /* eors */ - value = 1276; /* --> eors. */ - break; - case 1887: /* facle */ - case 1281: /* facge */ - value = 1281; /* --> facge. */ - break; - case 1888: /* faclt */ - case 1282: /* facgt */ - value = 1282; /* --> facgt. */ - break; - case 1889: /* fcmle */ - case 1291: /* fcmge */ - value = 1291; /* --> fcmge. */ - break; - case 1890: /* fcmlt */ - case 1293: /* fcmgt */ - value = 1293; /* --> fcmgt. */ - break; - case 1158: /* fmov */ - case 1299: /* fcpy */ - value = 1299; /* --> fcpy. */ - break; - case 1157: /* fmov */ - case 1316: /* fdup */ - value = 1316; /* --> fdup. */ - break; - case 1159: /* mov */ - case 1614: /* orr */ - value = 1614; /* --> orr. */ - break; - case 1893: /* orn */ - case 1615: /* orr */ - value = 1615; /* --> orr. */ - break; - case 1162: /* mov */ - case 1617: /* orr */ - value = 1617; /* --> orr. */ - break; - case 1172: /* movs */ - case 1618: /* orrs */ - value = 1618; /* --> orrs. */ - break; - case 1167: /* mov */ - case 1674: /* sel */ - value = 1674; /* --> sel. */ - break; - case 1170: /* mov */ - case 1675: /* sel */ - value = 1675; /* --> sel. */ + case 1140: /* tlbi */ + case 1139: /* ic */ + case 1138: /* dc */ + case 1137: /* at */ + case 1136: /* sys */ + value = 1136; /* --> sys. */ + break; + case 1894: /* bic */ + case 1199: /* and */ + value = 1199; /* --> and. */ + break; + case 1182: /* mov */ + case 1201: /* and */ + value = 1201; /* --> and. */ + break; + case 1186: /* movs */ + case 1202: /* ands */ + value = 1202; /* --> ands. */ + break; + case 1895: /* cmple */ + case 1237: /* cmpge */ + value = 1237; /* --> cmpge. */ + break; + case 1898: /* cmplt */ + case 1240: /* cmpgt */ + value = 1240; /* --> cmpgt. */ + break; + case 1896: /* cmplo */ + case 1242: /* cmphi */ + value = 1242; /* --> cmphi. */ + break; + case 1897: /* cmpls */ + case 1245: /* cmphs */ + value = 1245; /* --> cmphs. */ + break; + case 1179: /* mov */ + case 1267: /* cpy */ + value = 1267; /* --> cpy. */ + break; + case 1181: /* mov */ + case 1268: /* cpy */ + value = 1268; /* --> cpy. */ + break; + case 1905: /* fmov */ + case 1184: /* mov */ + case 1269: /* cpy */ + value = 1269; /* --> cpy. */ + break; + case 1174: /* mov */ + case 1281: /* dup */ + value = 1281; /* --> dup. */ + break; + case 1176: /* mov */ + case 1173: /* mov */ + case 1282: /* dup */ + value = 1282; /* --> dup. */ + break; + case 1904: /* fmov */ + case 1178: /* mov */ + case 1283: /* dup */ + value = 1283; /* --> dup. */ + break; + case 1177: /* mov */ + case 1284: /* dupm */ + value = 1284; /* --> dupm. */ + break; + case 1899: /* eon */ + case 1286: /* eor */ + value = 1286; /* --> eor. */ + break; + case 1187: /* not */ + case 1288: /* eor */ + value = 1288; /* --> eor. */ + break; + case 1188: /* nots */ + case 1289: /* eors */ + value = 1289; /* --> eors. */ + break; + case 1900: /* facle */ + case 1294: /* facge */ + value = 1294; /* --> facge. */ + break; + case 1901: /* faclt */ + case 1295: /* facgt */ + value = 1295; /* --> facgt. */ + break; + case 1902: /* fcmle */ + case 1304: /* fcmge */ + value = 1304; /* --> fcmge. */ + break; + case 1903: /* fcmlt */ + case 1306: /* fcmgt */ + value = 1306; /* --> fcmgt. */ + break; + case 1171: /* fmov */ + case 1312: /* fcpy */ + value = 1312; /* --> fcpy. */ + break; + case 1170: /* fmov */ + case 1329: /* fdup */ + value = 1329; /* --> fdup. */ + break; + case 1172: /* mov */ + case 1627: /* orr */ + value = 1627; /* --> orr. */ + break; + case 1906: /* orn */ + case 1628: /* orr */ + value = 1628; /* --> orr. */ + break; + case 1175: /* mov */ + case 1630: /* orr */ + value = 1630; /* --> orr. */ + break; + case 1185: /* movs */ + case 1631: /* orrs */ + value = 1631; /* --> orrs. */ + break; + case 1180: /* mov */ + case 1687: /* sel */ + value = 1687; /* --> sel. */ + break; + case 1183: /* mov */ + case 1688: /* sel */ + value = 1688; /* --> sel. */ break; default: return NULL; } |