Changeset e4ddfa8 in mainline for arch/ppc32/include/atomic.h
- Timestamp:
- 2006-03-14T19:06:16Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1065603e
- Parents:
- edc89bd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/include/atomic.h
redc89bd re4ddfa8 34 34 typedef struct { volatile __u32 count; } atomic_t; 35 35 36 /* 37 * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec. 38 * WARNING: the following functions cause the code to be preemption-unsafe !!! 39 */ 36 static inline void atomic_inc(atomic_t *val) { 37 __u32 tmp; 40 38 41 static inline void atomic_inc(atomic_t *val) { 42 val->count++; 39 asm __volatile__ ( 40 "1:\n" 41 "lwarx %0, 0, %2\n" 42 "addic %0, %0, 1\n" 43 "stwcx. %0, 0, %2\n" 44 "bne- 1b" 45 : "=&r" (tmp), "=m" (val->count) 46 : "r" (&val->count), "m" (val->count) 47 : "cc"); 43 48 } 44 49 45 50 static inline void atomic_dec(atomic_t *val) { 46 val->count--; 51 __u32 tmp; 52 53 asm __volatile__( 54 "1:\n" 55 "lwarx %0, 0, %2\n" 56 "addic %0, %0, -1\n" 57 "stwcx. %0, 0, %2\n" 58 "bne- 1b" 59 : "=&r" (tmp), "=m" (val->count) 60 : "r" (&val->count), "m" (val->count) 61 : "cc"); 47 62 } 48 63
Note:
See TracChangeset
for help on using the changeset viewer.