spl: fit: move fdt_record_loadable out of ARCH_FIXUP_FDT_MEMORY guard
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Fri, 2 Feb 2018 11:01:44 +0000 (12:01 +0100)
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Tue, 13 Feb 2018 11:52:57 +0000 (12:52 +0100)
The fdt_record_loadable()-function was wedged between other functions
that were guarded by ARCH_FIXUP_FDT_MEMORY.  This could lead to linker
errors on some configurations.

With this change, fdt_record_loadable() is moved out of the
ARCH_FIXUP_FDT_MEMORY guard (plus I tried to retain alphabetical
ordering for functions by placing it appropriately).

References: 9f45aeb ("spl: fit: implement fdt_record_loadable")
Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reported-by: Michal Simek <michal.simek@xilinx.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
common/fdt_support.c

index 724452d754523a39f4a57fce208a80ae49cea2bd..17623a1728f6982887148d82716d2cf4f8ab4258 100644 (file)
@@ -410,45 +410,6 @@ static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size,
        return p - (char *)buf;
 }
 
-int fdt_record_loadable(void *blob, u32 index, const char *name,
-                       uintptr_t load_addr, u32 size, uintptr_t entry_point,
-                       const char *type, const char *os)
-{
-       int err, node;
-
-       err = fdt_check_header(blob);
-       if (err < 0) {
-               printf("%s: %s\n", __func__, fdt_strerror(err));
-               return err;
-       }
-
-       /* find or create "/fit-images" node */
-       node = fdt_find_or_add_subnode(blob, 0, "fit-images");
-       if (node < 0)
-                       return node;
-
-       /* find or create "/fit-images/<name>" node */
-       node = fdt_find_or_add_subnode(blob, node, name);
-       if (node < 0)
-               return node;
-
-       /*
-        * We record these as 32bit entities, possibly truncating addresses.
-        * However, spl_fit.c is not 64bit safe either: i.e. we should not
-        * have an issue here.
-        */
-       fdt_setprop_u32(blob, node, "load-addr", load_addr);
-       if (entry_point != -1)
-               fdt_setprop_u32(blob, node, "entry-point", entry_point);
-       fdt_setprop_u32(blob, node, "size", size);
-       if (type)
-               fdt_setprop_string(blob, node, "type", type);
-       if (os)
-               fdt_setprop_string(blob, node, "os", os);
-
-       return node;
-}
-
 #ifdef CONFIG_NR_DRAM_BANKS
 #define MEMORY_BANKS_MAX CONFIG_NR_DRAM_BANKS
 #else
@@ -584,6 +545,45 @@ void fdt_fixup_ethernet(void *fdt)
        }
 }
 
+int fdt_record_loadable(void *blob, u32 index, const char *name,
+                       uintptr_t load_addr, u32 size, uintptr_t entry_point,
+                       const char *type, const char *os)
+{
+       int err, node;
+
+       err = fdt_check_header(blob);
+       if (err < 0) {
+               printf("%s: %s\n", __func__, fdt_strerror(err));
+               return err;
+       }
+
+       /* find or create "/fit-images" node */
+       node = fdt_find_or_add_subnode(blob, 0, "fit-images");
+       if (node < 0)
+               return node;
+
+       /* find or create "/fit-images/<name>" node */
+       node = fdt_find_or_add_subnode(blob, node, name);
+       if (node < 0)
+               return node;
+
+       /*
+        * We record these as 32bit entities, possibly truncating addresses.
+        * However, spl_fit.c is not 64bit safe either: i.e. we should not
+        * have an issue here.
+        */
+       fdt_setprop_u32(blob, node, "load-addr", load_addr);
+       if (entry_point != -1)
+               fdt_setprop_u32(blob, node, "entry-point", entry_point);
+       fdt_setprop_u32(blob, node, "size", size);
+       if (type)
+               fdt_setprop_string(blob, node, "type", type);
+       if (os)
+               fdt_setprop_string(blob, node, "os", os);
+
+       return node;
+}
+
 /* Resize the fdt to its actual size + a bit of padding */
 int fdt_shrink_to_minimum(void *blob, uint extrasize)
 {