Changeset baf1ca7 in rtems-libbsd


Ignore:
Timestamp:
Sep 10, 2018, 1:06:07 PM (7 months ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
647dd08ae2aa69b935c2847ea450fb824322ecae, c6261f97870562d4c797cfb1ff1ba0affb85a916
Children:
3becda1
Parents:
bcdce02
git-author:
Sebastian Huber <sebastian.huber@…> (09/10/18 13:06:07)
git-committer:
Sebastian Huber <sebastian.huber@…> (09/21/18 08:29:41)
Message:

ck: Use atomic built-ins

Update #3472.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/contrib/ck/include/gcc/ck_pr.h

    rbcdce02 rbaf1ca7  
    127127        ck_pr_fence_strict_##T(void)                    \
    128128        {                                               \
    129                 __sync_synchronize();                   \
     129                __atomic_thread_fence(__ATOMIC_SEQ_CST);\
    130130        }
    131131
     
    159159        {                                                                       \
    160160                bool z;                                                         \
    161                 z = __sync_bool_compare_and_swap((T *)target, compare, set);    \
     161                z = __atomic_compare_exchange_n((T *)target, &compare, set,     \
     162                    false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);                 \
    162163                return z;                                                       \
    163164        }
     
    184185ck_pr_cas_ptr_value(void *target, void *compare, void *set, void *v)
    185186{
    186         set = __sync_val_compare_and_swap((void **)target, compare, set);
    187         *(void **)v = set;
    188         return (set == compare);
     187        *(void **)v = compare;
     188        return __atomic_compare_exchange_n((void **)target, v, set, false,
     189            __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
    189190}
    190191
     
    193194        ck_pr_cas_##S##_value(T *target, T compare, T set, T *v)        \
    194195        {                                                               \
    195                 set = __sync_val_compare_and_swap(target, compare, set);\
    196                 *v = set;                                               \
    197                 return (set == compare);                                \
     196                *v = compare;                                           \
     197                return __atomic_compare_exchange_n(target, v, set,      \
     198                    false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);         \
    198199        }
    199200
     
    215216        ck_pr_faa_##S(M *target, T d)                           \
    216217        {                                                       \
    217                 d = __sync_fetch_and_add((T *)target, d);       \
     218                d = __atomic_fetch_add((T *)target, d,          \
     219                    __ATOMIC_SEQ_CST);                          \
    218220                return (d);                                     \
    219221        }
     
    241243        ck_pr_##K##_##S(M *target, T d)                         \
    242244        {                                                       \
    243                 d = __sync_fetch_and_##K((T *)target, d);       \
     245                d = __atomic_fetch_##K((T *)target, d,          \
     246                    __ATOMIC_SEQ_CST);                          \
    244247                return;                                         \
    245248        }
Note: See TracChangeset for help on using the changeset viewer.