Page MenuHomeFreeBSD

D18732.id52519.diff
No OneTemporary

D18732.id52519.diff

Index: sys/riscv/riscv/pmap.c
===================================================================
--- sys/riscv/riscv/pmap.c
+++ sys/riscv/riscv/pmap.c
@@ -3019,15 +3019,13 @@
}
}
l3 = pmap_l3(pmap, pv->pv_va);
-retry:
oldl3 = pmap_load(l3);
-
+retry:
if ((oldl3 & PTE_W) != 0) {
- newl3 = oldl3 & ~PTE_W;
- if (!atomic_cmpset_long(l3, oldl3, newl3))
+ newl3 = oldl3 & ~(PTE_D | PTE_W);
+ if (!atomic_fcmpset_long(l3, &oldl3, newl3))
goto retry;
- /* TODO: check for PTE_D? */
- if ((oldl3 & PTE_A) != 0)
+ if ((oldl3 & PTE_D) != 0)
vm_page_dirty(m);
pmap_invalidate_page(pmap, pv->pv_va);
}

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 29, 7:31 AM (19 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35688690
Default Alt Text
D18732.id52519.diff (639 B)

Event Timeline