Changeset c8f70eb in mainline for uspace/lib/c/arch/ia32/include/atomic.h
- Timestamp:
- 2011-08-20T17:04:52Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ac08cd9
- Parents:
- 81bc309
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/ia32/include/atomic.h
r81bc309 rc8f70eb 42 42 static inline void atomic_inc(atomic_t *val) 43 43 { 44 #ifdef __PCC__ 44 45 asm volatile ( 45 46 "lock incl %0\n" 46 47 : "+m" (val->count) 47 48 ); 49 #else 50 asm volatile ( 51 "lock incl %[count]\n" 52 : [count] "+m" (val->count) 53 ); 54 #endif 48 55 } 49 56 50 57 static inline void atomic_dec(atomic_t *val) 51 58 { 59 #ifdef __PCC__ 52 60 asm volatile ( 53 61 "lock decl %0\n" 54 62 : "+m" (val->count) 55 63 ); 64 #else 65 asm volatile ( 66 "lock decl %[count]\n" 67 : [count] "+m" (val->count) 68 ); 69 #endif 56 70 } 57 71 … … 60 74 atomic_count_t r = 1; 61 75 76 #ifdef __PCC__ 62 77 asm volatile ( 63 78 "lock xaddl %1, %0\n" … … 65 80 "+r" (r) 66 81 ); 82 #else 83 asm volatile ( 84 "lock xaddl %[r], %[count]\n" 85 : [count] "+m" (val->count), 86 [r] "+r" (r) 87 ); 88 #endif 67 89 68 90 return r; … … 73 95 atomic_count_t r = -1; 74 96 97 #ifdef __PCC__ 75 98 asm volatile ( 76 99 "lock xaddl %1, %0\n" … … 78 101 "+r" (r) 79 102 ); 103 #else 104 asm volatile ( 105 "lock xaddl %[r], %[count]\n" 106 : [count] "+m" (val->count), 107 [r] "+r" (r) 108 ); 109 #endif 80 110 81 111 return r;
Note:
See TracChangeset
for help on using the changeset viewer.