Changeset 3502 in kBuild
- Timestamp:
- Dec 14, 2021 11:13:33 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/shthread.h
r3457 r3502 52 52 void shthread_set_shell(struct shinstance *); 53 53 struct shinstance *shthread_get_shell(void); 54 void shthread_set_name(const char *name); 54 55 55 56 int shmtx_init(shmtx *pmtx); … … 63 64 #ifdef _MSC_VER 64 65 return _InterlockedIncrement((long *)valuep); 66 #elif defined(__GNUC__) && (K_ARCH == K_ARCH_AMD64 || K_ARCH == K_ARCH_X86) 67 unsigned uRet; 68 __asm__ __volatile__("lock; xaddl %1, %0" : "=m" (*valuep), "=r" (uRet) : "m" (*valuep), "1" (1) : "memory", "cc"); 69 return uRet + 1; 65 70 #else 66 71 return __sync_add_and_fetch(valuep, 1); … … 72 77 #ifdef _MSC_VER 73 78 return _InterlockedDecrement((long *)valuep); 79 #elif defined(__GNUC__) && (K_ARCH == K_ARCH_AMD64 || K_ARCH == K_ARCH_X86) 80 unsigned uRet; 81 __asm__ __volatile__("lock; xaddl %1, %0" : "=m" (*valuep), "=r" (uRet) : "m" (*valuep), "1" (-1) : "memory", "cc"); 82 return uRet - 1; 74 83 #else 75 84 return __sync_sub_and_fetch(valuep, 1);
Note:
See TracChangeset
for help on using the changeset viewer.