Re: Build failures in -next due to 'locking/atomic, arch/arc: Implement atomic_fetch_{add,sub,and,andnot,or,xor}()'

From: Peter Zijlstra
Date: Fri Jun 17 2016 - 10:41:49 EST


On Fri, Jun 17, 2016 at 04:39:42PM +0200, Peter Zijlstra wrote:
> On Fri, Jun 17, 2016 at 07:36:56AM -0700, Guenter Roeck wrote:
> > Hi Peter,
> >
> > I am seeing build failures in -next when trying to build arc / arcv2 targets.
> >
> > arch/arc/include/asm/atomic.h:74:2: error: âSCOND_FAIL_RETRY_VAR_DEFâ undeclared
> > arch/arc/include/asm/atomic.h:87:2: error: expected â:â or â)â before âSCOND_FAIL_RETRY_ASMâ
> >
> > Problems seem to be caused by 'locking/atomic, arch/arc: Implement
> > atomic_fetch_{add,sub,and,andnot,or,xor}()'. Both SCOND_FAIL_RETRY_VAR_DEF and
> > SCOND_FAIL_RETRY_ASM are undefined.
>
> Crud, I messed up the rebase against the backoff reverts. Lemme go do
> fixups.

I've misplaced my arc compiler, but does this make it go again?


---
arch/arc/include/asm/atomic.h | 8 --------
1 file changed, 8 deletions(-)

diff --git a/arch/arc/include/asm/atomic.h b/arch/arc/include/asm/atomic.h
index bd9c51cb2bfd..4e3c1b6b0806 100644
--- a/arch/arc/include/asm/atomic.h
+++ b/arch/arc/include/asm/atomic.h
@@ -71,7 +71,6 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
static inline int atomic_fetch_##op(int i, atomic_t *v) \
{ \
unsigned int val, orig; \
- SCOND_FAIL_RETRY_VAR_DEF \
\
/* \
* Explicit full memory barrier needed before/after as \
@@ -84,11 +83,8 @@ static inline int atomic_fetch_##op(int i, atomic_t *v) \
" " #asm_op " %[val], %[orig], %[i] \n" \
" scond %[val], [%[ctr]] \n" \
" \n" \
- SCOND_FAIL_RETRY_ASM \
- \
: [val] "=&r" (val), \
[orig] "=&r" (orig) \
- SCOND_FAIL_RETRY_VARS \
: [ctr] "r" (&v->counter), \
[i] "ir" (i) \
: "cc"); \
@@ -199,10 +195,6 @@ ATOMIC_OPS(andnot, &= ~, bic)
ATOMIC_OPS(or, |=, or)
ATOMIC_OPS(xor, ^=, xor)

-#undef SCOND_FAIL_RETRY_VAR_DEF
-#undef SCOND_FAIL_RETRY_ASM
-#undef SCOND_FAIL_RETRY_VARS
-
#else /* CONFIG_ARC_PLAT_EZNPS */

static inline int atomic_read(const atomic_t *v)