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

*** 22,33 **** /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ - #pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/fasttrap_isa.h> #include <sys/fasttrap_impl.h> #include <sys/dtrace.h> #include <sys/dtrace_impl.h> #include <sys/cmn_err.h> --- 22,31 ----
*** 1408,1418 **** cookie = dtrace_interrupt_disable(); if (dtrace_getotherwin() > 0) { value = dtrace_getreg_win(reg, 1); dtrace_interrupt_enable(cookie); ! atomic_add_64(&fasttrap_getreg_fast_cnt, 1); return (value); } dtrace_interrupt_enable(cookie); --- 1406,1416 ---- cookie = dtrace_interrupt_disable(); if (dtrace_getotherwin() > 0) { value = dtrace_getreg_win(reg, 1); dtrace_interrupt_enable(cookie); ! atomic_inc_64(&fasttrap_getreg_fast_cnt); return (value); } dtrace_interrupt_enable(cookie);
*** 1433,1443 **** do { i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; ! atomic_add_64(&fasttrap_getreg_mpcb_cnt, 1); return (rwin[i].rw_local[reg - 16]); } while (i > 0); } if (fasttrap_fulword(&fr->fr_local[reg - 16], &value) != 0) --- 1431,1441 ---- do { i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; ! atomic_inc_64(&fasttrap_getreg_mpcb_cnt); return (rwin[i].rw_local[reg - 16]); } while (i > 0); } if (fasttrap_fulword(&fr->fr_local[reg - 16], &value) != 0)
*** 1453,1474 **** do { i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; ! atomic_add_64(&fasttrap_getreg_mpcb_cnt, 1); return (rwin[i].rw_local[reg - 16]); } while (i > 0); } if (fasttrap_fuword32(&fr->fr_local[reg - 16], &v32[1]) != 0) goto err; v32[0] = 0; } ! atomic_add_64(&fasttrap_getreg_slow_cnt, 1); return (value); err: /* * If the copy in failed, the process will be in a irrecoverable --- 1451,1472 ---- do { i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; ! atomic_inc_64(&fasttrap_getreg_mpcb_cnt); return (rwin[i].rw_local[reg - 16]); } while (i > 0); } if (fasttrap_fuword32(&fr->fr_local[reg - 16], &v32[1]) != 0) goto err; v32[0] = 0; } ! atomic_inc_64(&fasttrap_getreg_slow_cnt); return (value); err: /* * If the copy in failed, the process will be in a irrecoverable
*** 1503,1513 **** */ cookie = dtrace_interrupt_disable(); if (dtrace_getotherwin() > 0) { dtrace_putreg_win(reg, value); dtrace_interrupt_enable(cookie); ! atomic_add_64(&fasttrap_putreg_fast_cnt, 1); return; } dtrace_interrupt_enable(cookie); /* --- 1501,1511 ---- */ cookie = dtrace_interrupt_disable(); if (dtrace_getotherwin() > 0) { dtrace_putreg_win(reg, value); dtrace_interrupt_enable(cookie); ! atomic_inc_64(&fasttrap_putreg_fast_cnt); return; } dtrace_interrupt_enable(cookie); /*
*** 1534,1544 **** i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; rwin[i].rw_local[reg - 16] = value; ! atomic_add_64(&fasttrap_putreg_mpcb_cnt, 1); return; } while (i > 0); } if (fasttrap_sulword(&fr->fr_local[reg - 16], value) != 0) { --- 1532,1542 ---- i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; rwin[i].rw_local[reg - 16] = value; ! atomic_inc_64(&fasttrap_putreg_mpcb_cnt); return; } while (i > 0); } if (fasttrap_sulword(&fr->fr_local[reg - 16], value) != 0) {
*** 1547,1557 **** goto err; rwin[mpcb->mpcb_wbcnt].rw_local[reg - 16] = value; mpcb->mpcb_spbuf[mpcb->mpcb_wbcnt] = (caddr_t)rp->r_sp; mpcb->mpcb_wbcnt++; ! atomic_add_64(&fasttrap_putreg_mpcb_cnt, 1); return; } } else { struct frame32 *fr = (struct frame32 *)(uintptr_t)(caddr32_t)rp->r_sp; --- 1545,1555 ---- goto err; rwin[mpcb->mpcb_wbcnt].rw_local[reg - 16] = value; mpcb->mpcb_spbuf[mpcb->mpcb_wbcnt] = (caddr_t)rp->r_sp; mpcb->mpcb_wbcnt++; ! atomic_inc_64(&fasttrap_putreg_mpcb_cnt); return; } } else { struct frame32 *fr = (struct frame32 *)(uintptr_t)(caddr32_t)rp->r_sp;
*** 1565,1575 **** i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; rwin[i].rw_local[reg - 16] = v32; ! atomic_add_64(&fasttrap_putreg_mpcb_cnt, 1); return; } while (i > 0); } if (fasttrap_suword32(&fr->fr_local[reg - 16], v32) != 0) { --- 1563,1573 ---- i--; if ((long)mpcb->mpcb_spbuf[i] != rp->r_sp) continue; rwin[i].rw_local[reg - 16] = v32; ! atomic_inc_64(&fasttrap_putreg_mpcb_cnt); return; } while (i > 0); } if (fasttrap_suword32(&fr->fr_local[reg - 16], v32) != 0) {
*** 1578,1593 **** goto err; rwin[mpcb->mpcb_wbcnt].rw_local[reg - 16] = v32; mpcb->mpcb_spbuf[mpcb->mpcb_wbcnt] = (caddr_t)rp->r_sp; mpcb->mpcb_wbcnt++; ! atomic_add_64(&fasttrap_putreg_mpcb_cnt, 1); return; } } ! atomic_add_64(&fasttrap_putreg_slow_cnt, 1); return; err: /* * If we couldn't record this register's value, the process is in an --- 1576,1591 ---- goto err; rwin[mpcb->mpcb_wbcnt].rw_local[reg - 16] = v32; mpcb->mpcb_spbuf[mpcb->mpcb_wbcnt] = (caddr_t)rp->r_sp; mpcb->mpcb_wbcnt++; ! atomic_inc_64(&fasttrap_putreg_mpcb_cnt); return; } } ! atomic_inc_64(&fasttrap_putreg_slow_cnt); return; err: /* * If we couldn't record this register's value, the process is in an