PERFORCE change 717817 for review
Robert Watson
rwatson at FreeBSD.org
Sun Sep 15 18:56:48 UTC 2013
http://p4web.freebsd.org/@@717817?ac=10
Change 717817 by rwatson at rwatson_zenith_cl_cam_ac_uk on 2013/09/15 18:56:33
Add two new test comments to bin/cheritest: list privileged CP2
registers, and list the CP2 cause register. Both should (and do)
cause SIGPROT for the user process.
Affected files ...
.. //depot/projects/ctsrd/cheribsd/src/bin/cheritest/cheritest.c#15 edit
Differences ...
==== //depot/projects/ctsrd/cheribsd/src/bin/cheritest/cheritest.c#15 (text+ko) ====
@@ -71,6 +71,8 @@
fprintf(stderr, "cheritest ccall\n");
fprintf(stderr, "cheritest copyregs\n");
fprintf(stderr, "cheritest creturn\n");
+ fprintf(stderr, "cheritest listcausereg\n");
+ fprintf(stderr, "cheritest listprivregs\n");
fprintf(stderr, "cheritest listregs\n");
fprintf(stderr, "cheritest overrun\n");
fprintf(stderr, "cheritest sandbox\n");
@@ -125,6 +127,32 @@
}
static void
+cheritest_listcausereg(void)
+{
+ register_t cause;
+
+ printf("CP2 cause register:\n");
+ CHERI_CGETCAUSE(cause);
+ printf("Cause: %ju\n", (uintmax_t)cause);
+}
+
+static void
+cheritest_listprivregs(void)
+{
+
+ /*
+ * Because of the assembly generated by CP2_CR_GET(), can't use a loop
+ * -- register numbers must be available at compile-time.
+ */
+ printf("CP2 privileged registers:\n");
+ CHERI_CAPREG_PRINT(27);
+ CHERI_CAPREG_PRINT(28);
+ CHERI_CAPREG_PRINT(29);
+ CHERI_CAPREG_PRINT(30);
+ CHERI_CAPREG_PRINT(31);
+}
+
+static void
cheritest_listregs(void)
{
@@ -270,7 +298,11 @@
CHERI_CMOVE(1, 0);
for (i = 0; i < argc; i++) {
- if (strcmp(argv[i], "listregs") == 0)
+ if (strcmp(argv[i], "listcausereg") == 0)
+ cheritest_listcausereg();
+ else if (strcmp(argv[i], "listprivregs") == 0)
+ cheritest_listprivregs();
+ else if (strcmp(argv[i], "listregs") == 0)
cheritest_listregs();
else if (strcmp(argv[i], "ccall") == 0)
cheritest_ccall();
More information about the p4-projects
mailing list