compile errors on ARM due to cmpxchg() problems.

From: Remy Bohmer
Date: Tue May 20 2008 - 10:22:15 EST

Hello Steven,

I want to test on ARM, but unfortunately I run into
several compile errors.
All errors seem to be related to cmpxchg routines -> duplicate
definitions or missing BUILD_BUG_ON() or typecheck() macros.
I already figured out the missing BUILD_BUG_ON() + typecheck() problem
which is caused by including a header
'include/asm-generic/cmpxchg-local.h' in linux/kernel.h before these
macros are defined in linux/kernel.h. See below for a piece/snippet of
the compiler output.

Looking deeper into this, things look quite messy around cmpxchg() on ARM...

Any ideas what has been changed here, and why these things can go
wrong so badly?

Kind Regards,


---- 8-< ----
In file included from include/linux/rt_lock.h:14,
from include/linux/spinlock.h:117,
from include/linux/mmzone.h:7,
from include/linux/gfp.h:4,
from include/linux/slab.h:14,
from include/linux/percpu.h:5,
from include/linux/kernel_stat.h:7,
from arch/arm/kernel/irq.c:24:
include/asm/atomic.h:241:1: warning: "cmpxchg" redefined
In file included from include/asm/system.h:378,
from include/asm/bitops.h:27,
from include/linux/bitops.h:17,
from include/linux/kernel.h:32,
from include/linux/cpumask.h:84,
from include/linux/smp.h:10,
from include/linux/kernel_stat.h:5,
from arch/arm/kernel/irq.c:24:
include/asm-generic/cmpxchg.h:19:1: warning: this is the location of
the previous definition
In file included from include/asm/system.h:366,
from include/linux/list.h:9,
from include/linux/module.h:9,
from arch/arm/kernel/process.c:13:
include/asm-generic/cmpxchg-local.h: In function '__cmpxchg_local_generic':
include/asm-generic/cmpxchg-local.h:23: error: implicit declaration of
function 'BUILD_BUG_ON'
include/asm-generic/cmpxchg-local.h:23: error: implicit declaration of
function 'typecheck'
include/asm-generic/cmpxchg-local.h:23: error: expected expression
before 'unsigned'
include/asm-generic/cmpxchg-local.h:44: error: expected expression
before 'unsigned'
include/asm-generic/cmpxchg-local.h: In function '__cmpxchg64_local_generic':
include/asm-generic/cmpxchg-local.h:57: error: expected expression
before 'unsigned'
include/asm-generic/cmpxchg-local.h:61: error: expected expression
before 'unsigned'
---- 8-< ----
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/