summaryrefslogtreecommitdiffstats
path: root/sys/boot/arm
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2012-05-27 16:27:04 +0000
committerkientzle <kientzle@FreeBSD.org>2012-05-27 16:27:04 +0000
commit290c33a04ac104b7628b6c70854bccc588532f90 (patch)
tree282e921587f692bbcde279d8fe336c1f3390b7be /sys/boot/arm
parent98add470fa559517dfb96ccb9a207a9478b244db (diff)
downloadFreeBSD-src-290c33a04ac104b7628b6c70854bccc588532f90.zip
FreeBSD-src-290c33a04ac104b7628b6c70854bccc588532f90.tar.gz
Allow the load address used by ARM ubldr to be set via Make argument.
In particular, this simplifies scripts that build system images.
Diffstat (limited to 'sys/boot/arm')
-rw-r--r--sys/boot/arm/uboot/Makefile19
-rw-r--r--sys/boot/arm/uboot/ldscript.arm2
2 files changed, 19 insertions, 2 deletions
diff --git a/sys/boot/arm/uboot/Makefile b/sys/boot/arm/uboot/Makefile
index b69d38c..b8a92d6 100644
--- a/sys/boot/arm/uboot/Makefile
+++ b/sys/boot/arm/uboot/Makefile
@@ -7,6 +7,9 @@ NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH}
BINDIR?= /boot
INSTALLFLAGS= -b
WARNS?= 1
+# Address at which ubldr will be loaded.
+# This varies for different boards and SOCs.
+UBLDR_LOADADDR?= 0x1000000
# Architecture-specific loader code
SRCS= start.S conf.c vers.c
@@ -85,7 +88,9 @@ CLEANFILES+= vers.c loader.help
CFLAGS+= -ffreestanding
-LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
+LDFLAGS= -nostdlib -static
+LDFLAGS+= -T ldscript.generated
+LDFLAGS+= -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
# Pull in common loader code
.PATH: ${.CURDIR}/../../uboot/common
@@ -110,6 +115,18 @@ loader.help: help.common help.uboot
cat ${.ALLSRC} | \
awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
+${PROG}: ldscript.generated ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
+
+ldscript.generated::
+ rm -f ldscript.generated.tmp
+ echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >ldscript.generated.tmp
+ if diff ldscript.generated ldscript.generated.tmp > /dev/null; then \
+ true; \
+ else \
+ rm -f ldscript.generated; \
+ mv ldscript.generated.tmp ldscript.generated; \
+ fi
+
.PATH: ${.CURDIR}/../../forth
FILES= loader.help
diff --git a/sys/boot/arm/uboot/ldscript.arm b/sys/boot/arm/uboot/ldscript.arm
index db8dc0c..b3be119 100644
--- a/sys/boot/arm/uboot/ldscript.arm
+++ b/sys/boot/arm/uboot/ldscript.arm
@@ -5,7 +5,7 @@ ENTRY(_start)
SECTIONS
{
/* Read-only sections, merged into text segment: */
- . = 0x1000000 + SIZEOF_HEADERS;
+ . = UBLDR_LOADADDR + SIZEOF_HEADERS;
.interp : { *(.interp) }
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
OpenPOWER on IntegriCloud