
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.