Move board_init_f_mem() into a common location
authorSimon Glass <sjg@chromium.org>
Mon, 19 Oct 2015 12:49:56 +0000 (06:49 -0600)
committerTom Rini <trini@konsulko.com>
Sat, 24 Oct 2015 17:50:34 +0000 (13:50 -0400)
This function will be used by both SPL and U-Boot proper. So move it into
a common place. Also change the #ifdef so that the early malloc() area is
not set up in SPL if CONFIG_SYS_SPL_MALLOC_START is defined. In that case
it would never actually be used, and just chews up stack space.

Signed-off-by: Simon Glass <sjg@chromium.org>
common/Makefile
common/board_f.c
common/init/Makefile [new file with mode: 0644]
common/init/board_init.c [new file with mode: 0644]
scripts/Makefile.spl

index 8c7775a783af6e804cdce8874b1c06babadcacf9..d986cde7b93773376b63881118358b88407524c3 100644 (file)
@@ -7,6 +7,7 @@
 
 # core
 ifndef CONFIG_SPL_BUILD
+obj-y += init/
 obj-y += main.o
 obj-y += exports.o
 obj-y += hash.o
index 613332e1dc3f6c49058aaa7610dc7001d9b7ce85..62570ab6d8dbab6ce60b59424a03eae7ac18627f 100644 (file)
@@ -1030,32 +1030,3 @@ void board_init_f_r(void)
        hang();
 }
 #endif /* CONFIG_X86 */
-
-/* Unfortunately x86 can't compile this code as gd cannot be assigned */
-#ifndef CONFIG_X86
-__weak void arch_setup_gd(struct global_data *gd_ptr)
-{
-       gd = gd_ptr;
-}
-#endif /* !CONFIG_X86 */
-
-ulong board_init_f_mem(ulong top)
-{
-       struct global_data *gd_ptr;
-
-       /* Leave space for the stack we are running with now */
-       top -= 0x40;
-
-       top -= sizeof(struct global_data);
-       top = ALIGN(top, 16);
-       gd_ptr = (struct global_data *)top;
-       memset(gd_ptr, '\0', sizeof(*gd));
-       arch_setup_gd(gd_ptr);
-
-#ifdef CONFIG_SYS_MALLOC_F_LEN
-       top -= CONFIG_SYS_MALLOC_F_LEN;
-       gd->malloc_base = top;
-#endif
-
-       return top;
-}
diff --git a/common/init/Makefile b/common/init/Makefile
new file mode 100644 (file)
index 0000000..4902635
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2015 Google, Inc
+#
+# SPDX-License-Identifier:      GPL-2.0+
+#
+
+obj-y += board_init.o
diff --git a/common/init/board_init.c b/common/init/board_init.c
new file mode 100644 (file)
index 0000000..e7ebca7
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Code shared between SPL and U-Boot proper
+ *
+ * Copyright (c) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Unfortunately x86 can't compile this code as gd cannot be assigned */
+#ifndef CONFIG_X86
+__weak void arch_setup_gd(struct global_data *gd_ptr)
+{
+       gd = gd_ptr;
+}
+#endif /* !CONFIG_X86 */
+
+ulong board_init_f_mem(ulong top)
+{
+       struct global_data *gd_ptr;
+
+       /* Leave space for the stack we are running with now */
+       top -= 0x40;
+
+       top -= sizeof(struct global_data);
+       top = ALIGN(top, 16);
+       gd_ptr = (struct global_data *)top;
+       memset(gd_ptr, '\0', sizeof(*gd));
+       arch_setup_gd(gd_ptr);
+
+#if defined(CONFIG_SYS_MALLOC_F)
+       top -= CONFIG_SYS_MALLOC_F_LEN;
+       gd->malloc_base = top;
+#endif
+
+       return top;
+}
index 58442f150d8cca3a864b68cd10c9c3758bfd2ef5..2df93c8a095d7291bd4ee7ca91a5b96448ac830a 100644 (file)
@@ -52,6 +52,7 @@ libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
 
 libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/
+libs-y += common/init/
 libs-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/
 libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/
 libs-y += drivers/