H.J. Lu
04ef582ace
x86: Add NOTRACK prefix support
For register indirect branches, NOTRACK prefix (0x3e), which is also
the DS segment register prefix, can be used to ignore the CET indirect
branch track.
gas/
* config/tc-i386.c (REX_PREFIX): Changed to 7.
(NOTRACK_PREFIX): New.
(MAX_PREFIXES): Changed to 8.
(_i386_insn): Add notrack_prefix.
(PREFIX_GROUP): Add PREFIX_DS.
(add_prefix): Return PREFIX_DS for DS_PREFIX_OPCODE.
(md_assemble): Check if NOTRACK prefix is supported.
(parse_insn): Set notrack_prefix and issue an error for
other prefixes after NOTRACK prefix.
* testsuite/gas/i386/i386.exp: Run tests for NOTRACK prefix.
* testsuite/gas/i386/notrack-intel.d: New file.
* testsuite/gas/i386/notrack.d: Likewise.
* testsuite/gas/i386/notrack.s: Likewise.
* testsuite/gas/i386/notrackbad.l: Likewise.
* testsuite/gas/i386/notrackbad.s: Likewise.
* testsuite/gas/i386/x86-64-notrack-intel.d: Likewise.
* testsuite/gas/i386/x86-64-notrack.d: Likewise.
* testsuite/gas/i386/x86-64-notrack.s: Likewise.
* testsuite/gas/i386/x86-64-notrackbad.l: Likewise.
* testsuite/gas/i386/x86-64-notrackbad.s: Likewise.
include/
* include/opcode/i386.h (NOTRACK_PREFIX_OPCODE): New.
opcodes/
* i386-dis.c (NOTRACK_Fixup): New.
(NOTRACK): Likewise.
(NOTRACK_PREFIX): Likewise.
(last_active_prefix): Likewise.
(reg_table): Use NOTRACK on indirect call and jmp.
(ckprefix): Set last_active_prefix.
(prefix_name): Return "notrack" for NOTRACK_PREFIX.
* i386-gen.c (opcode_modifiers): Add NoTrackPrefixOk.
* i386-opc.h (NoTrackPrefixOk): New.
(i386_opcode_modifier): Add notrackprefixok.
* i386-opc.tbl: Add NoTrackPrefixOk to indirect call and jmp.
Add notrack.
* i386-tbl.h: Regenerated.
2017-05-22 11:02:58 -07:00
..
2017-02-24 18:29:00 +00:00
2017-01-02 14:08:56 +10:30
2017-05-10 14:42:22 +02:00
2017-01-02 14:08:56 +10:30
2017-05-10 14:42:22 +02:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2016-01-01 22:59:17 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-05-14 16:06:06 -04:00
2017-01-02 14:08:56 +10:30
2017-05-22 11:02:58 -07:00
2017-01-25 12:30:52 +00:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-05-15 13:57:10 +01:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-25 12:30:52 +00:00
2017-01-25 12:30:52 +00:00
2017-01-25 12:30:52 +00:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-04-11 07:43:21 +09:30
2017-01-25 12:30:52 +00:00
2017-01-02 14:08:56 +10:30
2017-03-31 09:35:11 -07:00
2017-01-03 17:42:01 +00:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-03-21 14:21:02 +01:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-05-19 09:27:08 -07:00
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-01-02 14:08:56 +10:30
2017-03-30 10:57:21 +01:00
2017-01-02 14:08:56 +10:30