Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/sun4/os/prom_subr.c
          +++ new/usr/src/uts/sun4/os/prom_subr.c
↓ open down ↓ 310 lines elided ↑ open up ↑
 311  311                          prcp = atomic_cas_ptr((void *)&prom_cpu, NULL, cp);
 312  312                          if (prcp == NULL || prcp == cp)
 313  313                                  break;
 314  314                  }
 315  315          }
 316  316  
 317  317          /*
 318  318           * We now hold the prom_cpu lock.  Increment the hold count by one
 319  319           * and assert our current state before returning to the caller.
 320  320           */
 321      -        atomic_add_32(&prom_holdcnt, 1);
      321 +        atomic_inc_32(&prom_holdcnt);
 322  322          ASSERT(prom_holdcnt >= 1);
 323  323          prom_thread = curthread;
 324  324  }
 325  325  
 326  326  /*
 327  327   * Drop the prom lock if it is held by the current CPU.  If the lock is held
 328  328   * recursively, return without clearing prom_cpu.  If the hold count is now
 329  329   * zero, clear prom_cpu and cv_signal any waiting CPU.
 330  330   */
 331  331  void
↓ open down ↓ 6 lines elided ↑ open up ↑
 338  338                  return; /* do not modify lock further if we have panicked */
 339  339  
 340  340          if (prom_cpu != cp)
 341  341                  panic("kern_postprom: not owner, cp=%p owner=%p",
 342  342                      (void *)cp, (void *)prom_cpu);
 343  343  
 344  344          if (prom_holdcnt == 0)
 345  345                  panic("kern_postprom: prom_holdcnt == 0, owner=%p",
 346  346                      (void *)prom_cpu);
 347  347  
 348      -        if (atomic_add_32_nv(&prom_holdcnt, -1) != 0)
      348 +        if (atomic_dec_32_nv(&prom_holdcnt) != 0)
 349  349                  return; /* prom lock is held recursively by this CPU */
 350  350  
 351  351          if ((boothowto & RB_DEBUG) && prom_exit_enter_debugger)
 352  352                  kmdb_enter();
 353  353  
 354  354          prom_thread = NULL;
 355  355          membar_producer();
 356  356  
 357  357          prom_cpu = NULL;
 358  358          membar_producer();
↓ open down ↓ 231 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX