]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spl: fit: Also record architecture in /fit-images
authorMichal Simek <michal.simek@xilinx.com>
Thu, 27 May 2021 09:40:09 +0000 (11:40 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 23 Jun 2021 07:48:36 +0000 (09:48 +0200)
On ARM64 secure OS can run as 64bit or 32bit that's why it is necessary to
record information about architecture that other code can read it and
properly pass it to TF-A and start in 64bit or 32bit mode.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/fdt_support.c
common/spl/spl_fit.c
include/fdt_support.h

index a9a32df1e78f62021e7c0732a9e43b74c87c21d8..240f1e57d1355f1820fce202c6181dc280915b7f 100644 (file)
@@ -594,7 +594,7 @@ 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)
+                       const char *type, const char *os, const char *arch)
 {
        int err, node;
 
@@ -622,6 +622,8 @@ int fdt_record_loadable(void *blob, u32 index, const char *name,
                fdt_setprop_string(blob, node, "type", type);
        if (os)
                fdt_setprop_string(blob, node, "os", os);
+       if (arch)
+               fdt_setprop_string(blob, node, "arch", arch);
 
        return node;
 }
index caddf511967927a54fdaf1048545db46577a9e2d..f6c475315ed6019b4a260287bbef5c0363704745 100644 (file)
@@ -480,7 +480,8 @@ static int spl_fit_record_loadable(const struct spl_fit_info *ctx, int index,
        ret = fdt_record_loadable(blob, index, name, image->load_addr,
                                  image->size, image->entry_point,
                                  fdt_getprop(ctx->fit, node, "type", NULL),
-                                 fdt_getprop(ctx->fit, node, "os", NULL));
+                                 fdt_getprop(ctx->fit, node, "os", NULL),
+                                 fdt_getprop(ctx->fit, node, "arch", NULL));
        return ret;
 }
 
index 1e4dbc0a8f655d2b82bbc133b97325083dea727d..f6f46bb8e9ce3fca01097c312a8997d81cda489e 100644 (file)
@@ -160,11 +160,12 @@ static inline void fdt_fixup_crypto_node(void *blob, int sec_rev) {}
  * @param entry_point   entry point (if specified, otherwise pass -1)
  * @param type          type (if specified, otherwise pass NULL)
  * @param os            os-type (if specified, otherwise pass NULL)
+ * @param arch         architecture (if specified, otherwise pass NULL)
  * @return 0 if ok, or -1 or -FDT_ERR_... on error
  */
 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);
+                       const char *type, const char *os, const char *arch);
 
 #ifdef CONFIG_PCI
 #include <pci.h>