Author: avg
Date: Fri Jul  6 14:41:02 2012
New Revision: 238168
URL: http://svn.freebsd.org/changeset/base/238168

Log:
  r237748 continuation: segment-override prefixes are not invalid in long mode
  
  Update DTrace disassembler accordingly.  The code to treat the prefixes
  as null prefixes was already in place.
  Although in practice compilers seem to generate only cs-prefix for use
  in long NOPs, the same treatment is applied to all of cs, ds, es, ss for
  consistency.
  
  Reported by:  emaste
  Tested by:    emaste
  Obtained from:        Illumos commit 13442:4adbe6de60c8 (+ local changes)
  MFC after:    5 days

Modified:
  head/sys/cddl/dev/dtrace/amd64/dis_tables.c
  head/sys/cddl/dev/dtrace/i386/dis_tables.c

Modified: head/sys/cddl/dev/dtrace/amd64/dis_tables.c
==============================================================================
--- head/sys/cddl/dev/dtrace/amd64/dis_tables.c Fri Jul  6 14:28:18 2012        
(r238167)
+++ head/sys/cddl/dev/dtrace/amd64/dis_tables.c Fri Jul  6 14:41:02 2012        
(r238168)
@@ -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: head/sys/cddl/dev/dtrace/i386/dis_tables.c
==============================================================================
--- head/sys/cddl/dev/dtrace/i386/dis_tables.c  Fri Jul  6 14:28:18 2012        
(r238167)
+++ head/sys/cddl/dev/dtrace/i386/dis_tables.c  Fri Jul  6 14:41:02 2012        
(r238168)
@@ -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-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to