2011/5/6 Attilio Rao <atti...@freebsd.org>: > 2011/5/6 Nathan Whitehorn <nwhiteh...@freebsd.org>: >> Author: nwhitehorn >> Date: Fri May 6 20:43:02 2011 >> New Revision: 221550 >> URL: http://svn.freebsd.org/changeset/base/221550 >> >> Log: >> SMP has worked perfectly for a very long time on 32-bit PowerPC on both >> UP and SMP hardware. Enable it in GENERIC. >> > > While working on largeSMP, I think there is a breakage in atomic.h. > More specifically, atomic_store_rel_long() (and related functions) are > not going to properly work because powerpc defines them as: > > atomic_store_rel_long -> atomic_store_rel_32(volatile u_int *p, u_int v) > > while this should really follow the long arguments. > > This happens because powerpc doesn't follow the other architectures > semantic on defining the "similar" atomic operations. > Other arches define an hardcode version of _type version of the > function and than make a macro the _32 (or whatever) version. > In other words this is what they do: > > void > atomic_store_rel_32() > { > ... > } > > #define atomic_store_rel_int atomic_store_rel_32 > > which si clearly dangerous for cases as reported above. Maybe that > could be fixed by passing sized types, rather than simply int or long > in numbered version, but I'd really prefer to follow the semantic by > other architectures and then have: > > void > atomic_store_rel_int() > { > ... > } > > #define atomic_store_rel_32 atomic_store_rel_int > > I fixed the ATOMIC_STORE_LOAD case in my code, because I needed it, > but the final cleanup is much bigger. > I can make a patch tomorrow if you can test it. >
Can you please test and review this patch?: http://www.freebsd.org/~attilio/largeSMP/atomic-powerpc.diff Unfortunately I'm having issues with the toolchains in atm, so I can't really neither test compile it. Let me know, Attilio -- Peace can only be achieved by understanding - A. Einstein _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"