Skip to content
Snippets Groups Projects
Commit 7bcb0eb2 authored by Aneesh Bansal's avatar Aneesh Bansal Committed by York Sun
Browse files

Pointers in ESBC header made 32 bit


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: default avatarAneesh Bansal <aneesh.bansal@freescale.com>
Reviewed-by: default avatarYork Sun <yorksun@freescale.com>
parent 0cbba8e9
No related branches found
No related tags found
No related merge requests found
...@@ -63,12 +63,12 @@ static u32 check_ie(struct fsl_secboot_img_priv *img) ...@@ -63,12 +63,12 @@ static u32 check_ie(struct fsl_secboot_img_priv *img)
* address * address
*/ */
#if defined(CONFIG_MPC85xx) #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); struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
u32 csf_hdr_addr = in_be32(&gur->scratchrw[0]); u32 csf_hdr_addr = in_be32(&gur->scratchrw[0]);
u32 csf_flash_offset = csf_hdr_addr & ~(CONFIG_SYS_PBI_FLASH_BASE); u32 csf_flash_offset = csf_hdr_addr & ~(CONFIG_SYS_PBI_FLASH_BASE);
ulong flash_addr, addr; u32 flash_addr, addr;
int found = 0; int found = 0;
int i = 0; int i = 0;
...@@ -76,7 +76,7 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr) ...@@ -76,7 +76,7 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
flash_addr = flash_info[i].start[0]; flash_addr = flash_info[i].start[0];
addr = flash_info[i].start[0] + csf_flash_offset; addr = flash_info[i].start[0] + csf_flash_offset;
if (memcmp((u8 *)addr, barker_code, ESBC_BARKER_LEN) == 0) { 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; found = 1;
break; break;
} }
...@@ -94,7 +94,7 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr) ...@@ -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 /* For platforms like LS1020, correct flash address is present in
* the header. So the function reqturns flash base address as 0 * 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); struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
u32 csf_hdr_addr = in_be32(&gur->scratchrw[0]); 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) ...@@ -108,11 +108,11 @@ int get_csf_base_addr(ulong *csf_addr, ulong *flash_base_addr)
} }
#endif #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_img_hdr *hdr;
struct fsl_secboot_sg_table *sg_tbl; 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)) if (get_csf_base_addr(&csf_addr, &flash_base_addr))
return -1; return -1;
...@@ -127,11 +127,11 @@ static int get_ie_info_addr(ulong *ie_addr) ...@@ -127,11 +127,11 @@ static int get_ie_info_addr(ulong *ie_addr)
*/ */
#if defined(CONFIG_FSL_TRUST_ARCH_v1) && defined(CONFIG_FSL_CORENET) #if defined(CONFIG_FSL_TRUST_ARCH_v1) && defined(CONFIG_FSL_CORENET)
sg_tbl = (struct fsl_secboot_sg_table *) 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); flash_base_addr);
#else #else
sg_tbl = (struct fsl_secboot_sg_table *)(csf_addr + sg_tbl = (struct fsl_secboot_sg_table *)(csf_addr +
(ulong)hdr->psgtable); (u32)hdr->psgtable);
#endif #endif
/* IE Key Table is the first entry in the SG Table */ /* IE Key Table is the first entry in the SG Table */
...@@ -142,7 +142,7 @@ static int get_ie_info_addr(ulong *ie_addr) ...@@ -142,7 +142,7 @@ static int get_ie_info_addr(ulong *ie_addr)
*ie_addr = sg_tbl->src_addr; *ie_addr = sg_tbl->src_addr;
#endif #endif
debug("IE Table address is %lx\n", *ie_addr); debug("IE Table address is %x\n", *ie_addr);
return 0; return 0;
} }
...@@ -549,7 +549,7 @@ static int read_validate_esbc_client_header(struct fsl_secboot_img_priv *img) ...@@ -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)) if (memcmp(hdr->barker, barker_code, ESBC_BARKER_LEN))
return ERROR_ESBC_CLIENT_HEADER_BARKER; return ERROR_ESBC_CLIENT_HEADER_BARKER;
sprintf(buf, "%p", hdr->pimg); sprintf(buf, "%x", hdr->pimg);
setenv("img_addr", buf); setenv("img_addr", buf);
if (!hdr->img_size) if (!hdr->img_size)
......
...@@ -82,14 +82,14 @@ struct fsl_secboot_img_hdr { ...@@ -82,14 +82,14 @@ struct fsl_secboot_img_hdr {
u32 psign; /* signature offset */ u32 psign; /* signature offset */
u32 sign_len; /* length of the signature in bytes */ u32 sign_len; /* length of the signature in bytes */
union { union {
struct fsl_secboot_sg_table *psgtable; /* ptr to SG table */ u32 psgtable; /* ptr to SG table */
u8 *pimg; /* ptr to ESBC client image */ u32 pimg; /* ptr to ESBC client image */
}; };
union { union {
u32 sg_entries; /* no of entries in SG table */ u32 sg_entries; /* no of entries in SG table */
u32 img_size; /* ESBC client image size in bytes */ 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 sg_flag; /* Scatter gather flag */
u32 uid_flag; u32 uid_flag;
u32 fsl_uid_0; u32 fsl_uid_0;
...@@ -133,7 +133,7 @@ struct srk_table { ...@@ -133,7 +133,7 @@ struct srk_table {
*/ */
struct fsl_secboot_sg_table { struct fsl_secboot_sg_table {
u32 len; /* length of the segment in bytes */ 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 #else
/* /*
...@@ -146,8 +146,8 @@ struct fsl_secboot_sg_table { ...@@ -146,8 +146,8 @@ struct fsl_secboot_sg_table {
struct fsl_secboot_sg_table { struct fsl_secboot_sg_table {
u32 len; u32 len;
u32 trgt_id; u32 trgt_id;
ulong src_addr; u32 src_addr;
ulong dst_addr; u32 dst_addr;
}; };
#endif #endif
...@@ -162,7 +162,7 @@ struct fsl_secboot_sg_table { ...@@ -162,7 +162,7 @@ struct fsl_secboot_sg_table {
*/ */
struct fsl_secboot_img_priv { struct fsl_secboot_img_priv {
uint32_t hdr_location; uint32_t hdr_location;
ulong ie_addr; u32 ie_addr;
u32 key_len; u32 key_len;
struct fsl_secboot_img_hdr hdr; struct fsl_secboot_img_hdr hdr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment