Browse Source

fix arch_try_cmpxchg macro declaration (#307)

fix arch_try_cmpxchg in atomic_cmpxchg

Co-authored-by: Yao Zhao <[email protected]>
zhaoyao73 1 year ago
parent
commit
7cc4a02c7f
2 changed files with 5 additions and 5 deletions
  1. 3 3
      kernel/src/arch/x86_64/include/asm/cmpxchg.h
  2. 2 2
      kernel/src/common/atomic.h

+ 3 - 3
kernel/src/arch/x86_64/include/asm/cmpxchg.h

@@ -77,7 +77,7 @@ extern void __cmpxchg_wrong_size(void) __compiletime_error("Bad argument size fo
         likely(is_success);                                         \
     })
 
-#define arch_try_cmpxchg(ptr, old_ptr, new_ptr) \
-    __raw_try_cmpxchg((ptr), (old_ptr), (new_ptr), sizeof(*ptr))
+#define arch_try_cmpxchg(ptr, old_ptr, new) \
+    __raw_try_cmpxchg((ptr), (old_ptr), (new), sizeof(*ptr))
 
-bool __try_cmpxchg_q(uint64_t *ptr, uint64_t *old_ptr, uint64_t *new_ptr);
+bool __try_cmpxchg_q(uint64_t *ptr, uint64_t *old_ptr, uint64_t *new_ptr);

+ 2 - 2
kernel/src/common/atomic.h

@@ -102,6 +102,6 @@ inline void atomic_clear_mask(atomic_t *ato, long mask)
 // cmpxchgq 比较并交换
 inline long atomic_cmpxchg(atomic_t *ato, long oldval, long newval)
 {
-    bool success = arch_try_cmpxchg(&ato->value, &oldval, &newval);
+    bool success = arch_try_cmpxchg(&ato->value, &oldval, newval);
     return success ? oldval : newval;
-}
+}