summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/gas
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2012-07-06 14:28:18 +0000
committerjhb <jhb@FreeBSD.org>2012-07-06 14:28:18 +0000
commit56b27dd2e7dd3da32311fcf8e49d670f4cf1a6c9 (patch)
treec0d43c2cd84c8f3e7897c688f8aba2caafe9e81c /contrib/binutils/gas
parent56c146fdcbd43808f8d51e728d011961a785854a (diff)
downloadFreeBSD-src-56b27dd2e7dd3da32311fcf8e49d670f4cf1a6c9.zip
FreeBSD-src-56b27dd2e7dd3da32311fcf8e49d670f4cf1a6c9.tar.gz
Add support for the 'invept' and 'invvpid' instructions. Beyond simply
adding appropriate table entries, the assembler had to be adjusted as these are the first non-SSE instructions to use a 3-byte opcode (and a mandatory prefix to boot). MFC after: 1 month
Diffstat (limited to 'contrib/binutils/gas')
-rw-r--r--contrib/binutils/gas/config/tc-i386.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/contrib/binutils/gas/config/tc-i386.c b/contrib/binutils/gas/config/tc-i386.c
index 4c13a72..9af47c5 100644
--- a/contrib/binutils/gas/config/tc-i386.c
+++ b/contrib/binutils/gas/config/tc-i386.c
@@ -3990,6 +3990,16 @@ output_insn (void)
goto check_prefix;
}
}
+ else if (i.tm.base_opcode == 0x660f3880 || i.tm.base_opcode == 0x660f3881)
+ {
+ /* invept and invvpid are 3 byte instructions with a
+ mandatory prefix. */
+ if (i.tm.base_opcode & 0xff000000)
+ {
+ prefix = (i.tm.base_opcode >> 24) & 0xff;
+ add_prefix (prefix);
+ }
+ }
else if ((i.tm.base_opcode & 0xff0000) != 0)
{
prefix = (i.tm.base_opcode >> 16) & 0xff;
@@ -4029,6 +4039,12 @@ output_insn (void)
p = frag_more (3);
*p++ = (i.tm.base_opcode >> 16) & 0xff;
}
+ else if (i.tm.base_opcode == 0x660f3880 ||
+ i.tm.base_opcode == 0x660f3881)
+ {
+ p = frag_more (3);
+ *p++ = (i.tm.base_opcode >> 16) & 0xff;
+ }
else
p = frag_more (2);
OpenPOWER on IntegriCloud