diff options
author | Dan Williams <dan.j.williams@intel.com> | 2007-07-19 21:07:31 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-07-20 04:35:35 -0400 |
commit | 7dea1b20066cd30fb54da7e686b16b5e38b46b2d (patch) | |
tree | bf4ccad6871f9b62426659f469a07360fb3166c3 | |
parent | a8135fcfd0431eda3653c7069e7aefc8674fdfbe (diff) |
[ARM] 4494/1: iop13xx: fix up elf_hwcap compile breakage
arch/arm/boot/compressed/misc.o: In function `valid_user_regs':
misc.c:(.text+0x74): undefined reference to `elf_hwcap'
This triggers after the various elf_hwcap cleanups in:
f884b1cf578e079f01682514ae1ae64c74586602
d1cbbd6b413510c6512f4f80ffd48db1a8dd554a
include/asm-arm/arch-iop13xx/uncompress.h calls cpu_relax while spinning on
a register value. cpu_relax requires processor.h->ptrace.h->hwcap.h
'elf_hwcap' is defined as an extern, but since the uncompressor does not
link against arch/arm/kernel/setup.c 'elf_hwcap' remains undefined.
Fix is to open code the cpu_relax() call as barrier().
Cc: Lennert Buytenhek <kernel@wantstofly.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | include/asm-arm/arch-iop13xx/uncompress.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/include/asm-arm/arch-iop13xx/uncompress.h b/include/asm-arm/arch-iop13xx/uncompress.h index b9525d59b7ad..dd9c2934190e 100644 --- a/include/asm-arm/arch-iop13xx/uncompress.h +++ b/include/asm-arm/arch-iop13xx/uncompress.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #include <asm/types.h> | 1 | #include <asm/types.h> |
2 | #include <linux/serial_reg.h> | 2 | #include <linux/serial_reg.h> |
3 | #include <asm/hardware.h> | 3 | #include <asm/hardware.h> |
4 | #include <asm/processor.h> | ||
5 | 4 | ||
6 | #define UART_BASE ((volatile u32 *)IOP13XX_UART1_PHYS) | 5 | #define UART_BASE ((volatile u32 *)IOP13XX_UART1_PHYS) |
7 | #define TX_DONE (UART_LSR_TEMT | UART_LSR_THRE) | 6 | #define TX_DONE (UART_LSR_TEMT | UART_LSR_THRE) |
@@ -9,7 +8,7 @@ | |||
9 | static inline void putc(char c) | 8 | static inline void putc(char c) |
10 | { | 9 | { |
11 | while ((UART_BASE[UART_LSR] & TX_DONE) != TX_DONE) | 10 | while ((UART_BASE[UART_LSR] & TX_DONE) != TX_DONE) |
12 | cpu_relax(); | 11 | barrier(); |
13 | UART_BASE[UART_TX] = c; | 12 | UART_BASE[UART_TX] = c; |
14 | } | 13 | } |
15 | 14 | ||