Merge pull request #5845 from martin-frbg/pizlonator-filc
Add support for compiling with the Fil-C Memory Safe C toolchain
This commit is contained in:
@@ -1648,7 +1648,11 @@ ifneq ($(C_COMPILER), SUN)
|
||||
CCOMMON_OPT += -UASMNAME -UASMFNAME -UNAME -UCNAME -UCHAR_NAME -UCHAR_CNAME
|
||||
endif
|
||||
endif
|
||||
ifeq ( ,$(findstring pizfix,$(CEXTRALIB)))
|
||||
CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
|
||||
else
|
||||
CCOMMON_OPT += -DASMNAME=$(FU)pizlonated_$(*F) -DASMFNAME=$(FU)pizlonated_$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
|
||||
endif
|
||||
|
||||
ifeq ($(CORE), PPC440)
|
||||
CCOMMON_OPT += -DALLOC_QALLOC
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ extern long int syscall (long int __sysno, ...);
|
||||
static inline int my_mbind(void *addr, unsigned long len, int mode,
|
||||
unsigned long *nodemask, unsigned long maxnode,
|
||||
unsigned flags) {
|
||||
#if defined (__LSB_VERSION__) || defined(ARCH_ZARCH)
|
||||
#if defined (__LSB_VERSION__) || defined(ARCH_ZARCH) || defined(__PIZLONATOR_WAS_HERE__)
|
||||
// So far, LSB (Linux Standard Base) don't support syscall().
|
||||
// https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3482
|
||||
return 0;
|
||||
|
||||
+5
-1
@@ -83,11 +83,15 @@ static __inline void blas_lock(volatile BLASULONG *address){
|
||||
while (*address) {YIELDING;}
|
||||
|
||||
#ifndef C_MSVC
|
||||
#ifdef __PIZLONATOR_WAS_HERE__
|
||||
ret=__atomic_exchange_n(address, 1, __ATOMIC_SEQ_CST);
|
||||
#else
|
||||
__asm__ __volatile__(
|
||||
"xchgl %0, %1\n"
|
||||
: "=r"(ret), "=m"(*address)
|
||||
: "0"(1), "m"(*address)
|
||||
: "memory");
|
||||
#endif
|
||||
#else
|
||||
ret=InterlockedExchange64((volatile LONG64 *)(address), 1);
|
||||
#endif
|
||||
@@ -237,7 +241,7 @@ static __inline unsigned int blas_quickdivide(unsigned int x, unsigned int y){
|
||||
|
||||
y = blas_quick_divide_table[y];
|
||||
|
||||
__asm__ __volatile__ ("mull %0" :"=d" (result), "+a"(x) : "0" (y));
|
||||
__asm__ __volatile__ ("mull %0" :"=d" (result), "+a"(x) : "0" (y) : "cc");
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user