libpayload: Move base address, stack and heap size to Kconfig

This will allow more payloads to use the standard linker script
instead of implementing their own.

Change-Id: Ie60120769829f427ceb722109d85859b61dbde31
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-on: https://review.coreboot.org/14074
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Stefan Reinauer 2016-03-12 16:18:17 -08:00
parent 347a7529aa
commit 821844534c
6 changed files with 46 additions and 32 deletions

View File

@ -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"

View File

@ -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 = .;
}

View File

@ -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 = .;
}

View File

@ -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 = .;
}

View File

@ -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 = .;
}

View File

@ -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