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