epoc32/include/tools/stlport/stl/_sparc_atomic.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
     1.1 --- a/epoc32/include/tools/stlport/stl/_sparc_atomic.h	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/tools/stlport/stl/_sparc_atomic.h	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -1,60 +1,60 @@
     1.4 -
     1.5 -// Currently, SUN CC requires object file
     1.6 -
     1.7 -#if defined (__GNUC__)
     1.8 -
     1.9 -/*
    1.10 -**  int _STLP_atomic_exchange (__stl_atomic_t *pvalue, __stl_atomic_t value)
    1.11 -*/
    1.12 -
    1.13 -# ifdef __sparc_v9__
    1.14 -
    1.15 -#  ifdef __arch64__
    1.16 -
    1.17 -#   define _STLP_EXCH_ASM  asm volatile ("casx [%3], %4, %0 ;  membar  #LoadLoad | #LoadStore " : \
    1.18 -                   "=r" (_L_value2), "=m" (*_L_pvalue1) : \
    1.19 -                   "m" (*_L_pvalue1), "r" (_L_pvalue1), "r" (_L_value1), "0" (_L_value2) )
    1.20 -
    1.21 -#  else /* __arch64__ */
    1.22 -
    1.23 -#   define _STLP_EXCH_ASM  asm volatile ("cas [%3], %4, %0" : \
    1.24 -                   "=r" (_L_value2), "=m" (*_L_pvalue1) : \
    1.25 -                   "m" (*_L_pvalue1), "r" (_L_pvalue1), "r" (_L_value1), "0" (_L_value2) )
    1.26 -#  endif
    1.27 -
    1.28 -# else /* __sparc_v9__ */
    1.29 -
    1.30 -#  define _STLP_EXCH_ASM asm volatile ("swap [%3], %0 " : \
    1.31 -                                       "=r" (_L_value2), "=m" (*_L_pvalue1) : \
    1.32 -                                       "m" (*_L_pvalue1), "r" (_L_pvalue1),  "0" (_L_value2) )
    1.33 -# endif
    1.34 -
    1.35 -
    1.36 -#  define _STLP_ATOMIC_EXCHANGE(__pvalue1, __value2) \
    1.37 - ({  register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \
    1.38 -     register __stl_atomic_t _L_value1, _L_value2 =  __value2 ; \
    1.39 -     do { _L_value1 = *_L_pvalue1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; \
    1.40 -     _L_value1; })
    1.41 -
    1.42 -#  define _STLP_ATOMIC_INCREMENT(__pvalue1) \
    1.43 - {  register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \
    1.44 -    register __stl_atomic_t _L_value1, _L_value2; \
    1.45 -    do { _L_value1 = *_L_pvalue1;  _L_value2 = _L_value1+1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; }
    1.46 -
    1.47 -#  define _STLP_ATOMIC_DECREMENT(__pvalue1) \
    1.48 - {  register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \
    1.49 -    register __stl_atomic_t _L_value1, _L_value2; \
    1.50 -    do { _L_value1 = *_L_pvalue1;  _L_value2 = _L_value1-1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; }
    1.51 -
    1.52 -# elif ! defined (_STLP_NO_EXTERN_INLINE)
    1.53 -
    1.54 -extern "C" __stl_atomic_t _STLP_atomic_exchange(__stl_atomic_t * __x, __stl_atomic_t __v);
    1.55 -extern "C" void _STLP_atomic_decrement(__stl_atomic_t* i);
    1.56 -extern "C" void _STLP_atomic_increment(__stl_atomic_t* i);
    1.57 -
    1.58 -#  define _STLP_ATOMIC_INCREMENT(__x)           _STLP_atomic_increment((__stl_atomic_t*)__x)
    1.59 -#  define _STLP_ATOMIC_DECREMENT(__x)           _STLP_atomic_decrement((__stl_atomic_t*)__x)
    1.60 -#  define _STLP_ATOMIC_EXCHANGE(__x, __y)       _STLP_atomic_exchange((__stl_atomic_t*)__x, (__stl_atomic_t)__y)
    1.61 -
    1.62 -# endif
    1.63 -
    1.64 +
    1.65 +// Currently, SUN CC requires object file
    1.66 +
    1.67 +#if defined (__GNUC__)
    1.68 +
    1.69 +/*
    1.70 +**  int _STLP_atomic_exchange (__stl_atomic_t *pvalue, __stl_atomic_t value)
    1.71 +*/
    1.72 +
    1.73 +# ifdef __sparc_v9__
    1.74 +
    1.75 +#  ifdef __arch64__
    1.76 +
    1.77 +#   define _STLP_EXCH_ASM  asm volatile ("casx [%3], %4, %0 ;  membar  #LoadLoad | #LoadStore " : \
    1.78 +                   "=r" (_L_value2), "=m" (*_L_pvalue1) : \
    1.79 +                   "m" (*_L_pvalue1), "r" (_L_pvalue1), "r" (_L_value1), "0" (_L_value2) )
    1.80 +
    1.81 +#  else /* __arch64__ */
    1.82 +
    1.83 +#   define _STLP_EXCH_ASM  asm volatile ("cas [%3], %4, %0" : \
    1.84 +                   "=r" (_L_value2), "=m" (*_L_pvalue1) : \
    1.85 +                   "m" (*_L_pvalue1), "r" (_L_pvalue1), "r" (_L_value1), "0" (_L_value2) )
    1.86 +#  endif
    1.87 +
    1.88 +# else /* __sparc_v9__ */
    1.89 +
    1.90 +#  define _STLP_EXCH_ASM asm volatile ("swap [%3], %0 " : \
    1.91 +                                       "=r" (_L_value2), "=m" (*_L_pvalue1) : \
    1.92 +                                       "m" (*_L_pvalue1), "r" (_L_pvalue1),  "0" (_L_value2) )
    1.93 +# endif
    1.94 +
    1.95 +
    1.96 +#  define _STLP_ATOMIC_EXCHANGE(__pvalue1, __value2) \
    1.97 + ({  register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \
    1.98 +     register __stl_atomic_t _L_value1, _L_value2 =  __value2 ; \
    1.99 +     do { _L_value1 = *_L_pvalue1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; \
   1.100 +     _L_value1; })
   1.101 +
   1.102 +#  define _STLP_ATOMIC_INCREMENT(__pvalue1) \
   1.103 + {  register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \
   1.104 +    register __stl_atomic_t _L_value1, _L_value2; \
   1.105 +    do { _L_value1 = *_L_pvalue1;  _L_value2 = _L_value1+1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; }
   1.106 +
   1.107 +#  define _STLP_ATOMIC_DECREMENT(__pvalue1) \
   1.108 + {  register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \
   1.109 +    register __stl_atomic_t _L_value1, _L_value2; \
   1.110 +    do { _L_value1 = *_L_pvalue1;  _L_value2 = _L_value1-1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; }
   1.111 +
   1.112 +# elif ! defined (_STLP_NO_EXTERN_INLINE)
   1.113 +
   1.114 +extern "C" __stl_atomic_t _STLP_atomic_exchange(__stl_atomic_t * __x, __stl_atomic_t __v);
   1.115 +extern "C" void _STLP_atomic_decrement(__stl_atomic_t* i);
   1.116 +extern "C" void _STLP_atomic_increment(__stl_atomic_t* i);
   1.117 +
   1.118 +#  define _STLP_ATOMIC_INCREMENT(__x)           _STLP_atomic_increment((__stl_atomic_t*)__x)
   1.119 +#  define _STLP_ATOMIC_DECREMENT(__x)           _STLP_atomic_decrement((__stl_atomic_t*)__x)
   1.120 +#  define _STLP_ATOMIC_EXCHANGE(__x, __y)       _STLP_atomic_exchange((__stl_atomic_t*)__x, (__stl_atomic_t)__y)
   1.121 +
   1.122 +# endif
   1.123 +