summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneal <neal>2008-02-18 10:24:25 +0000
committerneal <neal>2008-02-18 10:24:25 +0000
commit9842d5c010544a3f08a82a4570ab3c73e0853375 (patch)
treebd277680fdbcf8ab6e8e9f663b5f3d86460a9708
parent79b54addc00233d22e175fb85491f5d39492c709 (diff)
2008-02-18 Neal H. Walfield <neal@gnu.org>
* cap-lookup.c (lookup) [RM_INTERN]: When generating a capability to an object in a folio, don't lookup the object and then use object_to_cap, just use folio_object_cap.
-rw-r--r--viengoos/ChangeLog6
-rw-r--r--viengoos/cap-lookup.c32
2 files changed, 13 insertions, 25 deletions
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog
index 84ae39d..563a886 100644
--- a/viengoos/ChangeLog
+++ b/viengoos/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-18 Neal H. Walfield <neal@gnu.org>
+
+ * cap-lookup.c (lookup) [RM_INTERN]: When generating a capability
+ to an object in a folio, don't lookup the object and then use
+ object_to_cap, just use folio_object_cap.
+
2008-02-16 Neal H. Walfield <neal@gnu.org>
* object.h (struct object_desc): Add fields mapped, shared and
diff --git a/viengoos/cap-lookup.c b/viengoos/cap-lookup.c
index 05bbabb..84b4438 100644
--- a/viengoos/cap-lookup.c
+++ b/viengoos/cap-lookup.c
@@ -201,39 +201,21 @@ lookup (activity_t activity,
}
struct object *object = cap_to_object (activity, root);
-#ifdef RM_INTERN
if (! object)
- {
- debug (1, "Failed to get object with OID " OID_FMT,
- OID_PRINTF (root->oid));
- return false;
- }
-#else
- assertx (object, ADDR_FMT "(%s) has no shadow object",
- ADDR_PRINTF (addr_chop (address, remaining)),
- cap_type_string (root->type));
+ {
+#ifdef RM_INTERN
+ debug (1, "Failed to get object with OID " OID_FMT,
+ OID_PRINTF (root->oid));
#endif
+ return false;
+ }
struct folio *folio = (struct folio *) object;
int i = extract_bits64_inv (addr, remaining - 1, FOLIO_OBJECTS_LOG2);
#ifdef RM_INTERN
root = &fake_slot;
- if (folio_object_type (folio, i) == cap_void)
- {
- memset (root, 0, sizeof (*root));
- root->type = cap_void;
- }
- else
- {
- struct object_desc *fdesc;
- fdesc = object_to_object_desc (object);
-
- object = object_find (activity, fdesc->oid + i + 1,
- folio_object_policy (folio, i));
- assert (object);
- *root = object_to_cap (object);
- }
+ *root = folio_object_cap (folio, i);
#else
root = &folio->objects[i];
#endif