$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2005-04-06 13:01:34
Alexander Terekhov wrote:
[...]
> Got it now. Thanks.
asm long atomic_decrement_weak( register long * pw ) {
<load-UNreserved>
<add -1>
<branch if zero to acquire>
{lw}sync
loop:
<load-reserved>
<add -1>
<branch if zero to acquire>
<store-conditional>
<branch if failed to loop else to done>
acquire:
isync
done:
<...>
}
asm long atomic_decrement_strong( register long * pw ) {
// Peter's state machine
loop0:
<load-reserved>
<add -1>
<branch if zero to loop0_acquire>
{lw}sync
loop1:
<store-conditional>
<branch if !failed to done>
loop2:
<load-reserved>
<add -1>
<branch if !zero to loop1>
<store-conditional>
<branch if failed to loop2 else to acquire>
loop0_acquire:
<store-conditional>
<branch if failed to loop0>
acquire:
isync
done:
<...>
}
All right now?
regards,
alexander.