X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Furcu%2Farch%2Faarch64.h;h=c2e46ae24dfc1f809ed24568de8aacee282229ad;hb=ae0b76db76aa9614381625d93f228a0ec71d4222;hp=d6a133758dffca0c22ca5f6e94314c4c6d0d5390;hpb=6893800a4d1cc14dff0395ddcd660a5138db183d;p=userspace-rcu.git diff --git a/include/urcu/arch/aarch64.h b/include/urcu/arch/aarch64.h index d6a1337..c2e46ae 100644 --- a/include/urcu/arch/aarch64.h +++ b/include/urcu/arch/aarch64.h @@ -42,6 +42,25 @@ extern "C" { #define __NR_membarrier 283 #endif +/* + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293 + * + * Backported in RHEL7 gcc 4.8.5-11 + */ +#if defined(URCU_GCC_VERSION) && defined(__GNUC_RH_RELEASE__) +# if (URCU_GCC_VERSION == 40805) && (__GNUC_RH_RELEASE__ >= 11) +# define URCU_GCC_PATCHED_63293 +# endif +#endif + +#ifdef URCU_GCC_VERSION +# if URCU_GCC_VERSION < 50100 && !defined(URCU_GCC_PATCHED_63293) +# error Your gcc version performs unsafe access to deallocated stack +# endif +#endif + +#define caa_cpu_relax() __asm__ __volatile__ ("yield" : : : "memory") + #ifdef __cplusplus } #endif