PERFORCE change 1033109 for review

John Baldwin jhb at FreeBSD.org
Thu Oct 10 14:29:33 UTC 2013


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

Change 1033109 by jhb at jhb_jhbbsd on 2013/10/10 14:29:25

	Untested bits for rdrand in ddb.

Affected files ...

.. //depot/projects/smpng/sys/amd64/amd64/db_disasm.c#13 edit
.. //depot/projects/smpng/sys/modules/x86dis/x86dis.c#9 edit

Differences ...

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

@@ -628,6 +628,17 @@
 	{ "",      TRUE, NONE, 0,	 0 }
 };
 
+static const struct inst db_Grp9b[] = {
+	{ "",      TRUE, NONE, 0,	 0 },
+	{ "",      TRUE, NONE, 0,	 0 },
+	{ "",      TRUE, NONE, 0,	 0 },
+	{ "",      TRUE, NONE, 0,	 0 },
+	{ "",      TRUE, NONE, 0,	 0 },
+	{ "",      TRUE, NONE, 0,	 0 },
+	{ "rdrand",TRUE, LONG, op1(Ril), 0 },
+	{ "",      TRUE, NONE, 0,	 0 }
+};
+
 static const struct inst db_inst_table[256] = {
 /*00*/	{ "add",   TRUE,  BYTE,  op2(R, E),  0 },
 /*01*/	{ "add",   TRUE,  LONG,  op2(R, E),  0 },
@@ -1300,7 +1311,13 @@
 	i_size = ip->i_size;
 	i_mode = ip->i_mode;
 
-	if (ip->i_extra == db_Grp1 || ip->i_extra == db_Grp2 ||
+	if (ip->i_extra == db_Grp9 && f_mod(rex, regmodrm) == 3) {
+	    ip = &db_Grp9b[f_reg(rex, regmodrm)];
+	    i_name = ip->i_name;
+	    i_size = ip->i_size;
+	    i_mode = ip->i_mode;
+	}
+	else if (ip->i_extra == db_Grp1 || ip->i_extra == db_Grp2 ||
 	    ip->i_extra == db_Grp6 || ip->i_extra == db_Grp7 ||
 	    ip->i_extra == db_Grp8 || ip->i_extra == db_Grp9 ||
 	    ip->i_extra == db_Grp15) {

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

@@ -61,6 +61,24 @@
 	return (low | ((uint64_t)high << 32));
 }
 
+static __inline uint32_t
+rdrand(void)
+{
+	uint32_t val;
+
+	__asm __volatile("rdrand %0" : "=r" (val));
+	return (val);
+}
+
+static __inline uint64_t
+rdrand64(void)
+{
+	uint64_t val;
+
+	__asm __volatile("rdrand %0" : "=r" (val));
+	return (val);
+}
+
 extern void
 isn_list(char *addr, uint32_t reg, uint64_t mask, uint64_t val);
 


More information about the p4-projects mailing list