[PATCH] ARM: MMUless Core: Fix insmod error - module relocation out of range

Catalin Marinas catalin.marinas at arm.com
Wed Oct 3 05:25:09 EDT 2012

On 3 October 2012 04:43, Pratyush Anand <pratyush.anand at st.com> wrote:
> From: Neha MAKHIJA <neha.makhija-ext at st.com>
> ARM supports 32Mb jump. Hence branch instruction has a limited range.
> For MMU systems, the module area is located just before the kernel memory
> because this allows function calls to be linked directly without any indirect
> branches.
> In case of MMU-less system, Module area is given whole of the DDR address
> space.  Since, module_alloc() calls vmalloc(), the module area goes outside the
> allowed jump range. Due to this insmod will not be able to load the modules
> giving out of range relocation errors.
> Solution - Add the mlong-calls flags while compiling the modules. This tells
> the compiler to perform function calls by first loading the address of the
> function and then performing a subroutine function call on this register.

Do we need the module loader to handle additional relocations or they
are all already handled?


More information about the linux-arm-kernel mailing list