[PATCH 2/4] mips: sync asm/asm.h with Linux 5.7

Stefan Roese sr at denx.de
Thu Jul 16 08:21:14 CEST 2020


On 12.07.20 01:46, Daniel Schwierzeck wrote:
> Sync asm/asm.h with Linux 5.7.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>

Reviewed-by: Stefan Roese <sr at denx.de>
Tested-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
> 
>   arch/mips/include/asm/asm.h | 130 +++---------------------------------
>   1 file changed, 10 insertions(+), 120 deletions(-)
> 
> diff --git a/arch/mips/include/asm/asm.h b/arch/mips/include/asm/asm.h
> index 7abcf6df07..a6876e1b07 100644
> --- a/arch/mips/include/asm/asm.h
> +++ b/arch/mips/include/asm/asm.h
> @@ -16,37 +16,12 @@
>   
>   #include <asm/sgidefs.h>
>   
> -#ifndef CAT
> -#ifdef __STDC__
> -#define __CAT(str1, str2) str1##str2
> -#else
> -#define __CAT(str1, str2) str1/**/str2
> -#endif
> -#define CAT(str1, str2) __CAT(str1, str2)
> -#endif
> -
> -/*
> - * PIC specific declarations
> - * Not used for the kernel but here seems to be the right place.
> - */
> -#ifdef __PIC__
> -#define CPRESTORE(register)				\
> -		.cprestore register
> -#define CPADD(register)					\
> -		.cpadd	register
> -#define CPLOAD(register)				\
> -		.cpload register
> -#else
> -#define CPRESTORE(register)
> -#define CPADD(register)
> -#define CPLOAD(register)
> -#endif
> -
>   #define ENTRY(symbol)					\
>   		.globl	symbol;				\
>   		.type	symbol, @function;		\
>   		.ent	symbol, 0;			\
> -symbol:
> +symbol:		.cfi_startproc;				\
> +		.insn
>   
>   /*
>    * LEAF - declare leaf routine
> @@ -57,7 +32,9 @@ symbol:
>   		.type	symbol, @function;		\
>   		.ent	symbol, 0;			\
>   		.section .text.symbol, "x";             \
> -symbol:		.frame	sp, 0, ra
> +symbol:		.frame	sp, 0, ra;			\
> +		.cfi_startproc;				\
> +		.insn
>   
>   /*
>    * NESTED - declare nested routine entry point
> @@ -68,12 +45,15 @@ symbol:		.frame	sp, 0, ra
>   		.type	symbol, @function;		\
>   		.ent	symbol, 0;			\
>   		.section .text.symbol, "x";             \
> -symbol:		.frame	sp, framesize, rpc
> +symbol:		.frame	sp, framesize, rpc;		\
> +		.cfi_startproc;				\
> +		.insn
>   
>   /*
>    * END - mark end of function
>    */
>   #define END(function)					\
> +		.cfi_endproc;				\
>   		.end	function;			\
>   		.size	function, .-function
>   
> @@ -90,7 +70,7 @@ symbol:
>   #define FEXPORT(symbol)					\
>   		.globl	symbol;				\
>   		.type	symbol, @function;		\
> -symbol:
> +symbol:		.insn
>   
>   /*
>    * ABS - export absolute symbol
> @@ -128,96 +108,6 @@ symbol		=	value
>   8:		.asciiz msg;				\
>   		.popsection;
>   
> -/*
> - * Build text tables
> - */
> -#define TTABLE(string)					\
> -		.pushsection .text;			\
> -		.word	1f;				\
> -		.popsection				\
> -		.pushsection .data;			\
> -1:		.asciiz string;				\
> -		.popsection
> -
> -/*
> - * MIPS IV pref instruction.
> - * Use with .set noreorder only!
> - *
> - * MIPS IV implementations are free to treat this as a nop.  The R5000
> - * is one of them.  So we should have an option not to use this instruction.
> - */
> -#ifdef CONFIG_CPU_HAS_PREFETCH
> -
> -#define PREF(hint, addr)				\
> -		.set	push;				\
> -		.set	arch=r5000;			\
> -		pref	hint, addr;			\
> -		.set	pop
> -
> -#define PREFE(hint, addr)				\
> -		.set	push;				\
> -		.set	mips0;				\
> -		.set	eva;				\
> -		prefe	hint, addr;			\
> -		.set	pop
> -
> -#define PREFX(hint, addr)				\
> -		.set	push;				\
> -		.set	arch=r5000;			\
> -		prefx	hint, addr;			\
> -		.set	pop
> -
> -#else /* !CONFIG_CPU_HAS_PREFETCH */
> -
> -#define PREF(hint, addr)
> -#define PREFE(hint, addr)
> -#define PREFX(hint, addr)
> -
> -#endif /* !CONFIG_CPU_HAS_PREFETCH */
> -
> -/*
> - * MIPS ISA IV/V movn/movz instructions and equivalents for older CPUs.
> - */
> -#if (_MIPS_ISA == _MIPS_ISA_MIPS1)
> -#define MOVN(rd, rs, rt)				\
> -		.set	push;				\
> -		.set	reorder;			\
> -		beqz	rt, 9f;				\
> -		move	rd, rs;				\
> -		.set	pop;				\
> -9:
> -#define MOVZ(rd, rs, rt)				\
> -		.set	push;				\
> -		.set	reorder;			\
> -		bnez	rt, 9f;				\
> -		move	rd, rs;				\
> -		.set	pop;				\
> -9:
> -#endif /* _MIPS_ISA == _MIPS_ISA_MIPS1 */
> -#if (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3)
> -#define MOVN(rd, rs, rt)				\
> -		.set	push;				\
> -		.set	noreorder;			\
> -		bnezl	rt, 9f;				\
> -		 move	rd, rs;				\
> -		.set	pop;				\
> -9:
> -#define MOVZ(rd, rs, rt)				\
> -		.set	push;				\
> -		.set	noreorder;			\
> -		beqzl	rt, 9f;				\
> -		 move	rd, rs;				\
> -		.set	pop;				\
> -9:
> -#endif /* (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3) */
> -#if (_MIPS_ISA == _MIPS_ISA_MIPS4 ) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
> -    (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
> -#define MOVN(rd, rs, rt)				\
> -		movn	rd, rs, rt
> -#define MOVZ(rd, rs, rt)				\
> -		movz	rd, rs, rt
> -#endif /* MIPS IV, MIPS V, MIPS32 or MIPS64 */
> -
>   /*
>    * Stack alignment
>    */
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list