lib: use stdatomic.h for memory barriers

C11 gives us APIs for fencing logic.  Use that instead of a
a long, per-architecture, hand curated list of definitions.
This commit is contained in:
Ray Strode
2016-08-23 16:52:29 -04:00
parent 1c1ef02b3d
commit 1b89cc58cf
5 changed files with 2 additions and 51 deletions

View File

@ -37,7 +37,6 @@
#include "binfile.h"
#include "elfparser.h"
#include "util.h"
struct bin_file_t
{

View File

@ -1,44 +0,0 @@
#ifndef SP_UTIL_H
#define SP_UTIL_H
#ifdef __i386__
#define read_barrier() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
#endif
#ifdef __x86_64__
#define read_barrier() asm volatile("lfence" ::: "memory")
#endif
#ifdef __powerpc__
#define read_barrier() asm volatile ("sync" ::: "memory")
#endif
#ifdef __s390__
#define read_barrier() asm volatile("bcr 15,0" ::: "memory")
#endif
#ifdef __sh__
#if defined(__SH4A__) || defined(__SH5__)
# define read_barrier() asm volatile("synco" ::: "memory")
#else
# define read_barrier() asm volatile("" ::: "memory")
#endif
#endif
#ifdef __hppa__
#define read_barrier() asm volatile("" ::: "memory")
#endif
#ifdef __arm__
#define read_barrier() asm volatile("dsb" ::: "memory")
#endif
/*
* Fallback to a full memory barrier if the architecture is not yet
* supported with a lighter read barrier.
*/
#ifndef read_barrier
#define read_barrier() __sync_synchronize()
#endif
#endif /* SP_UTIL_H */