PERFORCE change 718517 for review
Robert Watson
rwatson at FreeBSD.org
Sun Sep 15 20:16:12 UTC 2013
http://p4web.freebsd.org/@@718517?ac=10
Change 718517 by rwatson at rwatson_zenith_cl_cam_ac_uk on 2013/09/15 20:15:56
Add some initial code to /bin/cheritest's ccall path to set up
code and data capabilities for CCall in userspace. Numerous
current caveats, some identified in the comment.
Affected files ...
.. //depot/projects/ctsrd/cheribsd/src/bin/cheritest/cheritest.c#16 edit
Differences ...
==== //depot/projects/ctsrd/cheribsd/src/bin/cheritest/cheritest.c#16 (text+ko) ====
@@ -102,7 +102,30 @@
cheritest_ccall(void)
{
- /* XXXRW: Temporary nop semantics. */
+ /*-
+ * Construct a code capability in $c10, and a data capability in $c11,
+ * starting with $c0 for both.
+ *
+ * Current limitations:
+ * - Doesn't set the type (XXXRW: new or old semantics?)
+ * - Doesn't use sealing.
+ * - $c11 doesn't matter as sandbox_creturn doesn't access data.
+ * - We don't flush registers before CCall.
+ * - We don't restore registers after CCall.
+ */
+ CHERI_CINCBASE(10, 0, sandbox_creturn);
+ /* XXXRW: CHERI_CSETTYPE(10, 10, sandbox_creturn); */
+ CHERI_CSETLEN(10, 10, 4); /* XXXRW: Use symbols not magic. */
+ CHERI_CANDPERM(10, 10, CHERI_PERM_EXECUTE);
+ /* XXXRW: CHERI_CSEALCODE(10, 10); */
+
+ CHERI_CINCBASE(11, 0, sandbox_creturn);
+ /* XXXRW: CHERI_CSETTYPE(11, 11, sandbox_creturn); */
+ CHERI_CSETLEN(11, 11, 4); /* XXXRW: Use symbols not magic. */
+ CHERI_CANDPERM(11, 11, CHERI_PERM_LOAD);
+ /* XXXRW: CHERI_CSEALDATA(11, 11); */
+
+ /* Invoke capability. */
CHERI_CCALL(10, 11);
}
More information about the p4-projects
mailing list