The armv6-eabihf toolchains generate some ldrd instructions that trigger data abort on RaspberryPi Zero (ARM1176JZF-S CPU): drivers/firmware/efi/libstub/efi-stub-helper.c:91 *map->map_size = *map->desc_size * 32; 92c8: e1c420d4 ldrd r2, [r4, #4] This patch is a hack to instruct the compiler to avoid using the problematic ldrd instructions. Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxx> --- drivers/firmware/efi/libstub/efi-stub-helper.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c index 35dbc2791c97..8d7d27b8b9c2 100644 --- a/drivers/firmware/efi/libstub/efi-stub-helper.c +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -86,9 +86,10 @@ efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, efi_status_t status; unsigned long key; u32 desc_version; + unsigned long hack; *map->desc_size = sizeof(*m); - *map->map_size = *map->desc_size * 32; + *map->map_size = sizeof(*m) * 32; *map->buff_size = *map->map_size; again: status = efi_call_early(allocate_pool, EFI_LOADER_DATA, @@ -111,7 +112,9 @@ efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, * exceed this headroom once we are ready to trigger * ExitBootServices() */ - *map->map_size += *map->desc_size * EFI_MMAP_NR_SLACK_SLOTS; + hack = *map->desc_size * EFI_MMAP_NR_SLACK_SLOTS + 1; + *map->map_size += hack; + --(*map->map_size); *map->buff_size = *map->map_size; goto again; } -- 2.17.1