aboutsummaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/amd64/amd64/pmap.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/arch/amd64/amd64/pmap.c b/sys/arch/amd64/amd64/pmap.c
index 6eca948..9071722 100644
--- a/sys/arch/amd64/amd64/pmap.c
+++ b/sys/arch/amd64/amd64/pmap.c
@@ -235,8 +235,8 @@ pmap_unmap(struct vm_ctx *ctx, struct vas vas, vaddr_t va)
return pmap_modify_tbl(ctx, vas, va, 0);
}
-struct vas
-pmap_create_vas(struct vm_ctx *ctx)
+int
+pmap_create_vas(struct vm_ctx *ctx, struct vas *res)
{
struct vas current_vas = pmap_read_vas();
struct vas new_vas = {0};
@@ -250,8 +250,7 @@ pmap_create_vas(struct vm_ctx *ctx)
new_vas.top_level = vm_alloc_pageframe(1);
if (new_vas.top_level == 0) {
- /* Top level may remain zero to denote failure */
- return new_vas;
+ return -1;
}
src = PHYS_TO_VIRT(current_vas.top_level);
@@ -269,7 +268,8 @@ pmap_create_vas(struct vm_ctx *ctx)
dest[i] = src[i];
}
- return new_vas;
+ *res = new_vas;
+ return 0;
}
void