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-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to