Author: avg
Date: Sun Jul 15 20:38:02 2012
New Revision: 238503
URL: http://svn.freebsd.org/changeset/base/238503
Log:
MFC r238168,238169: further dtrace disassembler fixes for long nop decoding
- segment-override prefixes are not invalid in long mode
- fix nopw (0f 1f) behavior with respect to modifiers
Reported by: emaste
Tested by: emaste
Obtained from: Illumos commit 13442:4adbe6de60c8
Approved by: re (kib)
Modified:
stable/9/sys/cddl/dev/dtrace/amd64/dis_tables.c
stable/9/sys/cddl/dev/dtrace/i386/dis_tables.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/cddl/dev/dtrace/amd64/dis_tables.c
==============================================================================
--- stable/9/sys/cddl/dev/dtrace/amd64/dis_tables.c Sun Jul 15 20:29:48
2012 (r238502)
+++ stable/9/sys/cddl/dev/dtrace/amd64/dis_tables.c Sun Jul 15 20:38:02
2012 (r238503)
@@ -815,7 +815,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,
TNS("nopw", M),
+/* [1C] */ INVALID, INVALID, INVALID,
TS("nopw", Mw),
}, {
/* [20] */ TSy("mov",SREG), TSy("mov",SREG),
TSy("mov",SREG), TSy("mov",SREG),
/* [24] */ TSx("mov",SREG), INVALID,
TSx("mov",SREG), INVALID,
@@ -1146,14 +1146,14 @@ const instable_t dis_distable[16][16] =
/* [1,C] */ TNS("sbbb",IA), TS("sbb",IA),
TSx("push",SEG), TSx("pop",SEG),
}, {
/* [2,0] */ TNS("andb",RMw), TS("and",RMw),
TNS("andb",MRw), TS("and",MRw),
-/* [2,4] */ TNS("andb",IA), TS("and",IA),
TNSx("%es:",OVERRIDE), TNSx("daa",NORM),
+/* [2,4] */ TNS("andb",IA), TS("and",IA),
TNS("%es:",OVERRIDE), TNSx("daa",NORM),
/* [2,8] */ TNS("subb",RMw), TS("sub",RMw),
TNS("subb",MRw), TS("sub",MRw),
-/* [2,C] */ TNS("subb",IA), TS("sub",IA),
TNSx("%cs:",OVERRIDE), TNSx("das",NORM),
+/* [2,C] */ TNS("subb",IA), TS("sub",IA),
TNS("%cs:",OVERRIDE), TNSx("das",NORM),
}, {
/* [3,0] */ TNS("xorb",RMw), TS("xor",RMw),
TNS("xorb",MRw), TS("xor",MRw),
-/* [3,4] */ TNS("xorb",IA), TS("xor",IA),
TNSx("%ss:",OVERRIDE), TNSx("aaa",NORM),
+/* [3,4] */ TNS("xorb",IA), TS("xor",IA),
TNS("%ss:",OVERRIDE), TNSx("aaa",NORM),
/* [3,8] */ TNS("cmpb",RMw), TS("cmp",RMw),
TNS("cmpb",MRw), TS("cmp",MRw),
-/* [3,C] */ TNS("cmpb",IA), TS("cmp",IA),
TNSx("%ds:",OVERRIDE), TNSx("aas",NORM),
+/* [3,C] */ TNS("cmpb",IA), TS("cmp",IA),
TNS("%ds:",OVERRIDE), TNSx("aas",NORM),
}, {
/* [4,0] */ TSx("inc",R), TSx("inc",R), TSx("inc",R),
TSx("inc",R),
/* [4,4] */ TSx("inc",R), TSx("inc",R), TSx("inc",R),
TSx("inc",R),
Modified: stable/9/sys/cddl/dev/dtrace/i386/dis_tables.c
==============================================================================
--- stable/9/sys/cddl/dev/dtrace/i386/dis_tables.c Sun Jul 15 20:29:48
2012 (r238502)
+++ stable/9/sys/cddl/dev/dtrace/i386/dis_tables.c Sun Jul 15 20:38:02
2012 (r238503)
@@ -815,7 +815,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,
TNS("nopw", M),
+/* [1C] */ INVALID, INVALID, INVALID,
TS("nopw", Mw),
}, {
/* [20] */ TSy("mov",SREG), TSy("mov",SREG),
TSy("mov",SREG), TSy("mov",SREG),
/* [24] */ TSx("mov",SREG), INVALID,
TSx("mov",SREG), INVALID,
@@ -1146,14 +1146,14 @@ const instable_t dis_distable[16][16] =
/* [1,C] */ TNS("sbbb",IA), TS("sbb",IA),
TSx("push",SEG), TSx("pop",SEG),
}, {
/* [2,0] */ TNS("andb",RMw), TS("and",RMw),
TNS("andb",MRw), TS("and",MRw),
-/* [2,4] */ TNS("andb",IA), TS("and",IA),
TNSx("%es:",OVERRIDE), TNSx("daa",NORM),
+/* [2,4] */ TNS("andb",IA), TS("and",IA),
TNS("%es:",OVERRIDE), TNSx("daa",NORM),
/* [2,8] */ TNS("subb",RMw), TS("sub",RMw),
TNS("subb",MRw), TS("sub",MRw),
-/* [2,C] */ TNS("subb",IA), TS("sub",IA),
TNSx("%cs:",OVERRIDE), TNSx("das",NORM),
+/* [2,C] */ TNS("subb",IA), TS("sub",IA),
TNS("%cs:",OVERRIDE), TNSx("das",NORM),
}, {
/* [3,0] */ TNS("xorb",RMw), TS("xor",RMw),
TNS("xorb",MRw), TS("xor",MRw),
-/* [3,4] */ TNS("xorb",IA), TS("xor",IA),
TNSx("%ss:",OVERRIDE), TNSx("aaa",NORM),
+/* [3,4] */ TNS("xorb",IA), TS("xor",IA),
TNS("%ss:",OVERRIDE), TNSx("aaa",NORM),
/* [3,8] */ TNS("cmpb",RMw), TS("cmp",RMw),
TNS("cmpb",MRw), TS("cmp",MRw),
-/* [3,C] */ TNS("cmpb",IA), TS("cmp",IA),
TNSx("%ds:",OVERRIDE), TNSx("aas",NORM),
+/* [3,C] */ TNS("cmpb",IA), TS("cmp",IA),
TNS("%ds:",OVERRIDE), TNSx("aas",NORM),
}, {
/* [4,0] */ TSx("inc",R), TSx("inc",R), TSx("inc",R),
TSx("inc",R),
/* [4,4] */ TSx("inc",R), TSx("inc",R), TSx("inc",R),
TSx("inc",R),
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"