Clean up the style of the armv6 atomic code.
Sponsored by: ABT Systems Ltd
This commit is contained in:
parent
abb4c3dbfe
commit
a612bbfa12
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285689
@ -97,7 +97,8 @@ atomic_add_32(volatile uint32_t *p, uint32_t val)
|
||||
{
|
||||
uint32_t tmp = 0, tmp2 = 0;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%2]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%2] \n"
|
||||
" add %0, %0, %3 \n"
|
||||
" strex %1, %0, [%2] \n"
|
||||
" cmp %1, #0 \n"
|
||||
@ -145,14 +146,15 @@ atomic_clear_32(volatile uint32_t *address, uint32_t setmask)
|
||||
{
|
||||
uint32_t tmp = 0, tmp2 = 0;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%2]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%2] \n"
|
||||
" bic %0, %0, %3 \n"
|
||||
" strex %1, %0, [%2] \n"
|
||||
" cmp %1, #0 \n"
|
||||
" it ne \n"
|
||||
" bne 1b \n"
|
||||
: "=&r" (tmp), "+r" (tmp2)
|
||||
,"+r" (address), "+r" (setmask) : : "cc", "memory");
|
||||
: "=&r" (tmp), "+r" (tmp2), "+r" (address), "+r" (setmask)
|
||||
: : "cc", "memory");
|
||||
}
|
||||
|
||||
static __inline void
|
||||
@ -193,7 +195,8 @@ atomic_cmpset_32(volatile uint32_t *p, uint32_t cmpval, uint32_t newval)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%1]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%1] \n"
|
||||
" cmp %0, %2 \n"
|
||||
" itt ne \n"
|
||||
" movne %0, #0 \n"
|
||||
@ -204,9 +207,8 @@ atomic_cmpset_32(volatile uint32_t *p, uint32_t cmpval, uint32_t newval)
|
||||
" moveq %0, #1 \n"
|
||||
" bne 1b \n"
|
||||
"2:"
|
||||
: "=&r" (ret)
|
||||
,"+r" (p), "+r" (cmpval), "+r" (newval) : : "cc",
|
||||
"memory");
|
||||
: "=&r" (ret), "+r" (p), "+r" (cmpval), "+r" (newval)
|
||||
: : "cc", "memory");
|
||||
return (ret);
|
||||
}
|
||||
|
||||
@ -305,14 +307,15 @@ atomic_fetchadd_32(volatile uint32_t *p, uint32_t val)
|
||||
{
|
||||
uint32_t tmp = 0, tmp2 = 0, ret = 0;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%3]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%3] \n"
|
||||
" add %1, %0, %4 \n"
|
||||
" strex %2, %1, [%3] \n"
|
||||
" cmp %2, #0 \n"
|
||||
" it ne \n"
|
||||
" bne 1b \n"
|
||||
: "+r" (ret), "=&r" (tmp), "+r" (tmp2)
|
||||
,"+r" (p), "+r" (val) : : "cc", "memory");
|
||||
: "+r" (ret), "=&r" (tmp), "+r" (tmp2), "+r" (p), "+r" (val)
|
||||
: : "cc", "memory");
|
||||
return (ret);
|
||||
}
|
||||
|
||||
@ -368,7 +371,6 @@ atomic_load_64(volatile uint64_t *p)
|
||||
* with CLREX because we don't actually need to store anything.
|
||||
*/
|
||||
__asm __volatile(
|
||||
"1: \n"
|
||||
"ldrexd %Q[ret], %R[ret], [%[ptr]] \n"
|
||||
"clrex \n"
|
||||
: [ret] "=&r" (ret)
|
||||
@ -402,14 +404,15 @@ atomic_readandclear_32(volatile uint32_t *p)
|
||||
{
|
||||
uint32_t ret, tmp = 0, tmp2 = 0;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%3]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%3] \n"
|
||||
" mov %1, #0 \n"
|
||||
" strex %2, %1, [%3] \n"
|
||||
" cmp %2, #0 \n"
|
||||
" it ne \n"
|
||||
" bne 1b \n"
|
||||
: "=r" (ret), "=&r" (tmp), "+r" (tmp2)
|
||||
,"+r" (p) : : "cc", "memory");
|
||||
: "=r" (ret), "=&r" (tmp), "+r" (tmp2), "+r" (p)
|
||||
: : "cc", "memory");
|
||||
return (ret);
|
||||
}
|
||||
|
||||
@ -448,15 +451,15 @@ atomic_set_32(volatile uint32_t *address, uint32_t setmask)
|
||||
{
|
||||
uint32_t tmp = 0, tmp2 = 0;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%2]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%2] \n"
|
||||
" orr %0, %0, %3 \n"
|
||||
" strex %1, %0, [%2] \n"
|
||||
" cmp %1, #0 \n"
|
||||
" it ne \n"
|
||||
" bne 1b \n"
|
||||
: "=&r" (tmp), "+r" (tmp2)
|
||||
, "+r" (address), "+r" (setmask) : : "cc", "memory");
|
||||
|
||||
: "=&r" (tmp), "+r" (tmp2), "+r" (address), "+r" (setmask)
|
||||
: : "cc", "memory");
|
||||
}
|
||||
|
||||
static __inline void
|
||||
@ -497,14 +500,15 @@ atomic_subtract_32(volatile uint32_t *p, uint32_t val)
|
||||
{
|
||||
uint32_t tmp = 0, tmp2 = 0;
|
||||
|
||||
__asm __volatile("1: ldrex %0, [%2]\n"
|
||||
__asm __volatile(
|
||||
"1: ldrex %0, [%2] \n"
|
||||
" sub %0, %0, %3 \n"
|
||||
" strex %1, %0, [%2] \n"
|
||||
" cmp %1, #0 \n"
|
||||
" it ne \n"
|
||||
" bne 1b \n"
|
||||
: "=&r" (tmp), "+r" (tmp2)
|
||||
,"+r" (p), "+r" (val) : : "cc", "memory");
|
||||
: "=&r" (tmp), "+r" (tmp2), "+r" (p), "+r" (val)
|
||||
: : "cc", "memory");
|
||||
}
|
||||
|
||||
static __inline void
|
||||
|
Loading…
Reference in New Issue
Block a user