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