Merge branch 'develop' into cmake
authorZhang Xianyi <traits.zhang@gmail.com>
Mon, 12 Oct 2015 20:46:08 +0000 (04:46 +0800)
committerZhang Xianyi <traits.zhang@gmail.com>
Mon, 12 Oct 2015 20:46:08 +0000 (04:46 +0800)
Conflicts:
driver/others/memory.c

1  2 
.gitignore
common.h
common_x86.h
common_x86_64.h
cpuid_x86.c
driver/others/memory.c
getarch.c
kernel/Makefile.L3

diff --cc .gitignore
Simple merge
diff --cc common.h
Simple merge
diff --cc common_x86.h
@@@ -77,23 -65,18 +77,25 @@@ static void __inline blas_lock(volatil
    } while (ret);
  
  }
+ #define BLAS_LOCK_DEFINED
  
  static __inline unsigned long long rpcc(void){
 +#if defined(_MSC_VER) && !defined(__clang__)
 +  return __rdtsc(); // use MSVC intrinsic
 +#else
    unsigned int a, d;
  
    __asm__ __volatile__ ("rdtsc" : "=a" (a), "=d" (d));
  
    return ((unsigned long long)a + ((unsigned long long)d << 32));
 +#endif
  };
+ #define RPCC_DEFINED
  
  static __inline unsigned long getstackaddr(void){
 +#if defined(_MSC_VER) && !defined(__clang__)
 +  return (unsigned long)_ReturnAddress(); // use MSVC intrinsic
 +#else
    unsigned long addr;
  
    __asm__ __volatile__ ("mov %%esp, %0"
diff --cc common_x86_64.h
@@@ -80,24 -71,19 +80,26 @@@ static void __inline blas_lock(volatil
                         : "=r"(ret), "=m"(*address)
                         : "0"(1), "m"(*address)
                         : "memory");
 -
 +#else
 +    ret=InterlockedExchange64((volatile LONG64 *)(address), 1);
 +#endif
    } while (ret);
 +
  }
+ #define BLAS_LOCK_DEFINED
  
  static __inline BLASULONG rpcc(void){
 +#ifdef C_MSVC
 +  return __rdtsc();
 +#else
    BLASULONG a, d;
  
    __asm__ __volatile__ ("rdtsc" : "=a" (a), "=d" (d));
  
    return ((BLASULONG)a + ((BLASULONG)d << 32));
 +#endif
  }
+ #define RPCC_DEFINED
  
  #define RPCC64BIT
  
diff --cc cpuid_x86.c
Simple merge
@@@ -139,13 -139,8 +139,13 @@@ USE OF THIS SOFTWARE, EVEN IF ADVISED O
  
  #define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
  
- #define CONSTRUCTOR   __attribute__ ((constructor))
- #define DESTRUCTOR    __attribute__ ((destructor))
 +#if defined(_MSC_VER) && !defined(__clang__)
 +#define CONSTRUCTOR __cdecl
 +#define DESTRUCTOR __cdecl
 +#else
+ #define CONSTRUCTOR   __attribute__ ((constructor(101)))
+ #define DESTRUCTOR    __attribute__ ((destructor(101)))
 +#endif
  
  #ifdef DYNAMIC_ARCH
  gotoblas_t *gotoblas = NULL;
diff --cc getarch.c
Simple merge
Simple merge