#define MB
#define WMB
+#define RMB
#else
#define MB __asm__ __volatile__ ("dmb ish" : : : "memory")
#define WMB __asm__ __volatile__ ("dmb ishst" : : : "memory")
+#define RMB __asm__ __volatile__ ("dmb ish" : : : "memory")
#endif
#ifndef ASSEMBLER
+#if defined(ARMV6) || defined(ARMV7) || defined(ARMV8)
+
static void __inline blas_lock(volatile BLASULONG *address){
int register ret;
MB;
}
+#define BLAS_LOCK_DEFINED
+#endif
static inline int blas_quickdivide(blasint x, blasint y){
return x / y;
}
-#if defined(DOUBLE)
+#if !defined(HAVE_VFP)
+/* no FPU, soft float */
+#define GET_IMAGE(res)
+#elif defined(DOUBLE)
#define GET_IMAGE(res) __asm__ __volatile__("vstr.f64 d1, %0" : "=m"(res) : : "memory")
#else
#define GET_IMAGE(res) __asm__ __volatile__("vstr.f32 s1, %0" : "=m"(res) : : "memory")
#define PROLOGUE \
.arm ;\
.global REALNAME ;\
- .func REALNAME ;\
REALNAME:
#define EPILOGUE
#endif
#define HUGE_PAGESIZE ( 4 << 20)
-#define BUFFER_SIZE (16 << 20)
+#define BUFFER_SIZE (32 << 20)
#define BASE_ADDRESS (START_ADDRESS - BUFFER_SIZE * MAX_CPU_NUMBER)
#define MAP_ANONYMOUS MAP_ANON
#endif
+#if !defined(ARMV5) && !defined(ARMV6) && !defined(ARMV7) && !defined(ARMV8)
+#error "you must define ARMV5, ARMV6, ARMV7 or ARMV8"
+#endif
+
#endif