On Dec 16, 2005, at 10:24, Linh Dang wrote:
Well, it may be true for ARM but for ppc (i dunno what exactly llsc
means but someone in the thread put ppc in llsc group) it's:
loop:
load-reserve foo => old
new = old * N
store-conditional new => foo
if failed goto loop
LLSC == Load-Locked/Store-Conditional. It's a slightly different
name for your Load-Reserve/Store-Conditional
You still miss his point. That is _GOOD_ code. Russell's point is
that if somebody does this in generic code:
do {
old = atomic_read(&foo);
new = old * 2;
} while (atomic_cmpxchg(&foo, old, new) != old);
On PPC or ARM or another LLSC architecture it does not end up looking
like the good code, it looks like this (which is clearly inefficient):
And for architectures with llsc, this becomes:
loop: load foo => old
new = old * N
loop2: load locked foo => ret
compare ret & old
if equal store conditional new in foo
if store failed because we lost the lock, goto loop2
compare ret & old
if not equal goto loop
Cheers,
Kyle Moffett
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCM/CS/IT/E/U d- s++: a18 C++++>$ ULBX*++++(+++)>$ P++++(+++)>$ L++++
(+++)>$ !E- W+++(++) N+++(++) o? K? w--- O? M++ V? PS+() PE+(-) Y+ PGP
+ t+(+++) 5 X R? !tv-(--) b++++(++) DI+(++) D+++ G e>++++$ h*(+)>++$ r
%(--) !y?-(--)
------END GEEK CODE BLOCK------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]