Changeset 73a4bab in mainline for arch/ia32/include
- Timestamp:
- 2005-11-11T14:06:55Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8a0b3730
- Parents:
- 0172eba
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/include/atomic.h
r0172eba r73a4bab 36 36 static inline void atomic_inc(atomic_t *val) { 37 37 #ifdef CONFIG_SMP 38 __asm__ volatile ("lock incl %0\n" : " =m" (*val));38 __asm__ volatile ("lock incl %0\n" : "+m" (*val)); 39 39 #else 40 __asm__ volatile ("incl %0\n" : " =m" (*val));40 __asm__ volatile ("incl %0\n" : "+m" (*val)); 41 41 #endif /* CONFIG_SMP */ 42 42 } … … 44 44 static inline void atomic_dec(atomic_t *val) { 45 45 #ifdef CONFIG_SMP 46 __asm__ volatile ("lock decl %0\n" : " =m" (*val));46 __asm__ volatile ("lock decl %0\n" : "+m" (*val)); 47 47 #else 48 __asm__ volatile ("decl %0\n" : " =m" (*val));48 __asm__ volatile ("decl %0\n" : "+m" (*val)); 49 49 #endif /* CONFIG_SMP */ 50 50 } 51 52 static inline atomic_t atomic_inc_pre(atomic_t *val) 53 { 54 atomic_t r; 55 __asm__ volatile ( 56 "movl $1,%0;" 57 "lock xaddl %0,%1;" 58 : "=r"(r), "+m" (*val) 59 ); 60 return r; 61 } 62 63 64 65 static inline atomic_t atomic_dec_pre(atomic_t *val) 66 { 67 atomic_t r; 68 __asm__ volatile ( 69 "movl $-1,%0;" 70 "lock xaddl %0,%1;" 71 : "=r"(r), "+m" (*val) 72 ); 73 return r; 74 } 75 76 #define atomic_inc_post(val) (atomic_inc_pre(val)+1) 77 #define atomic_dec_post(val) (atomic_dec_pre(val)-1) 78 79 51 80 52 81 static inline int test_and_set(volatile int *val) { … … 56 85 "movl $1, %0\n" 57 86 "xchgl %0, %1\n" 58 : "=r" (v)," =m" (*val)87 : "=r" (v),"+m" (*val) 59 88 ); 60 89
Note:
See TracChangeset
for help on using the changeset viewer.