svn commit: r348643 - stable/12/sys/riscv/riscv
Mark Johnston
markj at FreeBSD.org
Tue Jun 4 17:30:23 UTC 2019
Author: markj
Date: Tue Jun 4 17:30:22 2019
New Revision: 348643
URL: https://svnweb.freebsd.org/changeset/base/348643
Log:
MFC r342733:
Set PTE_U on PTEs created by pmap_enter_quick().
Modified:
stable/12/sys/riscv/riscv/pmap.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/riscv/riscv/pmap.c
==============================================================================
--- stable/12/sys/riscv/riscv/pmap.c Tue Jun 4 17:29:47 2019 (r348642)
+++ stable/12/sys/riscv/riscv/pmap.c Tue Jun 4 17:30:22 2019 (r348643)
@@ -2379,19 +2379,14 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, v
*/
pmap_resident_count_inc(pmap, 1);
- pa = VM_PAGE_TO_PHYS(m);
- pn = (pa / PAGE_SIZE);
-
- entry = PTE_V | PTE_R;
- if (prot & VM_PROT_EXECUTE)
- entry |= PTE_X;
- entry |= (pn << PTE_PPN0_S);
-
- /*
- * Now validate mapping with RO protection
- */
+ newl3 = ((VM_PAGE_TO_PHYS(m) / PAGE_SIZE) << PTE_PPN0_S) |
+ PTE_V | PTE_R;
+ if ((prot & VM_PROT_EXECUTE) != 0)
+ newl3 |= PTE_X;
if ((m->oflags & VPO_UNMANAGED) == 0)
- entry |= PTE_SW_MANAGED;
+ newl3 |= PTE_SW_MANAGED;
+ if (va < VM_MAX_USER_ADDRESS)
+ newl3 |= PTE_U;
/*
* Sync the i-cache on all harts before updating the PTE
@@ -2400,7 +2395,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, v
if (prot & VM_PROT_EXECUTE)
pmap_sync_icache(pmap, va, PAGE_SIZE);
- pmap_store(l3, entry);
+ pmap_store(l3, newl3);
pmap_invalidate_page(pmap, va);
return (mpte);
More information about the svn-src-stable-12
mailing list