Changeset 80d2bdb in mainline for arch/ia32/include/atomic.h
- Timestamp:
- 2005-12-15T16:10:19Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b4cad8b2
- Parents:
- 7dd2561
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/include/atomic.h
r7dd2561 r80d2bdb 32 32 #include <arch/types.h> 33 33 34 typedef volatile __u32 atomic_t; 34 typedef struct { volatile __u32 count; } atomic_t; 35 36 static inline void atomic_set(atomic_t *val, __u32 i) 37 { 38 val->count = i; 39 } 40 41 static inline __u32 atomic_get(atomic_t *val) 42 { 43 return val->count; 44 } 35 45 36 46 static inline void atomic_inc(atomic_t *val) { 37 47 #ifdef CONFIG_SMP 38 __asm__ volatile ("lock incl %0\n" : "=m" ( *val));48 __asm__ volatile ("lock incl %0\n" : "=m" (val->count)); 39 49 #else 40 __asm__ volatile ("incl %0\n" : "=m" ( *val));50 __asm__ volatile ("incl %0\n" : "=m" (val->count)); 41 51 #endif /* CONFIG_SMP */ 42 52 } … … 44 54 static inline void atomic_dec(atomic_t *val) { 45 55 #ifdef CONFIG_SMP 46 __asm__ volatile ("lock decl %0\n" : "=m" ( *val));56 __asm__ volatile ("lock decl %0\n" : "=m" (val->count)); 47 57 #else 48 __asm__ volatile ("decl %0\n" : "=m" ( *val));58 __asm__ volatile ("decl %0\n" : "=m" (val->count)); 49 59 #endif /* CONFIG_SMP */ 50 60 } … … 56 66 "movl $1, %0\n" 57 67 "lock xaddl %0, %1\n" 58 : "=r"(r), "=m" ( *val)68 : "=r"(r), "=m" (val->count) 59 69 ); 60 70 return r; … … 77 87 #define atomic_dec_post(val) (atomic_dec_pre(val)-1) 78 88 79 static inline int test_and_set( volatile int *val) {89 static inline int test_and_set(atomic_t *val) { 80 90 int v; 81 91 … … 83 93 "movl $1, %0\n" 84 94 "xchgl %0, %1\n" 85 : "=r" (v),"=m" ( *val)95 : "=r" (v),"=m" (val->count) 86 96 ); 87 97
Note:
See TracChangeset
for help on using the changeset viewer.