[PATCH 4/5] armv8: remove no longer needed lowlevel_init.S

Samuel Holland samuel at sholland.org
Tue Jan 25 04:02:54 CET 2022


On 1/24/22 7:15 PM, Andre Przywara wrote:
> When we added Allwinner SoC support to ARMv8, we needed to pull in an
> implementation of lowlevel_init, as sunxi required it at this time.
> 
> The last few patches got rid of this bogus requirement, and as sunxi was
> still the only user, we can now remove lowlevel_init from ARMv8
> altogether.

Well, we are removing lowlevel_init.S anyway. There is still a weak definition
of lowlevel_init in arch/arm/cpu/armv8/start.S, which we are now picking up.

> Signed-off-by: Andre Przywara <andre.przywara at arm.com>

Reviewed-by: Samuel Holland <samuel at sholland.org>

> ---
>  arch/arm/cpu/armv8/Makefile        |  1 -
>  arch/arm/cpu/armv8/lowlevel_init.S | 43 ------------------------------
>  arch/arm/mach-sunxi/board.c        |  4 ---
>  3 files changed, 48 deletions(-)
>  delete mode 100644 arch/arm/cpu/armv8/lowlevel_init.S
> 
> diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile
> index d85ddde430a..85fe0475c86 100644
> --- a/arch/arm/cpu/armv8/Makefile
> +++ b/arch/arm/cpu/armv8/Makefile
> @@ -42,6 +42,5 @@ obj-$(CONFIG_FSL_LAYERSCAPE) += fsl-layerscape/
>  obj-$(CONFIG_S32V234) += s32v234/
>  obj-$(CONFIG_TARGET_HIKEY) += hisilicon/
>  obj-$(CONFIG_ARMV8_PSCI) += psci.o
> -obj-$(CONFIG_ARCH_SUNXI) += lowlevel_init.o
>  obj-$(CONFIG_TARGET_BCMNS3) += bcmns3/
>  obj-$(CONFIG_XEN) += xen/
> diff --git a/arch/arm/cpu/armv8/lowlevel_init.S b/arch/arm/cpu/armv8/lowlevel_init.S
> deleted file mode 100644
> index f4f0cdce9b3..00000000000
> --- a/arch/arm/cpu/armv8/lowlevel_init.S
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0+ */
> -/*
> - * A lowlevel_init function that sets up the stack to call a C function to
> - * perform further init.
> - */
> -
> -#include <asm-offsets.h>
> -#include <config.h>
> -#include <linux/linkage.h>
> -
> -ENTRY(lowlevel_init)
> -	/*
> -	 * Setup a temporary stack. Global data is not available yet.
> -	 */
> -#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
> -	ldr	w0, =CONFIG_SPL_STACK
> -#else
> -	ldr	w0, =CONFIG_SYS_INIT_SP_ADDR
> -#endif
> -	bic	sp, x0, #0xf	/* 16-byte alignment for ABI compliance */
> -
> -	/*
> -	 * Save the old LR(passed in x29) and the current LR to stack
> -	 */
> -	stp	x29, x30, [sp, #-16]!
> -
> -	/*
> -	 * Call the very early init function. This should do only the
> -	 * absolute bare minimum to get started. It should not:
> -	 *
> -	 * - set up DRAM
> -	 * - use global_data
> -	 * - clear BSS
> -	 * - try to start a console
> -	 *
> -	 * For boards with SPL this should be empty since SPL can do all of
> -	 * this init in the SPL board_init_f() function which is called
> -	 * immediately after this.
> -	 */
> -	bl	s_init
> -	ldp	x29, x30, [sp]
> -	ret
> -ENDPROC(lowlevel_init)
> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> index 42ec02d96e3..a60dc6b299c 100644
> --- a/arch/arm/mach-sunxi/board.c
> +++ b/arch/arm/mach-sunxi/board.c
> @@ -184,10 +184,6 @@ static int spl_board_load_image(struct spl_image_info *spl_image,
>  SPL_LOAD_IMAGE_METHOD("FEL", 0, BOOT_DEVICE_BOARD, spl_board_load_image);
>  #endif
>  
> -void s_init(void)
> -{
> -}
> -
>  #define SUNXI_INVALID_BOOT_SOURCE	-1
>  
>  static int sunxi_get_boot_source(void)
> 



More information about the U-Boot mailing list