summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorRichard Lowe <richlowe@richlowe.net>2011-06-15 13:15:13 +0100
committerRichard Lowe <richlowe@richlowe.net>2011-07-02 22:17:00 -0400
commit931503e3de23dfd4f2820165d4ca0584660f9e17 (patch)
tree67fb4ef509b7e119c12280943f927face025497a /usr/src
parent67eb56e2a77b4816930108080051bc8887947c84 (diff)
downloadillumos-joyent-931503e3de23dfd4f2820165d4ca0584660f9e17.tar.gz
dis: Decode multibyte nops generated by GCC
This decodes 0f 1f (nopl) and 66 0f 1f (nopw), which seem to be the ones most commonly generated by gcc (determined by disassembling /kernel). unused opcodes in [0f18, 0f1f) are technically reserved nops, and used by Intel as "hinting nops", but I haven't found them generated. It doesn't seem to deal with '66 2e 0f 1f' (nopw %cs:) but I'm not certain as to why. This seems to mostly be generated inter-function however, and so this may not be such a big deal.
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/common/dis/i386/dis_tables.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/usr/src/common/dis/i386/dis_tables.c b/usr/src/common/dis/i386/dis_tables.c
index 116191a462..46556e2bb9 100644
--- a/usr/src/common/dis/i386/dis_tables.c
+++ b/usr/src/common/dis/i386/dis_tables.c
@@ -1443,7 +1443,7 @@ const instable_t dis_op0F[16][16] = {
/* [10] */ TNSZ("movups",XMMO,16), TNSZ("movups",XMMOS,16),TNSZ("movlps",XMMO,8), TNSZ("movlps",XMMOS,8),
/* [14] */ TNSZ("unpcklps",XMMO,16),TNSZ("unpckhps",XMMO,16),TNSZ("movhps",XMMOM,8),TNSZ("movhps",XMMOMS,8),
/* [18] */ IND(dis_op0F18), INVALID, INVALID, INVALID,
-/* [1C] */ INVALID, INVALID, INVALID, INVALID,
+/* [1C] */ INVALID, INVALID, INVALID, TS("nop", M),
}, {
/* [20] */ TSy("mov",SREG), TSy("mov",SREG), TSy("mov",SREG), TSy("mov",SREG),
/* [24] */ TSx("mov",SREG), INVALID, TSx("mov",SREG), INVALID,