Print this page
patch as-lock-macro-simplification

@@ -1085,26 +1085,26 @@
                 return (SIMU_ILLEGAL);
         }
 
         as = p->p_as;
 
-        AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
+        AS_LOCK_ENTER(as, RW_READER);
         mapseg = as_findseg(as, (caddr_t)rp->r_pc, 0);
         ASSERT(mapseg != NULL);
         svd = (struct segvn_data *)mapseg->s_data;
 
         /*
          * We only create COW page for MAP_PRIVATE mappings.
          */
         SEGVN_LOCK_ENTER(as, &svd->lock, RW_READER);
         if ((svd->type & MAP_TYPE) & MAP_SHARED) {
                 SEGVN_LOCK_EXIT(as, &svd->lock);
-                AS_LOCK_EXIT(as, &as->a_lock);
+                AS_LOCK_EXIT(as);
                 return (SIMU_ILLEGAL);
         }
         SEGVN_LOCK_EXIT(as, &svd->lock);
-        AS_LOCK_EXIT(as, &as->a_lock);
+        AS_LOCK_EXIT(as);
 
         /*
          * A "flush" instruction using the user PC's vaddr will not work
          * here, at least on Spitfire. Instead we create a temporary kernel
          * mapping to the user's text page, then modify and flush that.

@@ -1112,28 +1112,28 @@
          */
         if (as_fault(as->a_hat, as, (caddr_t)(rp->r_pc & PAGEMASK), PAGESIZE,
             F_SOFTLOCK, S_READ))
                 return (SIMU_FAULT);
 
-        AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
+        AS_LOCK_ENTER(as, RW_READER);
         pfnum = hat_getpfnum(as->a_hat, (caddr_t)rp->r_pc);
-        AS_LOCK_EXIT(as, &as->a_lock);
+        AS_LOCK_EXIT(as);
         if (pf_is_memory(pfnum)) {
                 pp = page_numtopp_nolock(pfnum);
                 ASSERT(pp == NULL || PAGE_LOCKED(pp));
         } else {
                 (void) as_fault(as->a_hat, as, (caddr_t)(rp->r_pc & PAGEMASK),
                     PAGESIZE, F_SOFTUNLOCK, S_READ);
                 return (SIMU_FAULT);
         }
 
-        AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
+        AS_LOCK_ENTER(as, RW_READER);
         ka = ppmapin(pp, PROT_READ|PROT_WRITE, (caddr_t)rp->r_pc);
         *(uint_t *)(ka + (uintptr_t)(rp->r_pc % PAGESIZE)) = inst;
         doflush(ka + (uintptr_t)(rp->r_pc % PAGESIZE));
         ppmapout(ka);
-        AS_LOCK_EXIT(as, &as->a_lock);
+        AS_LOCK_EXIT(as);
 
         (void) as_fault(as->a_hat, as, (caddr_t)(rp->r_pc & PAGEMASK),
             PAGESIZE, F_SOFTUNLOCK, S_READ);
         return (SIMU_RETRY);
 }