[U-Boot] [PATCH v4 4/4]: arm: Define test_and_set_bit and test_and_clear bit for ARM

Justin Waters
2009-09-04T21:27:59Z

Simon,

I found a slight problem with this section of the patch:

On Mon, 2009-08-24 at 03:10 -0400, Simon Kagstrom wrote:
> diff --git a/include/asm-arm/bitops.h b/include/asm-arm/bitops.h
> index 854e225..3c7b00c 100644
> --- a/include/asm-arm/bitops.h
> +++ b/include/asm-arm/bitops.h
> @@ -17,6 +17,8 @@
>
> #ifdef __KERNEL__
>
> +#include <asm/proc/system.h>
> +

It causes a compiler error on the arm926ejs platform:

In file included from cpu.c:34:
/home/justin/git/u-boot/include/asm/system.h: At top level:
/home/justin/git/u-boot/include/asm/system.h:71: error: expected
identifier or '(' before 'asm'

I did some digging, and it looks like set_cr() is implemented by both
asm-arm/system.h and asm-arm/proc-armv/system.h. One implements the
function as a macro, while the other uses a standard C function, hence
the weird error message. The conflict occurs in cpu/arm926ejs/cpu.c.

* cpu.c includes both common.h and asm/system.h
* common.h includes asm/bitops.h, which now includes asm/proc/system.h

There are a few other values that are defined in both files, although
they don't seem to cause any problems.

If I comment out one of the two implementations, the code compiles fine.
However, I'm not really sure what the correct fix would be. I just
wanted to let you know.

-Justin Waters