Update sysutils/u-boot-rpi to 2015.10

Submitted by:	ian
Approved by:	bdrewery (mentor)
This commit is contained in:
Brad Davis 2015-10-23 19:12:27 +00:00
parent 6f1821384b
commit b16e31e0a9
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=400051
10 changed files with 103 additions and 112 deletions

View file

@ -1,10 +1,10 @@
# $FreeBSD$
PORTNAME= u-boot
PORTVERSION= 2013.01
PORTREVISION= 2
PORTVERSION= 2015.10
CATEGORIES= sysutils
MASTER_SITES= LOCAL/ian/:bootfiles
MASTER_SITES= ftp://ftp.denx.de/pub/u-boot/ \
LOCAL/ian/:bootfiles
PKGNAMESUFFIX= -rpi
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
rpi-boot-files-2014.10_2.tar.bz2:bootfiles
@ -14,20 +14,12 @@ COMMENT= Cross-build U-Boot loader for Raspberry Pi
LICENSE= GPLv2
BUILD_DEPENDS= ${CROSS_GCC}:${PORTSDIR}/devel/arm-none-eabi-gcc492 \
gsed:${PORTSDIR}/textproc/gsed
CROSS_GCC= arm-none-eabi-gcc-4.9.2
USE_GITHUB= yes
GH_ACCOUNT= gonzoua
GH_PROJECT= u-boot-pi
GH_TAGNAME= 6709570
BUILD_DEPENDS= arm-none-eabi-gcc:${PORTSDIR}/devel/arm-none-eabi-gcc
NO_ARCH= yes
USES= gmake
SSP_UNSAFE= yes # cross-build static linking dies with -fstack-protector
USES= gmake tar:bzip2
SSP_UNSAFE= yes # cross-LD does not support -fstack-protector
WRK_BOOTFILES= ${WRKDIR}/rpi-boot-files
@ -43,13 +35,10 @@ PLIST_FILES= ${U_BOOT_DIR}/u-boot.img \
${U_BOOT_DIR}/start_cd.elf
MAKE_ARGS+= ARCH=arm \
CROSS_COMPILE=arm-none-eabi- \
HOSTCC=cc \
CC=${CROSS_GCC} \
SED=gsed
CROSS_COMPILE=arm-none-eabi-
do-configure:
(cd ${WRKSRC}; ${GMAKE} ${MAKE_ARGS} rpi_b_config)
(cd ${WRKSRC}; ${GMAKE} rpi_defconfig)
# The output of the u-boot build process is u-boot.bin. We have to put a
# standard (for the RPi) image header on the front of it, and the resulting

View file

@ -1,4 +1,4 @@
SHA256 (gonzoua-u-boot-pi-2013.01-6709570_GH0.tar.gz) = e6c196eda2de36dce313c876f41ffa0f8353273e89c2e33382f303019fd73383
SIZE (gonzoua-u-boot-pi-2013.01-6709570_GH0.tar.gz) = 13850358
SHA256 (u-boot-2015.10.tar.bz2) = bdc68d5f9455ad933b059c735d983f2c8b6b552dafb062e5ff1444f623021955
SIZE (u-boot-2015.10.tar.bz2) = 10416503
SHA256 (rpi-boot-files-2014.10_2.tar.bz2) = bcaa493d3585151fde755245bee44b7d30d0e9c7ec9cc7f4dccdad57caf18cdc
SIZE (rpi-boot-files-2014.10_2.tar.bz2) = 1893216

View file

