Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/include/atomic-v6.h
Show First 20 Lines • Show All 907 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
volatile uint32_t *p32; | volatile uint32_t *p32; | ||||
p32 = (volatile uint32_t *)p; | p32 = (volatile uint32_t *)p; | ||||
/* | /* | ||||
* Assume little-endian, | * Assume little-endian, | ||||
* atomic_testandclear_32() uses only last 5 bits of v | * atomic_testandclear_32() uses only last 5 bits of v | ||||
*/ | */ | ||||
if (v >= 32) { | if ((v & 0x20) != 0) | ||||
p32++; | p32++; | ||||
} | |||||
return (atomic_testandclear_32(p32, v)); | return (atomic_testandclear_32(p32, v)); | ||||
} | } | ||||
static __inline int | static __inline int | ||||
atomic_testandset_32(volatile uint32_t *ptr, u_int bit) | atomic_testandset_32(volatile uint32_t *ptr, u_int bit) | ||||
{ | { | ||||
int newv, oldv, result; | int newv, oldv, result; | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
volatile uint32_t *p32; | volatile uint32_t *p32; | ||||
p32 = (volatile uint32_t *)p; | p32 = (volatile uint32_t *)p; | ||||
/* | /* | ||||
* Assume little-endian, | * Assume little-endian, | ||||
* atomic_testandset_32() uses only last 5 bits of v | * atomic_testandset_32() uses only last 5 bits of v | ||||
*/ | */ | ||||
if (v >= 32) { | if ((v & 0x20) != 0) | ||||
p32++; | p32++; | ||||
} | |||||
return (atomic_testandset_32(p32, v)); | return (atomic_testandset_32(p32, v)); | ||||
} | } | ||||
static __inline uint32_t | static __inline uint32_t | ||||
atomic_swap_32(volatile uint32_t *p, uint32_t v) | atomic_swap_32(volatile uint32_t *p, uint32_t v) | ||||
{ | { | ||||
uint32_t ret, exflag; | uint32_t ret, exflag; | ||||
▲ Show 20 Lines • Show All 66 Lines • Show Last 20 Lines |