aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/kernel/vmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv64/kernel/vmem.c')
-rw-r--r--arch/riscv64/kernel/vmem.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/riscv64/kernel/vmem.c b/arch/riscv64/kernel/vmem.c
index 68ccbd3..a3903f1 100644
--- a/arch/riscv64/kernel/vmem.c
+++ b/arch/riscv64/kernel/vmem.c
@@ -345,11 +345,16 @@ vm_t setup_kernel_io(struct vmem *b, vm_t paddr)
}
#endif
+struct uvmem_map {
+ struct vmem *leaf[CSTACK_PAGE - 1];
+};
+
stat_t clone_uvmem(struct vmem *r, struct vmem *b)
{
/** \todo error checking? */
- for (size_t i = 0; i < CSTACK_PAGE; ++i)
- b->leaf[i] = r->leaf[i];
+ struct uvmem_map *rm = (struct uvmem_map *)(r);
+ struct uvmem_map *bm = (struct uvmem_map *)(b);
+ *bm = *rm;
return OK;
}