@ -1,6 +1,6 @@
--- api/api.c.orig 2012-11-28 01:28:06 UTC
--- api/api.c.orig 2015-10-19 23:59:38 UTC
+++ api/api.c
@@ -512,45 +512,47 @@ static int API_env_set(va_list ap)
@@ -495,45 +495,47 @@ static int API_env_set(va_list ap)
*/
static int API_env_enum(va_list ap)
{
@ -56,7 +56,7 @@
+ if ((s = strchr(buf, '=')) != NULL)
+ *s = 0;
+ search.key = buf;
+ if ((i = hsearch_r(search, FIND, &match, &env_htab)) == 0) {
+ if ((i = hsearch_r(search, FIND, &match, &env_htab, 0)) == 0) {
+ i = API_EINVAL;
+ goto done;
}

View file

@ -0,0 +1,17 @@
--- arch/arm/cpu/arm11/cpu.c.orig 2015-10-19 23:59:38 UTC
+++ arch/arm/cpu/arm11/cpu.c
@@ -52,6 +52,14 @@ static void cache_flush(void)
asm volatile("mcr p15, 0, %0, c7, c10, 4" : : "r" (i));
}
+void invalidate_icache_all(void)
+{
+ /* invalidate entire icache and btb */
+ asm volatile("mcr p15, 0, %0, c7, c5, 0" : : "r" (0));
+ /* mem barrier to sync things */
+ asm volatile("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));
+}
+
#ifndef CONFIG_SYS_DCACHE_OFF
#ifndef CONFIG_SYS_CACHELINE_SIZE

View file

@ -0,0 +1,18 @@
--- common/cmd_boot.c.orig 2015-10-19 23:59:38 UTC
+++ common/cmd_boot.c
@@ -19,6 +19,15 @@ __attribute__((weak))
unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc,
char * const argv[])
{
+ /*
+ * FreeBSD wants the caches enabled while ubldr runs, and as of r276397
+ * the kernel can tolerate being entered with internal (but not external
+ * PL310) caches enabled on armv6/7 systems. So don't disable caches
+ * here, just invalidate the icache (because we DMA'd new data into that
+ * memory recently) and launch the program directly.
+ */
+ flush_dcache_all();
+ invalidate_icache_all();
return entry (argc, argv);
}

View file

@ -0,0 +1,32 @@
--- common/cmd_elf.c.orig 2015-10-19 23:59:38 UTC
+++ common/cmd_elf.c
@@ -35,22 +35,15 @@ static unsigned long do_bootelf_exec(ulo
unsigned long ret;
/*
- * QNX images require the data cache is disabled.
- * Data cache is already flushed, so just turn it off.
- */
- int dcache = dcache_status();
- if (dcache)
- dcache_disable();
-
- /*
- * pass address parameter as argv[0] (aka command name),
- * and all remaining args
+ * FreeBSD wants the caches enabled while ubldr runs, and as of r276397
+ * the kernel can tolerate being entered with internal (but not external
+ * PL310) caches enabled on armv6/7 systems. So don't disable caches
+ * here, just invalidate the icache (because we DMA'd new data into that
+ * memory recently) and launch the program directly.
*/
+ flush_dcache_all();
+ invalidate_icache_all();
ret = entry(argc, argv);
-
- if (dcache)
- dcache_enable();
-
return ret;
}

View file

@ -1,46 +0,0 @@
--- common/cmd_nvedit.c.orig 2012-11-28 01:28:06 UTC
+++ common/cmd_nvedit.c
@@ -966,6 +966,23 @@ sep_err:
}
#endif
+#if defined(CONFIG_CMD_ENV_EXISTS)
+static int do_env_exists(cmd_tbl_t *cmdtp, int flag, int argc,
+ char * const argv[])
+{
+ ENTRY e, *ep;
+
+ if (argc < 2)
+ return CMD_RET_USAGE;
+
+ e.key = argv[1];
+ e.data = NULL;
+ hsearch_r(e, FIND, &ep, &env_htab);
+
+ return (ep == NULL) ? 1 : 0;
+}
+#endif
+
/*
* New command line interface: "env" command with subcommands
*/
@@ -995,6 +1012,9 @@ static cmd_tbl_t cmd_env_sub[] = {
U_BOOT_CMD_MKENT(save, 1, 0, do_env_save, "", ""),
#endif
U_BOOT_CMD_MKENT(set, CONFIG_SYS_MAXARGS, 0, do_env_set, "", ""),
+#if defined(CONFIG_CMD_ENV_EXISTS)
+ U_BOOT_CMD_MKENT(exists, 2, 0, do_env_exists, "", ""),
+#endif
};
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
@@ -1033,6 +1053,9 @@ static char env_help_text[] =
#if defined(CONFIG_CMD_EDITENV)
"env edit name - edit environment variable\n"
#endif
+#if defined(CONFIG_CMD_ENV_EXISTS)
+ "env exists name - tests for existence of variable\n"
+#endif
#if defined(CONFIG_CMD_EXPORTENV)
"env export [-t | -b | -c] [-s size] addr [var ...] - export environment\n"
#endif

View file

