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: Aneesh Bansal <aneesh.bansal@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
0cbba8e953
commit
7bcb0eb285
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user