aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-06-04 23:31:42 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-06-04 23:31:42 +0300
commit3b8990f17c50e946bc1b9bca5997a25d69d0757c (patch)
tree3568e26534c2f2a071736495ea7644d86c726598 /arch
parent4c7286ef7cf3da1897085406f85564faac5185bb (diff)
downloadkmi-3b8990f17c50e946bc1b9bca5997a25d69d0757c.tar.gz
kmi-3b8990f17c50e946bc1b9bca5997a25d69d0757c.zip
slight optimization and brainfart fix
Diffstat (limited to 'arch')
-rw-r--r--arch/riscv64/kernel/vmem.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/arch/riscv64/kernel/vmem.c b/arch/riscv64/kernel/vmem.c
index 89d895f..9edd246 100644
--- a/arch/riscv64/kernel/vmem.c
+++ b/arch/riscv64/kernel/vmem.c
@@ -398,8 +398,8 @@ static void __use_vmem(struct vmem *branch, enum mm_mode m)
else if (m == Sv48)
mode = SATP_MODE_Sv48;
- flush_tlb_full();
csr_write(CSR_SATP, mode | pn);
+ flush_tlb_full();
/* Sv57 && Sv64 in the future? */
/** @todo ASID table for maybe faster context switches? */
}
@@ -468,33 +468,19 @@ vm_t setup_kernel_io(struct vmem *b, vm_t paddr)
void clone_uvmem(struct vmem * restrict r, struct vmem * restrict b)
{
size_t i = 0;
- for (; i < CSTACK_PAGE; i += 8) {
+ for (; i < CSTACK_PAGE; ++i) {
struct vmem *t = r->leaf[i + 0];
if (t == 0)
break;
- b->leaf[i + 0] = t;
- b->leaf[i + 1] = r->leaf[i + 1];
- b->leaf[i + 2] = r->leaf[i + 2];
- b->leaf[i + 3] = r->leaf[i + 3];
- b->leaf[i + 4] = r->leaf[i + 4];
- b->leaf[i + 5] = r->leaf[i + 5];
- b->leaf[i + 6] = r->leaf[i + 6];
- b->leaf[i + 7] = r->leaf[i + 7];
+ b->leaf[i] = t;
}
- for (; i < CSTACK_PAGE; i += 8) {
+ for (; i < CSTACK_PAGE; ++i) {
struct vmem *t = b->leaf[i + 0];
if (t == 0)
break;
- b->leaf[i + 0] = 0;
- b->leaf[i + 1] = 0;
- b->leaf[i + 2] = 0;
- b->leaf[i + 3] = 0;
- b->leaf[i + 4] = 0;
- b->leaf[i + 5] = 0;
- b->leaf[i + 6] = 0;
- b->leaf[i + 7] = 0;
+ b->leaf[i] = 0;
}
}