X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-pointer.c;h=79ee72a08e7110ba67a44b80f834096543eaa379;hp=da8b1ea7e76d0c702af5adb37f32361597525022;hb=7d413817f09b2d17b1a79ea012590609ffab5eb6;hpb=64c4cafd597aff7423be003dcf41735904126f66 diff --git a/urcu-pointer.c b/urcu-pointer.c index da8b1ea..79ee72a 100644 --- a/urcu-pointer.c +++ b/urcu-pointer.c @@ -50,5 +50,9 @@ void *rcu_xchg_pointer_sym(void **p, void *v) void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) { wmb(); - return uatomic_cmpxchg(p, old, _new); + if (likely(URCU_CAS_AVAIL())) + return uatomic_cmpxchg(p, old, _new); + + /* Compatibility for i386. Old-timer. */ + return compat_uatomic_cmpxchg(p, old, _new); }