drivers/intel/fsp2_0: fix hand-off-block types and size
The gcc compiler treats sizeof(void) == 1. Therefore requesting a 1 byte reservation in cbmem and writing a pointer into the buffer returned is wrong. Fix the size of the request to be 32-bits because FSP 2.0 is in 32-bit space by definition. Also, since the access to the field happens across stage boundaries it's important to ensure fixed widths are used in case a later stage has a different pointer bit width. BUG=chrome-os-partner:52679 Change-Id: Ib4efc7d5369d44a995318aac6c4a7cfdc73e4a8c Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/15737 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
parent
ddbdcc3898
commit
a3a06aeac5
|
@ -184,16 +184,16 @@ struct hob_resource *hob_header_to_resource(const struct hob_header *hob)
|
|||
|
||||
void fsp_save_hob_list(void *hob_list_ptr)
|
||||
{
|
||||
void **cbmem_loc;
|
||||
cbmem_loc = cbmem_add(CBMEM_ID_FSP_RUNTIME, sizeof(*hob_list_ptr));
|
||||
*cbmem_loc = hob_list_ptr;
|
||||
uint32_t *cbmem_loc;
|
||||
cbmem_loc = cbmem_add(CBMEM_ID_FSP_RUNTIME, sizeof(*cbmem_loc));
|
||||
*cbmem_loc = (uintptr_t)hob_list_ptr;
|
||||
}
|
||||
|
||||
const void *fsp_get_hob_list(void)
|
||||
{
|
||||
void **list_loc = cbmem_find(CBMEM_ID_FSP_RUNTIME);
|
||||
uint32_t *list_loc = cbmem_find(CBMEM_ID_FSP_RUNTIME);
|
||||
|
||||
return (list_loc) ? (*list_loc) : NULL;
|
||||
return (list_loc) ? (void *)(uintptr_t)(*list_loc) : NULL;
|
||||
}
|
||||
|
||||
static const
|
||||
|
|
Loading…
Reference in New Issue