On 13 November 2012 19:39, Jon Masters <jcm@xxxxxxxxxx> wrote: > > - The only current difference between the ARMV6 and the ARMV7 versions > > is the use of cp15 or DMB in the standalone barrier functions. Could > > this not be done through some sort of macro instead? > > That could be done. I had been planning to throw this over the wall at > the OMPI guys and say "hey, how do you actually want to fix this?" Yeah, problem is, they'll just come back to me :) > > - If we're playing around in here, might as well add support for > > (32-bit) ARMv8? > > Oh, 32-bit. Hmmm. I guess. I assume you mean A32, in which case we can > just reuse the ARMv7 code with a couple of extra lines? Yup. Shouldn't require anything other than matching on it like it was v7. > > - Can you not set ompi_cv_asm__arch to the target file name rather > > than copying around? > > Nope :) That's what I did at first (pretty much your stuff below). > > Unfortunately, the OpenMPI codebase is a total mess. I also didn't want > to do assembly calls to kernel helpers, but it was easier to do that > than to figure out what the heck they are doing. However. If you want to > have another poke at that option (don't forget to search for all their > uses of the ompi_vc_asm arch) then I think that's awesome :) I had a look into this, and the required changes aren't actually _that_ invasive. You'd need changes to: opal/asm/asm-data.txt (Adding ARMV5, but not sure it's strictly necessary) opal/asm/generate-asm.pl (To handle ARMV5 in same special case as ARM) opal/include/opal/sys/{architecture,atomic,timer}.h (appended at end) and aforementioned barrier macros in ARM.asm However, the armv4*linux support is not currently functional: There was no cp15 in ARMv4, and there was no BLX until ARMv5TE. You could conditionalize the cp15 and switch to mov lr, pc bx rd sequences... / Leif diff -purN jcm/opal/include/opal/sys/architecture.h leif/opal/include/opal/sys/architecture.h --- jcm/opal/include/opal/sys/architecture.h 2012-04-03 15:29:45.000000000 +0100 +++ leif/opal/include/opal/sys/architecture.h 2012-11-14 12:03:12.517024691 +0000 @@ -36,7 +36,8 @@ #define OMPI_SPARCV9_32 0061 #define OMPI_SPARCV9_64 0062 #define OMPI_MIPS 0070 -#define OMPI_ARM 0100 +#define OMPI_ARMV5 0100 +#define OMPI_ARM 0101 /* Formats */ #define OMPI_DEFAULT 1000 /* standard for given architecture */ diff -purN jcm/opal/include/opal/sys/atomic.h leif/opal/include/opal/sys/atomic.h --- jcm/opal/include/opal/sys/atomic.h 2012-04-03 15:29:45.000000000 +0100 +++ leif/opal/include/opal/sys/atomic.h 2012-11-14 12:04:22.492089872 +0000 @@ -146,6 +146,8 @@ typedef struct opal_atomic_lock_t opal_a #include "opal/sys/alpha/atomic.h" #elif OPAL_ASSEMBLY_ARCH == OMPI_AMD64 #include "opal/sys/amd64/atomic.h" +#elif OPAL_ASSEMBLY_ARCH == OMPI_ARMV5 +#include "opal/sys/arm/atomic.h" #elif OPAL_ASSEMBLY_ARCH == OMPI_ARM #include "opal/sys/arm/atomic.h" #elif OPAL_ASSEMBLY_ARCH == OMPI_IA32 diff -purN jcm/opal/include/opal/sys/timer.h leif/opal/include/opal/sys/timer.h --- jcm/opal/include/opal/sys/timer.h 2012-04-03 15:29:45.000000000 +0100 +++ leif/opal/include/opal/sys/timer.h 2012-11-14 12:03:53.585884563 +0000 @@ -79,6 +79,8 @@ BEGIN_C_DECLS /* don't include system-level gorp when generating doxygen files */ #elif OPAL_ASSEMBLY_ARCH == OMPI_AMD64 #include "opal/sys/amd64/timer.h" +#elif OPAL_ASSEMBLY_ARCH == OMPI_ARMV5 +#include "opal/sys/arm/timer.h" #elif OPAL_ASSEMBLY_ARCH == OMPI_ARM #include "opal/sys/arm/timer.h" #elif OPAL_ASSEMBLY_ARCH == OMPI_IA32 _______________________________________________ arm mailing list arm@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/arm