* SPARC Assembly fixes:
- Use SPARC assembly type only when not able to use the SPARC v9
instruction set (instead of previous whenever sizeof(void*) == 4
- Use SPARCV9_32 (aka sparc v8plus) and SPARCV9_64 (aka sparc v9) when
possible. Already were doing so for the 64bit, but on 32bit we
were falling back to SPARC.
- Implemented SPARCV9_32 atomic operations
- Emit warning if user is going to get SPARC atomic, as that probably
isn't what the user wants for best performance.
* Started shell of MIPS assembly. Does not work, but wanted something
so that everyone would only have to re-autogen once today....
This commit was SVN r4465.
* Fix compiler error on Sparc64 when not inlining assembly
* Fix error in Sparc64 compare&swap operations. Now pass test suite
This commit was SVN r4436.
* Make sure the update.sh scripts all use OMPI_WANT_SMP_LOCKS
* Add sparc (32bit) assembly
- Memory barriers
- spinlocks
- emulate add/sub using the spinlock table with hashed lookups, as
suggested by the linux kernel folk (better than the other option,
requiring the counters only use 24 bits)
This commit was SVN r4429.
during testing. In particular, we can't have a cmpset macro that can
deal with pointers without some really evil voodoo. So have a
different macro for pointers
* Add more detailed testing of the atomics using AM's test framework.
More to come...
This commit was SVN r4191.
of assembler format
* Fix minor bugs in AMD64, PPC, and IA32 assembly for atomic operations
* Clean up the #defines to look for when examining level of atomic operation
support
This commit was SVN r4183.
operations are actually the compare_and_set 32 and 64 bits. For all others atomic there is a fallback in sys/atomic.c
For ia32 I add a workaround the ebx register. When compiling with -fPIC ebx is reserved for the shared object interface (store some global pointer). On the same time cmpxchg8b use ebx and ecx to store the new value. The workaround save the ebx content before cmpxchg8b and restore it afterward. There is still a possible bug !!! If we get interrupted between the push and pop of the ebx then we will definitivelly crash ...
This commit was SVN r3387.
1. header file and source file protections using #ifdef WIN32
2. new files and directories to support windows functionality
3. appropritate linkage symbols added (OMPI_DECLSPEC) for windows
4. some functions are unimplemented on the windows side. this is mostly
because there might not be need to implement it in windows land. eg., forking
a daemon off
5. Introduced locking mechanisms for windows
This commit was SVN r3286.
os/atomic.h --> include/sys/atomic.h
WARNING: There are almost certainly some bugs introduced here, but I
believe that using this system will get us to a stable and portable
library faster in the long run.
Other changes:
threads/mutex
Reorganized to use pthreads or asm atomic operations as available.
Untested Windows implementation added using InterlockedExchange() funcion.
threads/thread
Added an untested Windows implementation
other places
Updates to include the "right" header files or to use
ompi_atomic_add_int() rather that fetchNadd() etc.
This commit was SVN r2221.