From a6b5a205979752e86e795d0fd9762929592f9d4f Mon Sep 17 00:00:00 2001 From: kettenis Date: Sun, 2 May 2021 19:43:16 +0000 Subject: [PATCH] We need to set the dirty bit whenever we add write permission otherwise a write will still fault on hardware that doesn't implement hardware updates for these bits. ok drahn@ --- sys/arch/riscv64/riscv64/pmap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/arch/riscv64/riscv64/pmap.c b/sys/arch/riscv64/riscv64/pmap.c index a38e92f6465..1b1ed7b41a2 100644 --- a/sys/arch/riscv64/riscv64/pmap.c +++ b/sys/arch/riscv64/riscv64/pmap.c @@ -219,23 +219,23 @@ VP_IDX3(vaddr_t va) const pt_entry_t ap_bits_user[8] = { [PROT_NONE] = PTE_U|PTE_A|PTE_R, [PROT_READ] = PTE_U|PTE_A|PTE_R, - [PROT_WRITE] = PTE_U|PTE_A|PTE_R|PTE_W, - [PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_R|PTE_W, + [PROT_WRITE] = PTE_U|PTE_A|PTE_R|PTE_D|PTE_W, + [PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_R|PTE_D|PTE_W, [PROT_EXEC] = PTE_U|PTE_A|PTE_X|PTE_R, [PROT_EXEC|PROT_READ] = PTE_U|PTE_A|PTE_X|PTE_R, - [PROT_EXEC|PROT_WRITE] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_W, - [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_W, + [PROT_EXEC|PROT_WRITE] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, + [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, }; const pt_entry_t ap_bits_kern[8] = { [PROT_NONE] = PTE_A|PTE_R, [PROT_READ] = PTE_A|PTE_R, - [PROT_WRITE] = PTE_A|PTE_R|PTE_W, - [PROT_WRITE|PROT_READ] = PTE_A|PTE_R|PTE_W, + [PROT_WRITE] = PTE_A|PTE_R|PTE_D|PTE_W, + [PROT_WRITE|PROT_READ] = PTE_A|PTE_R|PTE_D|PTE_W, [PROT_EXEC] = PTE_A|PTE_X|PTE_R, [PROT_EXEC|PROT_READ] = PTE_A|PTE_X|PTE_R, - [PROT_EXEC|PROT_WRITE] = PTE_A|PTE_X|PTE_R|PTE_W, - [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_A|PTE_X|PTE_R|PTE_W, + [PROT_EXEC|PROT_WRITE] = PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, + [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, }; /* -- 2.20.1