[PATCH 5/5] microblaze: drop remnants of manual reloc

Michal Simek michal.simek at amd.com
Wed Mar 8 13:18:58 CET 2023



On 3/5/23 18:49, Ovidiu Panait wrote:
> Runtime relocation has been made the default for microblaze, so do the
> following cleanups:
> - drop all manual reloc codepaths in start.S
> - drop all STATIC_RELA ifdefs, as it is now enabled unconditionally in
> Kconfig
> 
> Signed-off-by: Ovidiu Panait <ovpanait at gmail.com>
> ---
> 
>   arch/microblaze/config.mk    |  4 ----
>   arch/microblaze/cpu/Makefile |  3 +--
>   arch/microblaze/cpu/start.S  | 28 ----------------------------
>   3 files changed, 1 insertion(+), 34 deletions(-)
> 
> diff --git a/arch/microblaze/config.mk b/arch/microblaze/config.mk
> index 467c5ca1b1..64c3f31319 100644
> --- a/arch/microblaze/config.mk
> +++ b/arch/microblaze/config.mk
> @@ -13,10 +13,6 @@ LDFLAGS_FINAL += --gc-sections
>   
>   ifeq ($(CONFIG_SPL_BUILD),)
>   PLATFORM_CPPFLAGS += -fPIC
> -endif
> -
> -ifeq ($(CONFIG_STATIC_RELA),y)
> -PLATFORM_CPPFLAGS += -fPIC
>   LDFLAGS_u-boot += -pic
>   endif
>   
> diff --git a/arch/microblaze/cpu/Makefile b/arch/microblaze/cpu/Makefile
> index 1c586a7de0..b8c1dcbe14 100644
> --- a/arch/microblaze/cpu/Makefile
> +++ b/arch/microblaze/cpu/Makefile
> @@ -5,7 +5,6 @@
>   
>   extra-y	= start.o
>   obj-y	= irq.o
> -obj-y	+= interrupts.o cache.o exception.o cpuinfo.o
> -obj-$(CONFIG_STATIC_RELA)	+= relocate.o
> +obj-y	+= interrupts.o cache.o exception.o cpuinfo.o relocate.o
>   obj-$(CONFIG_XILINX_MICROBLAZE0_PVR) += pvr.o
>   obj-$(CONFIG_SPL_BUILD)	+= spl.o
> diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S
> index 7079d9e170..c1e0fcda0a 100644
> --- a/arch/microblaze/cpu/start.S
> +++ b/arch/microblaze/cpu/start.S
> @@ -10,16 +10,11 @@
>   #include <asm-offsets.h>
>   #include <config.h>
>   
> -#if defined(CONFIG_STATIC_RELA)
>   #define SYM_ADDR(reg, reg_add, symbol)	\
>   	mfs	r20, rpc; \
>   	addik	r20, r20, _GLOBAL_OFFSET_TABLE_ + 8; \
>   	lwi	reg, r20, symbol at GOT; \
>   	addk	reg, reg reg_add;
> -#else
> -#define SYM_ADDR(reg, reg_add, symbol)	\
> -	addi	reg, reg_add, symbol
> -#endif
>   
>   	.text
>   	.global _start
> @@ -35,7 +30,6 @@ _start:
>   	addi	r1, r0, CONFIG_SPL_STACK
>   #else
>   	add	r1, r0, r20
> -#if defined(CONFIG_STATIC_RELA)
>   	bri	1f
>   
>   	/* Force alignment for easier ASM code below */
> @@ -67,7 +61,6 @@ uboot_sym_start:
>   
>   	brlid	r15, mb_fix_rela
>   	nop
> -#endif
>   #endif
>   
>   	addi	r1, r1, -4	/* Decrement SP to top of memory */
> @@ -310,7 +303,6 @@ relocate_code:
>   	brlid	r15, __setup_exceptions
>   	nop
>   
> -#if defined(CONFIG_STATIC_RELA)
>   	/* reloc_offset is current location */
>   	SYM_ADDR(r10, r0, _start)
>   
> @@ -331,27 +323,7 @@ relocate_code:
>   	add	r9, r9, r5
>   	brlid	r15, mb_fix_rela
>   	nop
> -
>   	/* end of code which does relocation */
> -#else
> -	/* Check if GOT exist */
> -	addik	r21, r23, _got_start
> -	addik	r22, r23, _got_end
> -	cmpu	r12, r21, r22
> -	beqi	r12, 2f /* No GOT table - jump over */
> -
> -	/* Skip last 3 entries plus 1 because of loop boundary below */
> -	addik	r22, r22, -0x10
> -
> -        /* Relocate the GOT. */
> -3:	lw	r12, r21, r0 /* Load entry */
> -	addk	r12, r12, r23 /* Add reloc offset */
> -	sw	r12, r21, r0 /* Save entry back */
> -
> -	cmpu	r12, r21, r22 /* Check if this cross boundary */
> -	bneid	r12, 3b
> -	addik	r21. r21, 4
> -#endif
>   
>   	/* Flush caches to ensure consistency */
>   	brlid	r15, flush_cache_all

Reviewed-by: Michal Simek <michal.simek at amd.com>

Thanks,
Michal


More information about the U-Boot mailing list