Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 May 2014 21:06:48 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 1193935 for review
Message-ID:  <201405172106.s4HL6mMw000986@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@1193935?ac=10

Change 1193935 by jhb@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");
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405172106.s4HL6mMw000986>