android_kernel_google_msm/arch/avr32
Andreas Bießmann fb1601f038 avr32: fix out-of-range jump in large kernels
commit d617b338bb upstream.

This patch fixes following error (for big kernels):

---8<---
arch/avr32/boot/u-boot/head.o: In function `no_tag_table':
(.init.text+0x44): relocation truncated to fit: R_AVR32_22H_PCREL against symbol `panic' defined in .text.unlikely section in kernel/built-in.o
arch/avr32/kernel/built-in.o: In function `bad_return':
(.ex.text+0x236): relocation truncated to fit: R_AVR32_22H_PCREL against symbol `panic' defined in .text.unlikely section in kernel/built-in.o
--->8---

It comes up when the kernel increases and 'panic()' is too far away to fit in
the +/- 2MiB range. Which in turn issues from the 21-bit displacement in
'br{cond4}' mnemonic which is one of the two ways to do jumps (rjmp has just
10-bit displacement and therefore a way smaller range). This fact was stated
before in 8d29b7b9f8.
One solution to solve this is to add a local storage for the symbol address
and just load the $pc with that value.

Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-04 10:50:32 -08:00
..
boards ATMEL: fix nand ecc support 2012-03-15 23:26:32 +08:00
boot avr32: fix out-of-range jump in large kernels 2013-12-04 10:50:32 -08:00
configs mmc: at91/avr32/atmel-mci: fix DMA-channel leak on module unload 2013-05-07 19:51:57 -07:00
include/asm signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer 2013-04-05 10:04:14 -07:00
kernel avr32: fix out-of-range jump in large kernels 2013-12-04 10:50:32 -08:00
lib
mach-at32ap avr32: fix build failures from mis-naming of atmel_nand.h 2012-04-02 14:41:25 -07:00
mm
oprofile Disintegrate asm/system.h for AVR32 2012-03-28 18:30:01 +01:00
Kconfig avr32: select generic atomic64_t support 2012-02-03 16:16:40 -08:00
Kconfig.debug
Makefile