@ -1,8 +1,8 @@
--- common/cmd_test.c.orig 2012-11-28 01:28:06 UTC
--- common/cmd_test.c.orig 2015-10-19 23:59:38 UTC
+++ common/cmd_test.c
@@ -29,9 +29,14 @@ static int do_test(cmd_tbl_t *cmdtp, int
@@ -56,9 +56,14 @@ static int do_test(cmd_tbl_t *cmdtp, int
char * const *ap;
int left, adv, expr, last_expr, neg, last_cmp;
int i, op, left, adv, expr, last_expr, last_unop, last_binop;
- /* args? */
- if (argc < 3)

View file

@ -1,11 +0,0 @@
--- config.mk.orig 2012-11-28 01:28:06 UTC
+++ config.mk
@@ -90,7 +90,7 @@ HOSTCC = $(call os_x_before, 10, 5, "c
HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
else
-HOSTCC = gcc
+HOSTCC ?= gcc
endif
ifeq ($(HOSTOS),cygwin)

View file

@ -1,51 +1,37 @@
--- include/configs/rpi_b.h.orig 2012-11-28 01:28:06 UTC
+++ include/configs/rpi_b.h
@@ -183,4 +183,64 @@
#define CONFIG_INITRD_TAG
#define CONFIG_CMD_BMP
--- include/configs/rpi-common.h.orig 2015-10-19 23:59:38 UTC
+++ include/configs/rpi-common.h
@@ -183,4 +183,56 @@
#define CONFIG_BOOTDELAY 2
+/*****************************************************************************
+ * FreeBSD customizations from here down.
+ ****************************************************************************/
+
+//#define CONFIG_API
+//#define CONFIG_CMD_ELF
+#define CONFIG_CMD_ENV_EXISTS
+#define CONFIG_API
+#define CONFIG_CMD_ELF
+#define CONFIG_EFI_PARTITION
+#define CONFIG_PREBOOT
+
+/* Save the env to the fat partition. */
+#undef CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_IS_IN_FAT
+#define CONFIG_FAT_WRITE
+#define FAT_ENV_INTERFACE "mmc"
+#define FAT_ENV_DEVICE 0
+#define FAT_ENV_PART 1
+#define FAT_ENV_FILE "u-boot.env"
+#define CONFIG_CMD_SAVEENV
+#define CONFIG_SYS_MMC_MAX_DEVICE 1
+
+/* Create a small(ish) boot environment for FreeBSD. */
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "loadaddr=0x02000000\0" \
+ "stdin=serial\0" \
+ ENV_MEM_LAYOUT_SETTINGS \
+ "stdin=serial,lcd\0" \
+ "stderr=serial,lcd\0" \
+ "stdout=serial,lcd\0" \
+ \
+ "Fatboot=" \
+ "env exists bootfile || bootfile=ubldr.bin; " \
+ "env exists loaderdev || env set loaderdev ${fatdev}; " \
+ "env exists UserFatboot && run UserFatboot; " \
+ "test ${loaderdev} = net && env exists SetupNetconfig && run SetupNetconfig; " \
+ "echo Booting from: ${fatdev} ${bootfile}; " \
+ "fatload ${fatdev} ${loadaddr} ${bootfile} && bootelf; " \
+ "\0" \
+ "Netboot=" \
+ "env exists ethact || usb start; " \
+ "env exists loaderdev || env set loaderdev net; " \
+ "env exists UserNetboot && run UserNetboot; " \
+ "dhcp ${loadaddr} ${bootfile} && bootelf; " \
+ "fatload ${fatdev} ${loadaddr} ${bootfile} && bootelf || go ${loadaddr}; " \
+ "\0" \
+ "Preboot=" \
+ "fdt addr 0x100; " \
+ "env exists bootfile || bootfile=ubldr; " \
+ "env exists uenv_file || uenv_file=uEnv.txt; " \
+ "env exists SetupFatdev && run SetupFatdev; " \
+ "env exists SetupUenv && run SetupUenv; " \
@ -54,6 +40,10 @@
+ "SetupFatdev=" \
+ "env exists fatdev || fatdev='mmc 0'; " \
+ "\0" \
+ "SetupNetconfig=" \
+ "env exists ethact || usb start; " \
+ "env exists UserNetconfig && run UserNetconfig; " \
+ "\0" \
+ "SetupUenv=" \
+ "fatload ${fatdev} ${loadaddr} ${uenv_file} && " \
+ "env import -t ${loadaddr} ${filesize}; " \
@ -63,5 +53,7 @@
+#define CONFIG_BOOTCOMMAND "run Fatboot"
+#undef CONFIG_PREBOOT
+#define CONFIG_PREBOOT "run Preboot"
+
+#define CONFIG_CMD_CACHE
+
#endif