Page MenuHomeFreeBSD

D18321.id51093.diff
No OneTemporary

D18321.id51093.diff

Index: sys/riscv/riscv/pmap.c
===================================================================
--- sys/riscv/riscv/pmap.c
+++ sys/riscv/riscv/pmap.c
@@ -3421,3 +3421,40 @@
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;
+
+ /* Get l1 directory entry */
+ l1p = pmap_l1(pmap, va);
+ *l1 = l1p;
+
+ if (l1p == NULL || (pmap_load(l1p) & PTE_V) == 0)
+ return (false);
+
+ if ((pmap_load(l1p) & PTE_RX) != 0) {
+ *l2 = NULL;
+ *l3 = NULL;
+ return (true);
+ }
+
+ /* 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, 5:02 PM (48 m, 17 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25867282
Default Alt Text
D18321.id51093.diff (947 B)

Event Timeline