Changeset c8f70eb in mainline for uspace/lib/c/arch/amd64/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/amd64/include/atomic.h
r81bc309 rc8f70eb 44 44 static inline void atomic_inc(atomic_t *val) 45 45 { 46 #ifdef __PCC__ 46 47 asm volatile ( 47 48 "lock incq %0\n" 48 49 : "+m" (val->count) 49 50 ); 51 #else 52 asm volatile ( 53 "lock incq %[count]\n" 54 : [count] "+m" (val->count) 55 ); 56 #endif 50 57 } 51 58 52 59 static inline void atomic_dec(atomic_t *val) 53 60 { 61 #ifdef __PCC__ 54 62 asm volatile ( 55 63 "lock decq %0\n" 56 64 : "+m" (val->count) 57 65 ); 66 #else 67 asm volatile ( 68 "lock decq %[count]\n" 69 : [count] "+m" (val->count) 70 ); 71 #endif 58 72 } 59 73 … … 62 76 atomic_count_t r = 1; 63 77 78 #ifdef __PCC__ 64 79 asm volatile ( 65 80 "lock xaddq %1, %0\n" … … 67 82 "+r" (r) 68 83 ); 84 #else 85 asm volatile ( 86 "lock xaddq %[r], %[count]\n" 87 : [count] "+m" (val->count), 88 [r] "+r" (r) 89 ); 90 #endif 69 91 70 92 return r; … … 75 97 atomic_count_t r = -1; 76 98 99 #ifdef __PCC__ 77 100 asm volatile ( 78 101 "lock xaddq %1, %0\n" … … 80 103 "+r" (r) 81 104 ); 105 #else 106 asm volatile ( 107 "lock xaddq %[r], %[count]\n" 108 : [count] "+m" (val->count), 109 [r] "+r" (r) 110 ); 111 #endif 82 112 83 113 return r;
Note:
See TracChangeset
for help on using the changeset viewer.