summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2012-01-24 20:09:12 +0100
committerRichard Weinberger <richard@nod.at>2012-03-25 00:29:57 +0100
commit12783aa077f81e0dcf1b2f97ed24440048e9f09d (patch)
tree648810a36028675185f024ff791b7c9f7b95d815
parent9310da0bbb826f8b6ed49a5f93092f8452820da0 (diff)
downloadlinux-12783aa077f81e0dcf1b2f97ed24440048e9f09d.tar.gz
linux-12783aa077f81e0dcf1b2f97ed24440048e9f09d.tar.bz2
linux-12783aa077f81e0dcf1b2f97ed24440048e9f09d.zip
um: Switch to large mcmodel on x86_64
x86_64 UML is unable to load modules if more than 504MiB of memory are used. This happens because on x86_64 the UML process has a quite high start address (typically around 0x6000000). If UML's memory is larger than 504MiB VMALLOC_START happens to be after 0x8000000. This is no problem unless one loads a module which was built with R_X86_64_32S relocations. Symbols with a location > 0x8000000 cannot be used with R_X86_64_32S To deal with this x86_64 UML has to be compiled with -mcmodel=large such that no R_X86_64_32S relocations are used. Signed-off-by: Richard Weinberger <richard@nod.at> Reported-by: 전하늘 <allskyee@gmail.com>
-rw-r--r--arch/um/Makefile1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/um/Makefile b/arch/um/Makefile
index 4c993c89d0f0..55c0661e2b5d 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -28,6 +28,7 @@ ifeq ($(SUBARCH),i386)
endif
ifeq ($(SUBARCH),x86_64)
HEADER_ARCH := x86
+ KBUILD_CFLAGS += -mcmodel=large
endif
HOST_DIR := arch/$(HEADER_ARCH)