PERFORCE change 74130 for review

Peter Wemm peter at FreeBSD.org
Wed Mar 30 14:21:23 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=74130

Change 74130 by peter at peter_daintree on 2005/03/30 22:21:12

	Add an explicit forced long override for use by the source arg for movslq
	Add the cmovCC family

Affected files ...

.. //depot/projects/hammer/sys/amd64/amd64/db_disasm.c#7 edit

Differences ...

==== //depot/projects/hammer/sys/amd64/amd64/db_disasm.c#7 (text+ko) ====

@@ -110,9 +110,10 @@
 #define	STI	32			/* FP stack */
 #define	X	33			/* extended FP op */
 #define	XA	34			/* for 'fstcw %ax' */
-#define	El	35			/* address, long size */
+#define	El	35			/* address, long/quad size */
 #define	Ril	36			/* long register in instruction */
 #define	Iba	37			/* byte immediate, don't print if 0xa */
+#define	EL	38			/* address, explicitly long size */
 
 struct inst {
 	const char *	i_name;		/* name */
@@ -238,6 +239,26 @@
 /*3f*/	{ "",	   FALSE, NONE,  0,	      0 },
 };
 
+static const struct inst db_inst_0f4x[] = {
+/*40*/	{ "cmovo",  TRUE, NONE,  op2(E, R),   0 },
+/*41*/	{ "cmovno", TRUE, NONE,  op2(E, R),   0 },
+/*42*/	{ "cmovb",  TRUE, NONE,  op2(E, R),   0 },
+/*43*/	{ "cmovnb", TRUE, NONE,  op2(E, R),   0 },
+/*44*/	{ "cmovz",  TRUE, NONE,  op2(E, R),   0 },
+/*45*/	{ "cmovnz", TRUE, NONE,  op2(E, R),   0 },
+/*46*/	{ "cmovbe", TRUE, NONE,  op2(E, R),   0 },
+/*47*/	{ "cmovnbe",TRUE, NONE,  op2(E, R),   0 },
+
+/*48*/	{ "cmovs",  TRUE, NONE,  op2(E, R),   0 },
+/*49*/	{ "cmovns", TRUE, NONE,  op2(E, R),   0 },
+/*4a*/	{ "cmovp",  TRUE, NONE,  op2(E, R),   0 },
+/*4b*/	{ "cmovnp", TRUE, NONE,  op2(E, R),   0 },
+/*4c*/	{ "cmovl",  TRUE, NONE,  op2(E, R),   0 },
+/*4d*/	{ "cmovnl", TRUE, NONE,  op2(E, R),   0 },
+/*4e*/	{ "cmovle", TRUE, NONE,  op2(E, R),   0 },
+/*4f*/	{ "cmovnle",TRUE, NONE,  op2(E, R),   0 },
+};
+
 static const struct inst db_inst_0f8x[] = {
 /*80*/	{ "jo",    FALSE, NONE,  op1(Dl),     0 },
 /*81*/	{ "jno",   FALSE, NONE,  op1(Dl),     0 },
@@ -342,6 +363,7 @@
 	0,
 	db_inst_0f2x,
 	db_inst_0f3x,
+	db_inst_0f4x,
 	0,
 	0,
 	0,
@@ -649,7 +671,7 @@
 /*60*/	{ "pusha", FALSE, LONG,  0,	     0 },
 /*61*/	{ "popa",  FALSE, LONG,  0,	     0 },
 /*62*/  { "bound", TRUE,  LONG,  op2(E, R),  0 },
-/*63*/	{ "movslq",  TRUE,  NONE,  op2(E,R), 0 },
+/*63*/	{ "movslq",  TRUE,  NONE,  op2(EL,R), 0 },
 
 /*64*/	{ "",      FALSE, NONE,  0,	     0 },
 /*65*/	{ "",      FALSE, NONE,  0,	     0 },
@@ -1160,7 +1182,7 @@
 	seg = 0;
 
 #ifndef _KERNEL
-printf("0x%08x:  ");
+printf("0x%08x:  ", loc);
 #endif
 	/*
 	 * Get prefixes
@@ -1328,6 +1350,11 @@
 		    db_print_address(seg, (rex & REX_W) ? QUAD : LONG, rex, &address);
 		    break;
 
+		case EL:
+		    M("[EL]");
+		    db_print_address(seg, LONG, 0, &address);
+		    break;
+
 		case Ew:
 		    M("[Ew]");
 		    db_print_address(seg, WORD, rex, &address);


More information about the p4-projects mailing list