linux/arch/avr32/kernel
Ben Nizette 8d29b7b9f8 avr32: Fix out-of-range rcalls in large kernels
Replace handcoded rcall instructions with the call pseudo-instruction.
For kernels too far over 1MB the rcall instruction can't reach and
linking will fail.  We already call the final linker with --relax which
converts call pseudo-instructions to the right things anyway.

This fixes

arch/avr32/kernel/built-in.o: In function `syscall_exit_work':
(.ex.text+0x198): relocation truncated to fit: R_AVR32_22H_PCREL against symbol `schedule' defined in .sched.text section in kernel/built-in.o
arch/avr32/kernel/built-in.o: In function `fault_exit_work':
(.ex.text+0x3b6): relocation truncated to fit: R_AVR32_22H_PCREL against symbol `schedule' defined in .sched.text section in kernel/built-in.o

But I'm still left with

arch/avr32/kernel/built-in.o:(.fixup+0x2): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+45a
arch/avr32/kernel/built-in.o:(.fixup+0x8): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+8ea
arch/avr32/kernel/built-in.o:(.fixup+0xe): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+abe
arch/avr32/kernel/built-in.o:(.fixup+0x14): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+ac8
arch/avr32/kernel/built-in.o:(.fixup+0x1a): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+ad2
arch/avr32/kernel/built-in.o:(.fixup+0x20): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+adc
arch/avr32/kernel/built-in.o:(.fixup+0x26): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+ae6
arch/avr32/kernel/built-in.o:(.fixup+0x2c): relocation truncated to fit: R_AVR32_22H_PCREL against `.text'+af0
arch/avr32/kernel/built-in.o:(.fixup+0x32): additional relocation overflows omitted from the output

These are caused by a similar problem with 'rjmp' instructions.
Unfortunately, there's no easy fix for these at the moment since we
don't have a arbitrary-range 'jmp' instruction similar to 'call'.

Signed-off-by: Ben Nizette <bn@niasdigital.com>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
2009-01-16 09:31:57 +01:00
..
.gitignore avr32: add .gitignore files 2008-09-19 18:21:29 +02:00
asm-offsets.c
avr32_ksyms.c avr32: add generic_find_next_le_bit bit function 2008-09-19 18:21:30 +02:00
cpu.c
entry-avr32b.S avr32: Fix out-of-range rcalls in large kernels 2009-01-16 09:31:57 +01:00
head.S
init_task.c take init_fs to saner place 2008-12-31 18:07:42 -05:00
irq.c
kprobes.c
Makefile
module.c
nmi_debug.c
ocd.c
process.c avr32: Introducing asm/syscalls.h 2008-12-17 13:32:38 +01:00
ptrace.c
setup.c avr32: added mem kernel command line option support 2008-09-22 09:51:01 +02:00
signal.c avr32: Introducing asm/syscalls.h 2008-12-17 13:32:38 +01:00
stacktrace.c
switch_to.S
sys_avr32.c avr32: Introducing asm/syscalls.h 2008-12-17 13:32:38 +01:00
syscall_table.S avr32: fix sys_sync_file_range() call convention 2008-09-19 18:21:31 +02:00
syscall-stubs.S avr32: Fix out-of-range rcalls in large kernels 2009-01-16 09:31:57 +01:00
time.c cpumask: convert struct clock_event_device to cpumask pointers. 2008-12-13 21:20:26 +10:30
traps.c remove linux/hardirq.h from asm-generic/local.h 2009-01-06 15:59:13 -08:00
vmlinux.lds.S