Page MenuHomeFreeBSD

D18321.id51032.diff
No OneTemporary

D18321.id51032.diff

Index: sys/riscv/riscv/pmap.c
===================================================================
--- sys/riscv/riscv/pmap.c
+++ sys/riscv/riscv/pmap.c
@@ -3421,3 +3421,37 @@
return (mode >= VM_MEMATTR_DEVICE && mode <= VM_MEMATTR_WRITE_BACK);
}
+
+bool
+pmap_get_tables(pmap_t pmap, vm_offset_t va, pd_entry_t **l1, pd_entry_t **l2,
+ pt_entry_t **l3)
+{
+ pd_entry_t *l1p, *l2p;
+
+ if (pmap->pm_l1 == NULL)
+ return (false);
+
+ /* Get l1 directory entry */
+ l1p = pmap_l1(pmap, va);
+ *l1 = l1p;
+
+ if (l1p == NULL || (pmap_load(l1p) & PTE_V) == 0)
+ return (false);
+
+ /* Get l2 directory entry */
+ l2p = pmap_l1_to_l2(l1p, va);
+ *l2 = l2p;
+
+ if (l2p == NULL || (pmap_load(l2p) & PTE_V) == 0)
+ return (false);
+
+ if ((pmap_load(l2p) & PTE_RX) != 0) {
+ *l3 = NULL;
+ return (true);
+ }
+
+ /* Get l3 page table entry */
+ *l3 = pmap_l2_to_l3(l2p, va);
+
+ return (true);
+}

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 22, 1:50 AM (56 m, 25 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25866430
Default Alt Text
D18321.id51032.diff (901 B)

Event Timeline