Skip to content

Commit

Permalink
parisc: add CONFIG_MLONGCALLS option to enable linkage of huge vmlinu…
Browse files Browse the repository at this point in the history
…x executables

When building a 64bit kernel which includes all necessary drivers and
filesystems the vmlinux kernel often gets so huge, that the linker won't
be able to resolve the branch stubs. This patch overcomes this limit by
providing an option to compile the kernel with the -mlong-calls compiler
option.

Signed-off-by: Helge Deller <deller@gmx.de>
  • Loading branch information
Helge Deller committed Feb 20, 2013
1 parent 1c4c659 commit ec758f9
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
17 changes: 17 additions & 0 deletions arch/parisc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,23 @@ config PREFETCH
def_bool y
depends on PA8X00 || PA7200

config MLONGCALLS
bool "Enable the -mlong-calls compiler option for big kernels"
def_bool y if (!MODULES)
depends on PA8X00
help
If you configure the kernel to include many drivers built-in instead
as modules, the kernel executable may become too big, so that the
linker will not be able to resolve some long branches and fails to link
your vmlinux kernel. In that case enabling this option will help you
to overcome this limit by using the -mlong-calls compiler option.

Usually you want to say N here, unless you e.g. want to build
a kernel which includes all necessary drivers built-in and which can
be used for TFTP booting without the need to have an initrd ramdisk.

Enabling this option will probably slow down your kernel.

config 64BIT
bool "64-bit kernel"
depends on PA8X00
Expand Down
4 changes: 4 additions & 0 deletions arch/parisc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ ifndef CONFIG_FUNCTION_TRACER
cflags-y += -ffunction-sections
endif

# Use long jumps instead of long branches (needed if your linker fails to
# link a too big vmlinux executable)
cflags-$(CONFIG_MLONGCALLS) += -mlong-calls

# select which processor to optimise for
cflags-$(CONFIG_PA7100) += -march=1.1 -mschedule=7100
cflags-$(CONFIG_PA7200) += -march=1.1 -mschedule=7200
Expand Down

0 comments on commit ec758f9

Please sign in to comment.