diff options
author | Christian Weisgerber <naddy@cvs.openbsd.org> | 2012-09-07 22:33:02 +0000 |
---|---|---|
committer | Christian Weisgerber <naddy@cvs.openbsd.org> | 2012-09-07 22:33:02 +0000 |
commit | 3d31d03122482af0e2e8615bd4c3f27b73b7048d (patch) | |
tree | 4670d99b1212c7c296d418a0311cd33dbe92b3ff /gnu | |
parent | 0cc08fbe6c2d8094923a6d3146fc0aaf679f877d (diff) |
disassemble the rdrand instruction on i386/amd64
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c | 22 | ||||
-rw-r--r-- | gnu/usr.bin/binutils/opcodes/i386-dis.c | 2 |
2 files changed, 16 insertions, 8 deletions
diff --git a/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c b/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c index d8fcf6d36c1..f0db2b45b7f 100644 --- a/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c +++ b/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c @@ -5259,14 +5259,22 @@ VMX_Fixup (int extrachar ATTRIBUTE_UNUSED, int sizeflag) static void OP_VMX (int bytemode, int sizeflag) { - used_prefixes |= (prefixes & (PREFIX_DATA | PREFIX_REPZ)); - if (prefixes & PREFIX_DATA) - strcpy (obuf, "vmclear"); - else if (prefixes & PREFIX_REPZ) - strcpy (obuf, "vmxon"); + if (mod == 3) + { + strcpy (obuf, "rdrand"); + OP_E (v_mode, sizeflag); + } else - strcpy (obuf, "vmptrld"); - OP_E (bytemode, sizeflag); + { + used_prefixes |= (prefixes & (PREFIX_DATA | PREFIX_REPZ)); + if (prefixes & PREFIX_DATA) + strcpy (obuf, "vmclear"); + else if (prefixes & PREFIX_REPZ) + strcpy (obuf, "vmxon"); + else + strcpy (obuf, "vmptrld"); + OP_E (bytemode, sizeflag); + } } static void diff --git a/gnu/usr.bin/binutils/opcodes/i386-dis.c b/gnu/usr.bin/binutils/opcodes/i386-dis.c index 67ff9e3c007..cb52199b519 100644 --- a/gnu/usr.bin/binutils/opcodes/i386-dis.c +++ b/gnu/usr.bin/binutils/opcodes/i386-dis.c @@ -1392,7 +1392,7 @@ static const struct dis386 grps[][8] = { { "(bad)", XX, XX, XX }, { "(bad)", XX, XX, XX }, { "(bad)", XX, XX, XX }, - { "(bad)", XX, XX, XX }, + { "rdrand", Ev, XX, XX }, { "(bad)", XX, XX, XX }, }, /* GRP10 */ |