On Sat, Jul 14, 2007 at 10:47:52AM -0600, Brian Barrett wrote: > Open MPI uses some assembly for things like atomic locks, atomic > compare and swap, memory barriers, and the like. [...] > We don't currently have support for a non-assembly code path. We > originally planned on having one, but the team went away from that > route over time and there's no way to build Open MPI without assembly > support right now.
Hi Brian, PA-RISC (aka hppa) has only two atomic instructions -- load and clear word and load and clear doubleword (ie 32-bit and 64-bit -- and the latter is available only on 64-bit platforms). In addition, the address of the word/dword must be 32-byte aligned [1]. This makes implementing atomic functionality "interesting", to say the least. Carlos O'Donell has implemented some kernel helper routines to aide this, but that would tie the implementation to linux -- I don't know if you care to support HPUX or not. If you can implement a non-assembly codepath in terms of POSIX constructs, that would be enormously helpful, albeit somewhat slower on some architectures. Another non-assembly approach which might be of interest would be to use the functions documented here: http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html This sounds like it would match your requirements somewhat better. [1] This is according to the architecture specifications. In terms of implementations, the restriction is relaxed on more recent processors. -- "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]