26 #ifndef _MD_ATOMIC_HPP
27 #define _MD_ATOMIC_HPP
46 inline uint32_t
compare_and_swap(
volatile uint32_t *p, uint32_t oldval, uint32_t newval)
48 __asm__ __volatile__ (
50 :
"+d" (oldval),
"=m" (*p)
51 :
"a" (p),
"d" (newval),
"m" (*p)
67 inline uint64_t
compare_and_swap(
volatile uint64_t *p, uint64_t oldval, uint64_t newval)
78 __asm__ __volatile__ (
"bcr 15,0" : : :
"memory" );
95 __asm__ __volatile__ (
"" : : :
"memory" );
100 #endif // _MD_ATOMIC_HPP
uint32_t compare_and_swap(volatile uint32_t *p, uint32_t oldval, uint32_t newval)
An atomic compare and swap for 32-bit integer values.
void memory_barrier(void)
A memory barrier.
void write_memory_barrier(void)
A write memory barrier.
void instruction_barrier(void)
An instruction barrier.
uint32_t generic_compare_and_swap(volatile uint32_t *p, uint32_t oldval, uint32_t newval)
A generic atomic compare and swap for 32-bit integer values.