~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/riscv/lib/uaccess_vector.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 
  3 #include <linux/linkage.h>
  4 #include <asm/asm.h>
  5 #include <asm/asm-extable.h>
  6 #include <asm/csr.h>
  7 
  8 #define pDst a0
  9 #define pSrc a1
 10 #define iNum a2
 11 
 12 #define iVL a3
 13 
 14 #define ELEM_LMUL_SETTING m8
 15 #define vData v0
 16 
 17         .macro fixup op reg addr lbl
 18 100:
 19         \op \reg, \addr
 20         _asm_extable    100b, \lbl
 21         .endm
 22 
 23 SYM_FUNC_START(__asm_vector_usercopy)
 24         /* Enable access to user memory */
 25         li      t6, SR_SUM
 26         csrs    CSR_STATUS, t6
 27 
 28 loop:
 29         vsetvli iVL, iNum, e8, ELEM_LMUL_SETTING, ta, ma
 30         fixup vle8.v vData, (pSrc), 10f
 31         sub iNum, iNum, iVL
 32         add pSrc, pSrc, iVL
 33         fixup vse8.v vData, (pDst), 11f
 34         add pDst, pDst, iVL
 35         bnez iNum, loop
 36 
 37         /* Exception fixup for vector load is shared with normal exit */
 38 10:
 39         /* Disable access to user memory */
 40         csrc    CSR_STATUS, t6
 41         mv      a0, iNum
 42         ret
 43 
 44         /* Exception fixup code for vector store. */
 45 11:
 46         /* Undo the subtraction after vle8.v */
 47         add     iNum, iNum, iVL
 48         /* Make sure the scalar fallback skip already processed bytes */
 49         csrr    t2, CSR_VSTART
 50         sub     iNum, iNum, t2
 51         j       10b
 52 SYM_FUNC_END(__asm_vector_usercopy)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php