Browse Source

Merge pull request #1178 from jcowgill/mips-fixes

MIPS threading fixes
tags/v0.2.20^2
Martin Kroeker GitHub 9 years ago
parent
commit
fd4e68128e
2 changed files with 4 additions and 31 deletions
  1. +2
    -7
      common_mips.h
  2. +2
    -24
      common_mips64.h

+ 2
- 7
common_mips.h View File

@@ -33,8 +33,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef COMMON_MIPS #ifndef COMMON_MIPS
#define COMMON_MIPS #define COMMON_MIPS


#define MB
#define WMB
#define MB __sync_synchronize()
#define WMB __sync_synchronize()


#define INLINE inline #define INLINE inline


@@ -42,11 +42,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


#ifndef ASSEMBLER #ifndef ASSEMBLER


static void INLINE blas_lock(volatile unsigned long *address){

}
#define BLAS_LOCK_DEFINED

static inline unsigned int rpcc(void){ static inline unsigned int rpcc(void){
unsigned long ret; unsigned long ret;




+ 2
- 24
common_mips64.h View File

@@ -71,35 +71,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef COMMON_MIPS64 #ifndef COMMON_MIPS64
#define COMMON_MIPS64 #define COMMON_MIPS64


#define MB
#define WMB
#define MB __sync_synchronize()
#define WMB __sync_synchronize()


#define INLINE inline #define INLINE inline


#ifndef ASSEMBLER #ifndef ASSEMBLER


static void INLINE blas_lock(volatile unsigned long *address){

long int ret, val = 1;

do {
while (*address) {YIELDING;};

__asm__ __volatile__(
"1: ll %0, %3\n"
" ori %2, %0, 1\n"
" sc %2, %1\n"
" beqz %2, 1b\n"
" andi %2, %0, 1\n"
" sync\n"
: "=&r" (val), "=m" (address), "=&r" (ret)
: "m" (address)
: "memory");

} while (ret);
}
#define BLAS_LOCK_DEFINED

static inline unsigned int rpcc(void){ static inline unsigned int rpcc(void){
unsigned long ret; unsigned long ret;




Loading…
Cancel
Save