mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-17 19:16:56 +00:00
MINOR: compiler: move CPU capabilities definition from config.h and complete them
These ones are irrelevant to the config but rather to the platform, and as such are better placed in compiler.h. Here we take the opportunity for declaring a few extra capabilities: - HA_UNALIGNED : CPU supports unaligned accesses - HA_UNALIGNED_LE : CPU supports unaligned accesses in little endian - HA_UNALIGNED_FAST : CPU supports fast unaligned accesses - HA_UNALIGNED_ATOMIC : CPU supports unaligned accesses in atomics This will help remove a number of #ifdefs with arch-specific statements.
This commit is contained in:
parent
a7ddab0c25
commit
0e2686762f
@ -151,5 +151,36 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Some architectures have a double-word CAS, sometimes even dual-8 bytes.
|
||||
* Some architectures support unaligned accesses, others are fine with them
|
||||
* but only for non-atomic operations. Also mention those supporting unaligned
|
||||
* accesses and being little endian, and those where unaligned accesses are
|
||||
* known to be fast (almost as fast as aligned ones).
|
||||
*/
|
||||
#if defined(__x86_64__)
|
||||
#define HA_UNALIGNED
|
||||
#define HA_UNALIGNED_LE
|
||||
#define HA_UNALIGNED_LE64
|
||||
#define HA_UNALIGNED_FAST
|
||||
#define HA_UNALIGNED_ATOMIC
|
||||
#define HA_HAVE_CAS_DW
|
||||
#define HA_CAS_IS_8B
|
||||
#elif defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__)
|
||||
#define HA_UNALIGNED
|
||||
#define HA_UNALIGNED_LE
|
||||
#define HA_UNALIGNED_ATOMIC
|
||||
#elif defined (__aarch64__) || defined(__ARM_ARCH_8A)
|
||||
#define HA_UNALIGNED
|
||||
#define HA_UNALIGNED_LE
|
||||
#define HA_UNALIGNED_LE64
|
||||
#define HA_UNALIGNED_FAST
|
||||
#define HA_HAVE_CAS_DW
|
||||
#define HA_CAS_IS_8B
|
||||
#elif defined(__arm__) && (defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__))
|
||||
#define HA_UNALIGNED
|
||||
#define HA_UNALIGNED_LE
|
||||
#define HA_UNALIGNED_FAST
|
||||
#define HA_HAVE_CAS_DW
|
||||
#endif
|
||||
|
||||
#endif /* _COMMON_COMPILER_H */
|
||||
|
@ -40,14 +40,6 @@
|
||||
#define THREAD_LOCAL
|
||||
#endif
|
||||
|
||||
/* Some architectures have a double-word CAS, sometimes even dual-8 bytes */
|
||||
#if defined(__x86_64__) || defined (__aarch64__)
|
||||
#define HA_HAVE_CAS_DW
|
||||
#define HA_CAS_IS_8B
|
||||
#elif defined(__arm__) && (defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__))
|
||||
#define HA_HAVE_CAS_DW
|
||||
#endif
|
||||
|
||||
/* On architectures supporting threads and double-word CAS, we can implement
|
||||
* lock-less memory pools. This isn't supported for debugging modes however.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user