Pointers in ESBC header made 32 bit
authorAneesh Bansal <aneesh.bansal@freescale.com>
Thu, 17 Sep 2015 10:46:34 +0000 (16:16 +0530)
committerYork Sun <yorksun@freescale.com>
Thu, 29 Oct 2015 17:33:57 +0000 (10:33 -0700)
For the Chain of Trust, the esbc_validate command supports
32 bit fields for location of the image. In the header structure
definition, these were declared as pointers which made them
64 bit on a 64 bit core.

Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
board/freescale/common/fsl_validate.c
include/fsl_validate.h

index 5283648a4d090df468b3487603ce542a109aa396..465676f07a1a3736ba9cc0797f368687afcdab79 100644 (file)
@@ -63,12 +63,12 @@ static u32 check_ie(struct fsl_secboot_img_priv *img)
  * address
  */
 #if defined(CONFIG_MPC85xx)
-int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
+int get_csf_base_addr(u32 *csf_addr, u32 *flash_base_addr)
 {
        struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
        u32 csf_hdr_addr = in_be32(&gur->scratchrw[0]);
        u32 csf_flash_offset = csf_hdr_addr & ~(CONFIG_SYS_PBI_FLASH_BASE);
-       ulong flash_addr, addr;
+       u32 flash_addr, addr;
        int found = 0;
        int i = 0;
 
@@ -76,7 +76,7 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
                flash_addr = flash_info[i].start[0];
                addr = flash_info[i].start[0] + csf_flash_offset;
                if (memcmp((u8 *)addr, barker_code, ESBC_BARKER_LEN) == 0) {
-                       debug("Barker found on addr %lx\n", addr);
+                       debug("Barker found on addr %x\n", addr);
                        found = 1;
                        break;
                }
@@ -94,7 +94,7 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
 /* For platforms like LS1020, correct flash address is present in
  * the header. So the function reqturns flash base address as 0
  */
-int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
+int get_csf_base_addr(u32 *csf_addr, u32 *flash_base_addr)
 {
        struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
        u32 csf_hdr_addr = in_be32(&gur->scratchrw[0]);
@@ -108,11 +108,11 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
 }
 #endif
 
-static int get_ie_info_addr(ulong *ie_addr)
+static int get_ie_info_addr(u32 *ie_addr)
 {
        struct fsl_secboot_img_hdr *hdr;
        struct fsl_secboot_sg_table *sg_tbl;
-       ulong flash_base_addr, csf_addr;
+       u32 flash_base_addr, csf_addr;
 
        if (get_csf_base_addr(&csf_addr, &flash_base_addr))
                return -1;
@@ -127,11 +127,11 @@ static int get_ie_info_addr(ulong *ie_addr)
         */
 #if defined(CONFIG_FSL_TRUST_ARCH_v1) && defined(CONFIG_FSL_CORENET)
        sg_tbl = (struct fsl_secboot_sg_table *)
-                (((ulong)hdr->psgtable & ~(CONFIG_SYS_PBI_FLASH_BASE)) +
+                (((u32)hdr->psgtable & ~(CONFIG_SYS_PBI_FLASH_BASE)) +
                  flash_base_addr);
 #else
        sg_tbl = (struct fsl_secboot_sg_table *)(csf_addr +
-                                                (ulong)hdr->psgtable);
+                                                (u32)hdr->psgtable);
 #endif
 
        /* IE Key Table is the first entry in the SG Table */
@@ -142,7 +142,7 @@ static int get_ie_info_addr(ulong *ie_addr)
        *ie_addr = sg_tbl->src_addr;
 #endif
 
-       debug("IE Table address is %lx\n", *ie_addr);
+       debug("IE Table address is %x\n", *ie_addr);
        return 0;
 }
 
@@ -549,7 +549,7 @@ static int read_validate_esbc_client_header(struct fsl_secboot_img_priv *img)
        if (memcmp(hdr->barker, barker_code, ESBC_BARKER_LEN))
                return ERROR_ESBC_CLIENT_HEADER_BARKER;
 
-       sprintf(buf, "%p", hdr->pimg);
+       sprintf(buf, "%x", hdr->pimg);
        setenv("img_addr", buf);
 
        if (!hdr->img_size)
index c4605349a67170e939441784882536e33b9799f1..92dd98bb6156d0586cdd676d8c2b42146d6cd8f7 100644 (file)
@@ -82,14 +82,14 @@ struct fsl_secboot_img_hdr {
        u32 psign;              /* signature offset */
        u32 sign_len;           /* length of the signature in bytes */
        union {
-               struct fsl_secboot_sg_table *psgtable;  /* ptr to SG table */
-               u8 *pimg;       /* ptr to ESBC client image */
+               u32 psgtable;   /* ptr to SG table */
+               u32 pimg;       /* ptr to ESBC client image */
        };
        union {
                u32 sg_entries; /* no of entries in SG table */
                u32 img_size;   /* ESBC client image size in bytes */
        };
-       ulong img_start;                /* ESBC client entry point */
+       u32 img_start;          /* ESBC client entry point */
        u32 sg_flag;            /* Scatter gather flag */
        u32 uid_flag;
        u32 fsl_uid_0;
@@ -133,7 +133,7 @@ struct srk_table {
  */
 struct fsl_secboot_sg_table {
        u32 len;                /* length of the segment in bytes */
-       ulong src_addr;         /* ptr to the data segment */
+       u32 src_addr;           /* ptr to the data segment */
 };
 #else
 /*
@@ -146,8 +146,8 @@ struct fsl_secboot_sg_table {
 struct fsl_secboot_sg_table {
        u32 len;
        u32 trgt_id;
-       ulong src_addr;
-       ulong dst_addr;
+       u32 src_addr;
+       u32 dst_addr;
 };
 #endif
 
@@ -162,7 +162,7 @@ struct fsl_secboot_sg_table {
  */
 struct fsl_secboot_img_priv {
        uint32_t hdr_location;
-       ulong ie_addr;
+       u32 ie_addr;
        u32 key_len;
        struct fsl_secboot_img_hdr hdr;