Xtensa: ADSP: bootloader: use proper struct field access

Replace byte-counting with proper structure field access.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This commit is contained in:
Guennadi Liakhovetski 2021-10-07 17:45:37 +02:00 committed by Anas Nashif
commit 33dbbfb3d6
2 changed files with 7 additions and 13 deletions

View file

@ -99,12 +99,12 @@ static void parse_module(struct sof_man_fw_header *hdr,
switch (mod->segment[i].flags.r.type) { switch (mod->segment[i].flags.r.type) {
case SOF_MAN_SEGMENT_TEXT: case SOF_MAN_SEGMENT_TEXT:
case SOF_MAN_SEGMENT_DATA: case SOF_MAN_SEGMENT_DATA:
bias = (mod->segment[i].file_offset - bias = mod->segment[i].file_offset -
SOF_MAN_ELF_TEXT_OFFSET); SOF_MAN_ELF_TEXT_OFFSET;
/* copy from IMR to SRAM */ /* copy from IMR to SRAM */
bmemcpy((void *)mod->segment[i].v_base_addr, bmemcpy((void *)mod->segment[i].v_base_addr,
(void *)((int)hdr + bias), (uint8_t *)hdr + bias,
mod->segment[i].flags.r.length * mod->segment[i].flags.r.length *
HOST_PAGE_SIZE); HOST_PAGE_SIZE);
break; break;
@ -140,8 +140,8 @@ static uint32_t get_fw_size_in_use(void)
/* Calculate fw size passed in BASEFW module in MANIFEST */ /* Calculate fw size passed in BASEFW module in MANIFEST */
for (i = MAN_SKIP_ENTRIES; i < hdr->num_module_entries; i++) { for (i = MAN_SKIP_ENTRIES; i < hdr->num_module_entries; i++) {
mod = (struct sof_man_module *)((char *)desc + mod = desc->man_module + i;
SOF_MAN_MODULE_OFFSET(i));
if (strcmp((char *)mod->name, "BASEFW")) if (strcmp((char *)mod->name, "BASEFW"))
continue; continue;
for (i = 0; i < MANIFEST_SEGMENT_COUNT; i++) { for (i = 0; i < MANIFEST_SEGMENT_COUNT; i++) {
@ -172,8 +172,8 @@ static void parse_manifest(void)
/* copy module to SRAM - skip bootloader module */ /* copy module to SRAM - skip bootloader module */
for (i = MAN_SKIP_ENTRIES; i < hdr->num_module_entries; i++) { for (i = MAN_SKIP_ENTRIES; i < hdr->num_module_entries; i++) {
mod = desc->man_module + i;
mod = (void *)((uintptr_t)desc + SOF_MAN_MODULE_OFFSET(i));
z_xtensa_cache_inv(mod, sizeof(*mod)); z_xtensa_cache_inv(mod, sizeof(*mod));
parse_module(hdr, mod); parse_module(hdr, mod);
} }

View file

@ -156,6 +156,7 @@ struct sof_man_fw_desc {
* struct sof_man_mod_config mod_config[]; * struct sof_man_mod_config mod_config[];
*/ */
struct sof_man_module man_module[];
} __attribute__((packed)); } __attribute__((packed));
/* /*
@ -189,11 +190,4 @@ struct sof_man_module_manifest {
uint32_t text_size; uint32_t text_size;
}; };
/*
* Module offset in manifest.
*/
#define SOF_MAN_MODULE_OFFSET(index) \
(sizeof(struct sof_man_fw_header) + \
(index) * sizeof(struct sof_man_module))
#endif #endif