mips: sync asm/asm.h with Linux 5.7
authorDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Sat, 11 Jul 2020 23:46:16 +0000 (01:46 +0200)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Sat, 18 Jul 2020 12:23:25 +0000 (14:23 +0200)
Sync asm/asm.h with Linux 5.7.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Stefan Roese <sr@denx.de>
arch/mips/include/asm/asm.h

index 7abcf6d..a6876e1 100644 (file)
 
 #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
@@ -129,96 +109,6 @@ symbol             =       value
                .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
  */
 #if (_MIPS_SIM == _MIPS_SIM_ABI32)