Hi,

inline pmap_get_l2_bucket dedup.

-Artturi


diff --git a/sys/arch/arm/arm/pmap7.c b/sys/arch/arm/arm/pmap7.c
index eea49fe..513ff09 100644
--- a/sys/arch/arm/arm/pmap7.c
+++ b/sys/arch/arm/arm/pmap7.c
@@ -398,7 +398,6 @@ u_int               pmap_modify_pv(struct vm_page *, 
pmap_t, vaddr_t,
 void           pmap_alloc_l1(pmap_t, int);
 void           pmap_free_l1(pmap_t);
 
-struct l2_bucket *pmap_get_l2_bucket(pmap_t, vaddr_t);
 struct l2_bucket *pmap_alloc_l2_bucket(pmap_t, vaddr_t);
 void           pmap_free_l2_bucket(pmap_t, struct l2_bucket *, u_int);
 void           pmap_l2ptp_ctor(void *);
@@ -473,7 +472,7 @@ pmap_tlb_flushD(pmap_t pm)
  * Returns a pointer to the L2 bucket associated with the specified pmap
  * and VA, or NULL if no L2 bucket exists for the address.
  */
-struct l2_bucket *
+static __inline struct l2_bucket *
 pmap_get_l2_bucket(pmap_t pm, vaddr_t va)
 {
        struct l2_dtable *l2;
@@ -1687,7 +1686,7 @@ pmap_kremove(vaddr_t va, vsize_t len)
 boolean_t
 pmap_extract(pmap_t pm, vaddr_t va, paddr_t *pap)
 {
-       struct l2_dtable *l2;
+       struct l2_bucket *l2b;
        pd_entry_t *pl1pd, l1pd;
        pt_entry_t *ptep, pte;
        paddr_t pa;
@@ -1710,12 +1709,9 @@ pmap_extract(pmap_t pm, vaddr_t va, paddr_t *pap)
                 * descriptor as an indication that a mapping exists.
                 * We have to look it up in the L2 dtable.
                 */
-               l2 = pm->pm_l2[L2_IDX(l1idx)];
-
-               if (l2 == NULL ||
-                   (ptep = l2->l2_bucket[L2_BUCKET(l1idx)].l2b_kva) == NULL) {
+               l2b = pmap_get_l2_bucket(pm, va);
+               if (l2b == NULL || (ptep = l2b->l2b_kva) == NULL)
                        return (FALSE);
-               }
 
                ptep = &ptep[l2pte_index(va)];
                pte = *ptep;
@@ -1924,7 +1920,6 @@ pmap_clear_reference(struct vm_page *pg)
 int
 pmap_fault_fixup(pmap_t pm, vaddr_t va, vm_prot_t ftype, int user)
 {
-       struct l2_dtable *l2;
        struct l2_bucket *l2b;
        pd_entry_t *pl1pd, l1pd;
        pt_entry_t *ptep, pte;
@@ -1939,17 +1934,9 @@ pmap_fault_fixup(pmap_t pm, vaddr_t va, vm_prot_t ftype, 
int user)
         * has no business accessing it.
         *
         * Note: This will catch userland processes trying to access
-        * kernel addresses.
-        */
-       l2 = pm->pm_l2[L2_IDX(l1idx)];
-       if (l2 == NULL)
-               goto out;
-
-       /*
-        * Likewise if there is no L2 descriptor table
+        * kernel addresses. Likewise if there is no L2 descriptor table.
         */
-       l2b = &l2->l2_bucket[L2_BUCKET(l1idx)];
-       if (l2b->l2b_kva == NULL)
+       if ((l2b = pmap_get_l2_bucket(pm, va)) == NULL)
                goto out;
 
        /*
@@ -2559,7 +2546,7 @@ pmap_set_pcb_pagedir(pmap_t pm, struct pcb *pcb)
 boolean_t
 pmap_get_pde_pte(pmap_t pm, vaddr_t va, pd_entry_t **pdp, pt_entry_t **ptp)
 {
-       struct l2_dtable *l2;
+       struct l2_bucket *l2b;
        pd_entry_t *pl1pd, l1pd;
        pt_entry_t *ptep;
        u_short l1idx;
@@ -2579,12 +2566,9 @@ pmap_get_pde_pte(pmap_t pm, vaddr_t va, pd_entry_t 
**pdp, pt_entry_t **ptp)
        if (pm->pm_l2 == NULL)
                return (FALSE);
 
-       l2 = pm->pm_l2[L2_IDX(l1idx)];
-
-       if (l2 == NULL ||
-           (ptep = l2->l2_bucket[L2_BUCKET(l1idx)].l2b_kva) == NULL) {
+       l2b = pmap_get_l2_bucket(pm, va);
+       if (l2b == NULL || (ptep = l2b->l2b_kva) == NULL)
                return (FALSE);
-       }
 
        *ptp = &ptep[l2pte_index(va)];
        return (TRUE);

Reply via email to