[U-Boot] [PATCH 2/5] Align global_data to a 16-byte boundary
Bin Meng
bmeng.cn at gmail.com
Thu Aug 6 09:15:43 CEST 2015
Hi Simon,
On Mon, Aug 3, 2015 at 8:10 AM, Simon Glass <sjg at chromium.org> wrote:
> Some archs like to have larger alignment for their global data. Use 16 bytes
> which suits all current archs.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> common/board_f.c | 2 +-
> include/asm-generic/global_data.h | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/common/board_f.c b/common/board_f.c
> index c596083..a947770 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -497,7 +497,7 @@ static int setup_machine(void)
>
> static int reserve_global_data(void)
> {
> - gd->start_addr_sp -= sizeof(gd_t);
> + gd->start_addr_sp = ALIGN(gd->start_addr_sp - sizeof(gd_t), 16);
This logic is wrong. This alignment adjustment makes there is no
enough room for global data.
> gd->new_gd = (gd_t *)map_sysmem(gd->start_addr_sp, sizeof(gd_t));
> debug("Reserving %zu Bytes for Global Data at: %08lx\n",
> sizeof(gd_t), gd->start_addr_sp);
> diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
> index 2155265..147f646 100644
> --- a/include/asm-generic/global_data.h
> +++ b/include/asm-generic/global_data.h
> @@ -99,7 +99,7 @@ typedef struct global_data {
> int pcidelay_done;
> #endif
> struct udevice *cur_serial_dev; /* current serial device */
> - struct arch_global_data arch; /* architecture-specific data */
> + struct arch_global_data arch __aligned(16); /* arch-specific data */
> } gd_t;
> #endif
>
> --
Regards,
Bin
More information about the U-Boot
mailing list