Add some functionality to atomic stubs

pull/11797/head
Seppo Takalo 2019-10-31 17:35:15 +02:00
parent 168b51c415
commit 31fbed9066
1 changed files with 51 additions and 21 deletions

View File

@ -57,113 +57,143 @@ uint32_t core_util_atomic_exchange_u32(volatile uint32_t *ptr, uint32_t desiredV
uint8_t core_util_atomic_incr_u8(volatile uint8_t *valuePtr, uint8_t delta)
{
return 0;
return *valuePtr+=delta;
}
uint16_t core_util_atomic_incr_u16(volatile uint16_t *valuePtr, uint16_t delta)
{
return 0;
return *valuePtr+=delta;
}
uint32_t core_util_atomic_incr_u32(volatile uint32_t *valuePtr, uint32_t delta)
{
return 0;
return *valuePtr+=delta;
}
uint8_t core_util_atomic_decr_u8(volatile uint8_t *valuePtr, uint8_t delta)
{
return 0;
return *valuePtr-=delta;
}
uint16_t core_util_atomic_decr_u16(volatile uint16_t *valuePtr, uint16_t delta)
{
return 0;
return *valuePtr-=delta;
}
uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta)
{
return 0;
return *valuePtr-=delta;
}
uint8_t core_util_atomic_fetch_add_u8(volatile uint8_t *valuePtr, uint8_t arg)
{
return 0;
uint8_t v = *valuePtr;
*valuePtr += arg;
return v;
}
uint16_t core_util_atomic_fetch_add_u16(volatile uint16_t *valuePtr, uint16_t arg)
{
return 0;
uint16_t v = *valuePtr;
*valuePtr += arg;
return v;
}
uint32_t core_util_atomic_fetch_add_u32(volatile uint32_t *valuePtr, uint32_t arg)
{
return 0;
uint32_t v = *valuePtr;
*valuePtr += arg;
return v;
}
uint8_t core_util_atomic_fetch_sub_u8(volatile uint8_t *valuePtr, uint8_t arg)
{
return 0;
uint8_t v = *valuePtr;
*valuePtr -= arg;
return v;
}
uint16_t core_util_atomic_fetch_sub_u16(volatile uint16_t *valuePtr, uint16_t arg)
{
return 0;
uint16_t v = *valuePtr;
*valuePtr -= arg;
return v;
}
uint32_t core_util_atomic_fetch_sub_u32(volatile uint32_t *valuePtr, uint32_t arg)
{
return 0;
uint32_t v = *valuePtr;
*valuePtr -= arg;
return v;
}
uint8_t core_util_atomic_fetch_and_u8(volatile uint8_t *valuePtr, uint8_t arg)
{
return 0;
uint8_t v = *valuePtr;
*valuePtr &= arg;
return v;
}
uint16_t core_util_atomic_fetch_and_u16(volatile uint16_t *valuePtr, uint16_t arg)
{
return 0;
uint16_t v = *valuePtr;
*valuePtr &= arg;
return v;
}
uint32_t core_util_atomic_fetch_and_u32(volatile uint32_t *valuePtr, uint32_t arg)
{
return 0;
uint32_t v = *valuePtr;
*valuePtr &= arg;
return v;
}
uint8_t core_util_atomic_fetch_or_u8(volatile uint8_t *valuePtr, uint8_t arg)
{
return 0;
uint8_t v = *valuePtr;
*valuePtr |= arg;
return v;
}
uint16_t core_util_atomic_fetch_or_u16(volatile uint16_t *valuePtr, uint16_t arg)
{
return 0;
uint16_t v = *valuePtr;
*valuePtr |= arg;
return v;
}
uint32_t core_util_atomic_fetch_or_u32(volatile uint32_t *valuePtr, uint32_t arg)
{
return 0;
uint32_t v = *valuePtr;
*valuePtr |= arg;
return v;
}
uint8_t core_util_atomic_fetch_xor_u8(volatile uint8_t *valuePtr, uint8_t arg)
{
return 0;
uint8_t v = *valuePtr;
*valuePtr ^= arg;
return v;
}
uint16_t core_util_atomic_fetch_xor_u16(volatile uint16_t *valuePtr, uint16_t arg)
{
return 0;
uint16_t v = *valuePtr;
*valuePtr ^= arg;
return v;
}
uint32_t core_util_atomic_fetch_xor_u32(volatile uint32_t *valuePtr, uint32_t arg)
{
return 0;
uint32_t v = *valuePtr;
*valuePtr ^= arg;
return v;
}