summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--linker/Android.mk7
-rw-r--r--linker/linker.h4
2 files changed, 10 insertions, 1 deletions
diff --git a/linker/Android.mk b/linker/Android.mk
index 4647c8f5e..0cc799228 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -14,12 +14,17 @@ ifeq ($(TARGET_ARCH),sh)
# SH-4A series virtual address range from 0x00000000 to 0x7FFFFFFF.
LINKER_TEXT_BASE := 0x70000100
else
+ ifneq ($(TARGET_USES_2G_VM_SPLIT),true)
# This is aligned to 4K page boundary so that both GNU ld and gold work. Gold
# actually produces a correct binary with starting address 0xB0000100 but the
# extra objcopy step to rename symbols causes the resulting binary to be misaligned
# and unloadable. Increasing the alignment adds an extra 3840 bytes in padding
# but switching to gold saves about 1M of space.
-LINKER_TEXT_BASE := 0xB0001000
+ LINKER_TEXT_BASE := 0xB0001000
+ else
+ LINKER_TEXT_BASE := 0x70001000
+ LOCAL_CFLAGS += -DVM_SPLIT_2G
+ endif
endif
# The maximum size set aside for the linker, from
diff --git a/linker/linker.h b/linker/linker.h
index 8cd56b00a..2bebbe291 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -159,6 +159,10 @@ extern soinfo libdl_info;
#define LIBBASE 0x60000000
#define LIBLAST 0x70000000
#define LIBINC 0x00100000
+#elif defined(VM_SPLIT_2G)
+#define LIBBASE 0x40000000
+#define LIBLAST 0x50000000
+#define LIBINC 0x00100000
#else
#define LIBBASE 0x80000000
#define LIBLAST 0x90000000