kernel_optimize_test/arch/avr32/kernel
Andreas Bießmann d617b338bb avr32: fix out-of-range jump in large kernels
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>
Cc: stable@vger.kernel.org
2013-11-20 09:53:21 +01:00
..
.gitignore avr32: add .gitignore files 2008-09-19 18:21:29 +02:00
asm-offsets.c avr32: Fix lockup after Java stack underflow in user mode 2008-09-01 13:04:04 +02:00
avr32_ksyms.c asm-generic: rename generic little-endian bitops functions 2011-03-23 19:46:11 -07:00
cpu.c cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
entry-avr32b.S avr32: fix out-of-range jump in large kernels 2013-11-20 09:53:21 +01:00
head.S avr32: setup crt for early panic() 2013-11-20 09:53:21 +01:00
irq.c driver-core: remove sysdev.h usage. 2011-12-21 16:26:03 -08:00
kprobes.c [AVR32] Enable debugging only when needed 2008-01-25 08:31:39 +01:00
Makefile avr32: switch to generic kernel_thread()/kernel_execve() 2012-10-15 11:14:38 -04:00
module.c avr32: fix relocation check for signed 18-bit offset 2013-05-13 22:22:10 +02:00
nmi_debug.c [AVR32] NMI debugging 2008-01-25 08:31:43 +01:00
ocd.c libfs: allow error return from simple attributes 2008-02-08 09:22:34 -08:00
process.c avr32: cast syscall_return to silence compiler warning 2013-09-30 08:42:01 +02:00
ptrace.c ptrace: cleanup arch_ptrace() on avr32 2010-10-27 18:03:10 -07:00
setup.c avr32: normalize global variables exported by vmlinux.lds 2013-07-03 16:07:34 -07:00
signal.c avr32: switch to generic sigaltstack 2013-02-03 18:15:50 -05:00
stacktrace.c fix core/stacktrace changes on avr32, mips, sh 2008-07-18 14:42:35 +02:00
switch_to.S [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
syscall_table.S avr32: switch to generic sigaltstack 2013-02-03 18:15:50 -05:00
syscall-stubs.S avr32: switch to generic sigaltstack 2013-02-03 18:15:50 -05:00
time.c avr32: fix clockevents kernel warning 2013-09-30 08:42:01 +02:00
traps.c taint: add explicit flag to show whether lock dep is still OK. 2013-01-21 17:17:57 +10:30
vmlinux.lds.S avr32: normalize global variables exported by vmlinux.lds 2013-07-03 16:07:34 -07:00