1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_X86_CMPXCHG_64_H 3 #define _ASM_X86_CMPXCHG_64_H 4 5 static inline void set_64bit(volatile u64 *ptr, u64 val) 6 { 7 *ptr = val; 8 } 9 10 #define arch_cmpxchg64(ptr, o, n) \ 11 ({ \ 12 BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ 13 arch_cmpxchg((ptr), (o), (n)); \ 14 }) 15 16 #define arch_cmpxchg64_local(ptr, o, n) \ 17 ({ \ 18 BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ 19 arch_cmpxchg_local((ptr), (o), (n)); \ 20 }) 21 22 #define arch_try_cmpxchg64(ptr, po, n) \ 23 ({ \ 24 BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ 25 arch_try_cmpxchg((ptr), (po), (n)); \ 26 }) 27 28 #define system_has_cmpxchg_double() boot_cpu_has(X86_FEATURE_CX16) 29 30 #endif /* _ASM_X86_CMPXCHG_64_H */ 31