root/arch/mips/include/asm/asmmacro-32.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * asmmacro.h: Assembler macros to make things easier to read.
   4  *
   5  * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
   6  * Copyright (C) 1998, 1999, 2003 Ralf Baechle
   7  */
   8 #ifndef _ASM_ASMMACRO_32_H
   9 #define _ASM_ASMMACRO_32_H
  10 
  11 #include <asm/asm-offsets.h>
  12 #include <asm/regdef.h>
  13 #include <asm/fpregdef.h>
  14 #include <asm/mipsregs.h>
  15 
  16         .macro  fpu_save_single thread tmp=t0
  17         .set push
  18         SET_HARDFLOAT
  19         cfc1    \tmp,  fcr31
  20         s.d     $f0,  THREAD_FPR0(\thread)
  21         s.d     $f2,  THREAD_FPR2(\thread)
  22         s.d     $f4,  THREAD_FPR4(\thread)
  23         s.d     $f6,  THREAD_FPR6(\thread)
  24         s.d     $f8,  THREAD_FPR8(\thread)
  25         s.d     $f10, THREAD_FPR10(\thread)
  26         s.d     $f12, THREAD_FPR12(\thread)
  27         s.d     $f14, THREAD_FPR14(\thread)
  28         s.d     $f16, THREAD_FPR16(\thread)
  29         s.d     $f18, THREAD_FPR18(\thread)
  30         s.d     $f20, THREAD_FPR20(\thread)
  31         s.d     $f22, THREAD_FPR22(\thread)
  32         s.d     $f24, THREAD_FPR24(\thread)
  33         s.d     $f26, THREAD_FPR26(\thread)
  34         s.d     $f28, THREAD_FPR28(\thread)
  35         s.d     $f30, THREAD_FPR30(\thread)
  36         sw      \tmp, THREAD_FCR31(\thread)
  37         .set pop
  38         .endm
  39 
  40         .macro  fpu_restore_single thread tmp=t0
  41         .set push
  42         SET_HARDFLOAT
  43         lw      \tmp, THREAD_FCR31(\thread)
  44         l.d     $f0,  THREAD_FPR0(\thread)
  45         l.d     $f2,  THREAD_FPR2(\thread)
  46         l.d     $f4,  THREAD_FPR4(\thread)
  47         l.d     $f6,  THREAD_FPR6(\thread)
  48         l.d     $f8,  THREAD_FPR8(\thread)
  49         l.d     $f10, THREAD_FPR10(\thread)
  50         l.d     $f12, THREAD_FPR12(\thread)
  51         l.d     $f14, THREAD_FPR14(\thread)
  52         l.d     $f16, THREAD_FPR16(\thread)
  53         l.d     $f18, THREAD_FPR18(\thread)
  54         l.d     $f20, THREAD_FPR20(\thread)
  55         l.d     $f22, THREAD_FPR22(\thread)
  56         l.d     $f24, THREAD_FPR24(\thread)
  57         l.d     $f26, THREAD_FPR26(\thread)
  58         l.d     $f28, THREAD_FPR28(\thread)
  59         l.d     $f30, THREAD_FPR30(\thread)
  60         ctc1    \tmp, fcr31
  61         .set pop
  62         .endm
  63 
  64         .macro  cpu_save_nonscratch thread
  65         LONG_S  s0, THREAD_REG16(\thread)
  66         LONG_S  s1, THREAD_REG17(\thread)
  67         LONG_S  s2, THREAD_REG18(\thread)
  68         LONG_S  s3, THREAD_REG19(\thread)
  69         LONG_S  s4, THREAD_REG20(\thread)
  70         LONG_S  s5, THREAD_REG21(\thread)
  71         LONG_S  s6, THREAD_REG22(\thread)
  72         LONG_S  s7, THREAD_REG23(\thread)
  73         LONG_S  sp, THREAD_REG29(\thread)
  74         LONG_S  fp, THREAD_REG30(\thread)
  75         .endm
  76 
  77         .macro  cpu_restore_nonscratch thread
  78         LONG_L  s0, THREAD_REG16(\thread)
  79         LONG_L  s1, THREAD_REG17(\thread)
  80         LONG_L  s2, THREAD_REG18(\thread)
  81         LONG_L  s3, THREAD_REG19(\thread)
  82         LONG_L  s4, THREAD_REG20(\thread)
  83         LONG_L  s5, THREAD_REG21(\thread)
  84         LONG_L  s6, THREAD_REG22(\thread)
  85         LONG_L  s7, THREAD_REG23(\thread)
  86         LONG_L  sp, THREAD_REG29(\thread)
  87         LONG_L  fp, THREAD_REG30(\thread)
  88         LONG_L  ra, THREAD_REG31(\thread)
  89         .endm
  90 
  91 #endif /* _ASM_ASMMACRO_32_H */

/* [<][>][^][v][top][bottom][index][help] */