Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • early-display
  • variant-emmc-nvme-boot
  • 2023-01-25
  • v3
  • variant-emmc-nvme-boot
  • 2020-06-01
7 results

board_init.c

Blame
  • Forked from Reform / reform-boundary-uboot
    Source project has a limited visibility.
    • Albert ARIBAUD's avatar
      adc421e4
      arm: move gd handling outside of C code · adc421e4
      Albert ARIBAUD authored
      
      As of gcc 5.2.1 for Thumb-1, it is not possible any
      more to assign gd from C code, as gd is mapped to r9,
      and r9 may now be saved in the prolog sequence, and
      restored in the epilog sequence, of any C functions.
      
      Therefore arch_setup_gd(), which is supposed to set
      r9, may actually have no effect, causing U-Boot to
      use a bad address to access GD.
      
      Fix this by never calling arch_setup_gd() for ARM,
      and instead setting r9 in arch/arm/lib/crt0.S, to
      the value returned by board_init_f_alloc_reserve().
      
      Signed-off-by: default avatarAlbert ARIBAUD <albert.u.boot@aribaud.net>
      Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
      adc421e4
      History
      arm: move gd handling outside of C code
      Albert ARIBAUD authored
      
      As of gcc 5.2.1 for Thumb-1, it is not possible any
      more to assign gd from C code, as gd is mapped to r9,
      and r9 may now be saved in the prolog sequence, and
      restored in the epilog sequence, of any C functions.
      
      Therefore arch_setup_gd(), which is supposed to set
      r9, may actually have no effect, causing U-Boot to
      use a bad address to access GD.
      
      Fix this by never calling arch_setup_gd() for ARM,
      and instead setting r9 in arch/arm/lib/crt0.S, to
      the value returned by board_init_f_alloc_reserve().
      
      Signed-off-by: default avatarAlbert ARIBAUD <albert.u.boot@aribaud.net>
      Reviewed-by: default avatarSimon Glass <sjg@chromium.org>