Hi,

replaces inlined inline, continue feels safer for (pv->pv_flags & PVF_NC) case,
and fixes possible (harmless, i guess) bug w/flags usage in the loop.
to anyone reviewing, I suggest taking a peek at pmap.c also, as it will show
ie. from what flags |= ..->pv_flags is inherited of.

-Artturi

diff --git a/sys/arch/arm/arm/pmap7.c b/sys/arch/arm/arm/pmap7.c
index eea49fe..59d4b90 100644
--- a/sys/arch/arm/arm/pmap7.c
+++ b/sys/arch/arm/arm/pmap7.c
@@ -1068,36 +1068,26 @@ pmap_clearbit(struct vm_page *pg, u_int maskbits)
 void
 pmap_clean_page(struct vm_page *pg, int isync)
 {
-       pmap_t pm;
        struct pv_entry *pv;
        boolean_t wb = FALSE;
-       uint flags = 0;
 
        /*
         * To save time, we are only walking the pv list if an I$ invalidation
         * is required.  Otherwise all we need is to map the page and writeback.
         */
        if (isync) {
-               if (curproc)
-                       pm = curproc->p_vmspace->vm_map.pmap;
-               else
-                       pm = pmap_kernel();
-
                for (pv = pg->mdpage.pvh_list; pv; pv = pv->pv_next) {
-                       /* inline !pmap_is_current(pv->pv_pmap) */
-                       if (pv->pv_pmap != pmap_kernel() && pv->pv_pmap != pm)
+                       if (!pmap_is_current(pv->pv_pmap))
                                continue;
 
-                       flags |= pv->pv_flags;
-
                        /*
                         * The page is mapped non-cacheable in 
                         * this map.  No need to flush the cache.
                         */
                        if (pv->pv_flags & PVF_NC) /* XXX ought to be pg attr */
-                               break;
+                               continue;
 
-                       if (PV_BEEN_EXECD(flags))
+                       if (PV_BEEN_EXECD(pv->pv_flags))
                                cpu_icache_sync_range(pv->pv_va, PAGE_SIZE);
 
                        /*

Reply via email to