aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/libpayload/Kconfig29
-rw-r--r--payloads/libpayload/arch/arm/libpayload.ldscript11
-rw-r--r--payloads/libpayload/arch/arm64/libpayload.ldscript13
-rw-r--r--payloads/libpayload/arch/mips/libpayload.ldscript10
-rw-r--r--payloads/libpayload/arch/x86/libpayload.ldscript11
-rwxr-xr-xpayloads/libpayload/bin/lpgcc4
6 files changed, 46 insertions, 32 deletions
diff --git a/payloads/libpayload/Kconfig b/payloads/libpayload/Kconfig
index 3c579e6af8..be68859a32 100644
--- a/payloads/libpayload/Kconfig
+++ b/payloads/libpayload/Kconfig
@@ -119,6 +119,35 @@ config MULTIBOOT
depends on ARCH_X86
default y
+config HEAP_SIZE
+ int "Heap size"
+ default 131072
+ help
+ This is the heap size (malloc'able size) available
+ to the payload.
+
+ If unsure, set to 131072 (128K)
+
+config STACK_SIZE
+ int "Stack size"
+ default 16384
+ help
+ This is the stack size available to the payload.
+
+ If unsure, set to 16384 (16K)
+
+config BASE_ADDRESS
+ hex "Base address"
+ default 0x04000000 if ARCH_ARM
+ default 0x80100000 if ARCH_ARM64
+ default 0x00000000 if ARCH_MIPS
+ default 0x00100000 if ARCH_X86
+ help
+ This is the base address for the payload.
+
+ If unsure, set to 0x00100000 on x86, 0x00000000 on MIPS,
+ 0x04000000 on ARM or 0x80100000 on ARM64.
+
endmenu
menu "Standard Libraries"
diff --git a/payloads/libpayload/arch/arm/libpayload.ldscript b/payloads/libpayload/arch/arm/libpayload.ldscript
index 5f65bd7f1a..492bd0c373 100644
--- a/payloads/libpayload/arch/arm/libpayload.ldscript
+++ b/payloads/libpayload/arch/arm/libpayload.ldscript
@@ -28,19 +28,14 @@
* SUCH DAMAGE.
*/
-BASE_ADDRESS = 0x4000000;
-
OUTPUT_FORMAT("elf32-littlearm","elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_entry)
-HEAP_SIZE = 2*64*1024;
-STACK_SIZE = 16384;
-
SECTIONS
{
- . = BASE_ADDRESS;
+ . = CONFIG_LP_BASE_ADDRESS;
. = ALIGN(16);
_start = .;
@@ -74,12 +69,12 @@ SECTIONS
. = ALIGN(16);
_heap = .;
- . += HEAP_SIZE;
+ . += CONFIG_LP_HEAP_SIZE;
. = ALIGN(16);
_eheap = .;
_estack = .;
- . += STACK_SIZE;
+ . += CONFIG_LP_STACK_SIZE;
. = ALIGN(16);
_stack = .;
}
diff --git a/payloads/libpayload/arch/arm64/libpayload.ldscript b/payloads/libpayload/arch/arm64/libpayload.ldscript
index 50c82dce9b..5c807cef17 100644
--- a/payloads/libpayload/arch/arm64/libpayload.ldscript
+++ b/payloads/libpayload/arch/arm64/libpayload.ldscript
@@ -28,19 +28,14 @@
* SUCH DAMAGE.
*/
-BASE_ADDRESS = 0x80100000;
-
OUTPUT_FORMAT("elf64-littleaarch64","elf64-littleaarch64", "elf64-littleaarch64")
OUTPUT_ARCH(arm64)
ENTRY(_entry)
-HEAP_SIZE = 2*64*1024;
-STACK_SIZE = 16384;
-
SECTIONS
{
- . = BASE_ADDRESS;
+ . = CONFIG_LP_BASE_ADDRESS;
. = ALIGN(16);
_start = .;
@@ -74,12 +69,12 @@ SECTIONS
. = ALIGN(16);
_heap = .;
- . += HEAP_SIZE;
+ . += CONFIG_LP_HEAP_SIZE;
. = ALIGN(16);
_eheap = .;
_estack = .;
- . += STACK_SIZE;
+ . += CONFIG_LP_STACK_SIZE;
. = ALIGN(16);
_stack = .;
@@ -88,7 +83,7 @@ SECTIONS
*/
_exc_estack = .;
- . += STACK_SIZE;
+ . += CONFIG_LP_STACK_SIZE;
. = ALIGN(16);
_exc_stack = .;
}
diff --git a/payloads/libpayload/arch/mips/libpayload.ldscript b/payloads/libpayload/arch/mips/libpayload.ldscript
index 28a741293b..351c2254fb 100644
--- a/payloads/libpayload/arch/mips/libpayload.ldscript
+++ b/payloads/libpayload/arch/mips/libpayload.ldscript
@@ -20,15 +20,11 @@
OUTPUT_ARCH(mips)
-BASE_ADDRESS = 0x00000000;
ENTRY(_entry)
-HEAP_SIZE = 2*64*1024;
-STACK_SIZE = 16*1024;
-
SECTIONS
{
- . = BASE_ADDRESS;
+ . = CONFIG_LP_BASE_ADDRESS;
. = ALIGN(16);
_start = .;
@@ -68,12 +64,12 @@ SECTIONS
. = ALIGN(16);
_heap = .;
- . += HEAP_SIZE;
+ . += CONFIG_LP_HEAP_SIZE;
. = ALIGN(16);
_eheap = .;
_estack = .;
- . += STACK_SIZE;
+ . += CONFIG_LP_STACK_SIZE;
. = ALIGN(16);
_stack = .;
}
diff --git a/payloads/libpayload/arch/x86/libpayload.ldscript b/payloads/libpayload/arch/x86/libpayload.ldscript
index 3e7d4cc318..bcb2165a2f 100644
--- a/payloads/libpayload/arch/x86/libpayload.ldscript
+++ b/payloads/libpayload/arch/x86/libpayload.ldscript
@@ -27,19 +27,14 @@
* SUCH DAMAGE.
*/
-BASE_ADDRESS = 0x100000;
-
OUTPUT_FORMAT(elf32-i386)
OUTPUT_ARCH(i386)
ENTRY(_entry)
-HEAP_SIZE = 2*64*1024;
-STACK_SIZE = 16384;
-
SECTIONS
{
- . = BASE_ADDRESS;
+ . = CONFIG_LP_BASE_ADDRESS;
. = ALIGN(16);
_start = .;
@@ -73,12 +68,12 @@ SECTIONS
. = ALIGN(16);
_heap = .;
- . += HEAP_SIZE;
+ . += CONFIG_LP_HEAP_SIZE;
. = ALIGN(16);
_eheap = .;
_estack = .;
- . += STACK_SIZE;
+ . += CONFIG_LP_STACK_SIZE;
. = ALIGN(16);
_stack = .;
}
diff --git a/payloads/libpayload/bin/lpgcc b/payloads/libpayload/bin/lpgcc
index 04c7e584d0..b3ef342ff2 100755
--- a/payloads/libpayload/bin/lpgcc
+++ b/payloads/libpayload/bin/lpgcc
@@ -187,6 +187,10 @@ else
_LDFLAGS="$_LDFLAGS -Wl,--fix-cortex-a53-843419"
fi
+ _LDFLAGS="$_LDFLAGS -Wl,--defsym=CONFIG_LP_BASE_ADDRESS=$CONFIG_LP_BASE_ADDRESS"
+ _LDFLAGS="$_LDFLAGS -Wl,--defsym=CONFIG_LP_HEAP_SIZE=$CONFIG_LP_HEAP_SIZE"
+ _LDFLAGS="$_LDFLAGS -Wl,--defsym=CONFIG_LP_STACK_SIZE=$CONFIG_LP_STACK_SIZE"
+
if [ $DEBUGME -eq 1 ]; then
echo "$DEFAULT_CC $_LDFLAGS $HEAD_O $CMDLINE $_CFLAGS -lpayload $_LIBGCC"
fi