At present Open MPI only supports ARMv7 processors. Attached is a patch against current trunk (r26270) that extends the atomic operations and memory barriers code to work with ARMv5 and ARMv6 ones, too.
For v6, the only changes were to use "mcr p15, 0, r0, c7, c10, 5" instead of the unavailable DMB instruction, and to disable the 64 bit compare-exchange function (which I understand is not vital for Open MPI on 32 bit platforms?). For v5, it was a bit trickier; the processor lacks nice memory barrier instructions or proper atomic operations. Fortunately, the Linux kernel offers several helper functions on ARM, and I've used those here. The changes build and pass all of the assembly-related tests in the test folder and the hello world examples run on my "armv5tel" box running Debian with Linux 2.6.32-5. It should also run fine on ARMv6 boxes, and presumably v4, but I don't have either to test on. Documentation for the Linux kernel helper functions: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/arm/kernel_user_helpers.txt I've sent in a contributor agreement so there should be no IP problems. Hopefully this is useful, Evan Clinton
ompi_armv5.diff
Description: Binary data
