linux/arch/arm64/include/asm/fpsimdmacros.h
<<
>>
Prefs
   1/*
   2 * FP/SIMD state saving and restoring macros
   3 *
   4 * Copyright (C) 2012 ARM Ltd.
   5 * Author: Catalin Marinas <catalin.marinas@arm.com>
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License version 2 as
   9 * published by the Free Software Foundation.
  10 *
  11 * This program is distributed in the hope that it will be useful,
  12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 * GNU General Public License for more details.
  15 *
  16 * You should have received a copy of the GNU General Public License
  17 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18 */
  19
  20.macro fpsimd_save state, tmpnr
  21        stp     q0, q1, [\state, #16 * 0]
  22        stp     q2, q3, [\state, #16 * 2]
  23        stp     q4, q5, [\state, #16 * 4]
  24        stp     q6, q7, [\state, #16 * 6]
  25        stp     q8, q9, [\state, #16 * 8]
  26        stp     q10, q11, [\state, #16 * 10]
  27        stp     q12, q13, [\state, #16 * 12]
  28        stp     q14, q15, [\state, #16 * 14]
  29        stp     q16, q17, [\state, #16 * 16]
  30        stp     q18, q19, [\state, #16 * 18]
  31        stp     q20, q21, [\state, #16 * 20]
  32        stp     q22, q23, [\state, #16 * 22]
  33        stp     q24, q25, [\state, #16 * 24]
  34        stp     q26, q27, [\state, #16 * 26]
  35        stp     q28, q29, [\state, #16 * 28]
  36        stp     q30, q31, [\state, #16 * 30]!
  37        mrs     x\tmpnr, fpsr
  38        str     w\tmpnr, [\state, #16 * 2]
  39        mrs     x\tmpnr, fpcr
  40        str     w\tmpnr, [\state, #16 * 2 + 4]
  41.endm
  42
  43.macro fpsimd_restore state, tmpnr
  44        ldp     q0, q1, [\state, #16 * 0]
  45        ldp     q2, q3, [\state, #16 * 2]
  46        ldp     q4, q5, [\state, #16 * 4]
  47        ldp     q6, q7, [\state, #16 * 6]
  48        ldp     q8, q9, [\state, #16 * 8]
  49        ldp     q10, q11, [\state, #16 * 10]
  50        ldp     q12, q13, [\state, #16 * 12]
  51        ldp     q14, q15, [\state, #16 * 14]
  52        ldp     q16, q17, [\state, #16 * 16]
  53        ldp     q18, q19, [\state, #16 * 18]
  54        ldp     q20, q21, [\state, #16 * 20]
  55        ldp     q22, q23, [\state, #16 * 22]
  56        ldp     q24, q25, [\state, #16 * 24]
  57        ldp     q26, q27, [\state, #16 * 26]
  58        ldp     q28, q29, [\state, #16 * 28]
  59        ldp     q30, q31, [\state, #16 * 30]!
  60        ldr     w\tmpnr, [\state, #16 * 2]
  61        msr     fpsr, x\tmpnr
  62        ldr     w\tmpnr, [\state, #16 * 2 + 4]
  63        msr     fpcr, x\tmpnr
  64.endm
  65