PERFORCE change 1193935 for review

John Baldwin jhb at FreeBSD.org
Sat May 17 21:06:49 UTC 2014


http://p4web.freebsd.org/@@1193935?ac=10

Change 1193935 by jhb at jhb_pippin on 2014/05/17 21:06:27

	Finish rdseed/rdrand.

Affected files ...

.. //depot/projects/smpng/sys/amd64/amd64/db_disasm.c#15 edit
.. //depot/projects/smpng/sys/modules/x86dis/x86dis.c#10 edit

Differences ...

==== //depot/projects/smpng/sys/amd64/amd64/db_disasm.c#15 (text+ko) ====

@@ -71,6 +71,7 @@
 #define	R	5			/* register, in 'reg' field */
 #define	Rw	6			/* word register, in 'reg' field */
 #define	Rq	39			/* quad register, in 'reg' field */
+#define	Rv	40			/* register in 'r/m' field */
 #define	Ri	7			/* register in instruction */
 #define	S	8			/* segment reg, in 'reg' field */
 #define	Si	9			/* segment reg, in instruction */
@@ -635,8 +636,8 @@
 	{ "",      TRUE, NONE, 0,	 0 },
 	{ "",      TRUE, NONE, 0,	 0 },
 	{ "",      TRUE, NONE, 0,	 0 },
-	{ "rdrand",TRUE, LONG, op1(Ril), 0 },
-	{ "",      TRUE, NONE, 0,	 0 }
+	{ "rdrand",TRUE, LONG, op1(Rv),  0 },
+	{ "rdseed",TRUE, LONG, op1(Rv),  0 }
 };
 
 static const struct inst db_inst_table[256] = {
@@ -1528,6 +1529,10 @@
 		    db_printf("%s", db_reg[rex != 0 ? 1 : 0][(rex & REX_R) ? QUAD : LONG][f_rm(rex, inst)]);
 		    break;
 
+	        case Rv:
+		    db_printf("%s", db_reg[rex != 0 ? 1 : 0][(size == LONG && (rex & REX_W)) ? QUAD : size][f_rm(rex, regmodrm)]);
+		    break;
+
 		case S:
 		    db_printf("%s", db_seg_reg[f_reg(rex, regmodrm)]);
 		    break;

==== //depot/projects/smpng/sys/modules/x86dis/x86dis.c#10 (text+ko) ====

@@ -120,4 +120,8 @@
 	__asm __volatile("vmwrite %0,%1" :: "m" (*addr), "r" ((uint64_t)reg));
 	__asm __volatile("vmxoff");
 	__asm __volatile("vmxon %0" :: "m" (*addr));
+	(void)rdrand();
+	(void)rdrand64();
+	__asm __volatile("rdseed %0" : "=r" (val));
+	__asm __volatile("rdseed %edi");
 }


More information about the p4-projects mailing list