[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>

authored by Dan Williams and committed by Russell King 7dea1b20 a8135fcf

+1 -2
+1 -2
include/asm-arm/arch-iop13xx/uncompress.h
··· 1 #include <asm/types.h> 2 #include <linux/serial_reg.h> 3 #include <asm/hardware.h> 4 - #include <asm/processor.h> 5 6 #define UART_BASE ((volatile u32 *)IOP13XX_UART1_PHYS) 7 #define TX_DONE (UART_LSR_TEMT | UART_LSR_THRE) ··· 8 static inline void putc(char c) 9 { 10 while ((UART_BASE[UART_LSR] & TX_DONE) != TX_DONE) 11 - cpu_relax(); 12 UART_BASE[UART_TX] = c; 13 } 14
··· 1 #include <asm/types.h> 2 #include <linux/serial_reg.h> 3 #include <asm/hardware.h> 4 5 #define UART_BASE ((volatile u32 *)IOP13XX_UART1_PHYS) 6 #define TX_DONE (UART_LSR_TEMT | UART_LSR_THRE) ··· 9 static inline void putc(char c) 10 { 11 while ((UART_BASE[UART_LSR] & TX_DONE) != TX_DONE) 12 + barrier(); 13 UART_BASE[UART_TX] = c; 14 } 15