powerpc: Build kernel with -mcmodel=medium
authorAnton Blanchard <anton@samba.org>
Mon, 26 Nov 2012 17:41:08 +0000 (17:41 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 10 Jan 2013 06:00:31 +0000 (17:00 +1100)
commit1fbe9cf2598dae3bd464d860bd89c67b1ff8682b
treec07f1fe789777669466bc3077a5f0afa70cf83b6
parent5827d4165ac608d7c26fa68701391e80824ee5c9
powerpc: Build kernel with -mcmodel=medium

Finally remove the two level TOC and build with -mcmodel=medium.

Unfortunately we can't build modules with -mcmodel=medium due to
the tricks the kernel module loader plays with percpu data:

# -mcmodel=medium breaks modules because it uses 32bit offsets from
# the TOC pointer to create pointers where possible. Pointers into the
# percpu data area are created by this method.
#
# The kernel module loader relocates the percpu data section from the
# original location (starting with 0xd...) to somewhere in the base
# kernel percpu data space (starting with 0xc...). We need a full
# 64bit relocation for this to work, hence -mcmodel=large.

On older kernels we fall back to the two level TOC (-mminimal-toc)

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/Makefile
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/head_64.S
arch/powerpc/kernel/module_64.c
arch/powerpc/lib/Makefile
arch/powerpc/mm/Makefile
arch/powerpc/oprofile/Makefile
arch/powerpc/platforms/pseries/Makefile
arch/powerpc/platforms/wsp/Makefile
arch/powerpc/sysdev/Makefile
arch/powerpc/xmon/Makefile