forked from mirrors/linux
		
	Commit62694797f5("use linux/export.h rather than asm-generic/export.h") replaced deprecated <asm-generic/export.h> inclusions. Commitc2a658d419("riscv: lib: vectorize copy_to_user/copy_from_user") introduced a new instance of #include <asm-generic/export.h>. arch/riscv/lib/uaccess_vector.S does not use EXPORT_SYMBOL, hence this include directive is unneeded. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.kernel.org/r/20240120213312.3033528-1-masahiroy@kernel.org Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0-only */
 | 
						|
 | 
						|
#include <linux/linkage.h>
 | 
						|
#include <asm/asm.h>
 | 
						|
#include <asm/asm-extable.h>
 | 
						|
#include <asm/csr.h>
 | 
						|
 | 
						|
#define pDst a0
 | 
						|
#define pSrc a1
 | 
						|
#define iNum a2
 | 
						|
 | 
						|
#define iVL a3
 | 
						|
 | 
						|
#define ELEM_LMUL_SETTING m8
 | 
						|
#define vData v0
 | 
						|
 | 
						|
	.macro fixup op reg addr lbl
 | 
						|
100:
 | 
						|
	\op \reg, \addr
 | 
						|
	_asm_extable	100b, \lbl
 | 
						|
	.endm
 | 
						|
 | 
						|
SYM_FUNC_START(__asm_vector_usercopy)
 | 
						|
	/* Enable access to user memory */
 | 
						|
	li	t6, SR_SUM
 | 
						|
	csrs	CSR_STATUS, t6
 | 
						|
 | 
						|
loop:
 | 
						|
	vsetvli iVL, iNum, e8, ELEM_LMUL_SETTING, ta, ma
 | 
						|
	fixup vle8.v vData, (pSrc), 10f
 | 
						|
	sub iNum, iNum, iVL
 | 
						|
	add pSrc, pSrc, iVL
 | 
						|
	fixup vse8.v vData, (pDst), 11f
 | 
						|
	add pDst, pDst, iVL
 | 
						|
	bnez iNum, loop
 | 
						|
 | 
						|
	/* Exception fixup for vector load is shared with normal exit */
 | 
						|
10:
 | 
						|
	/* Disable access to user memory */
 | 
						|
	csrc	CSR_STATUS, t6
 | 
						|
	mv	a0, iNum
 | 
						|
	ret
 | 
						|
 | 
						|
	/* Exception fixup code for vector store. */
 | 
						|
11:
 | 
						|
	/* Undo the subtraction after vle8.v */
 | 
						|
	add	iNum, iNum, iVL
 | 
						|
	/* Make sure the scalar fallback skip already processed bytes */
 | 
						|
	csrr	t2, CSR_VSTART
 | 
						|
	sub	iNum, iNum, t2
 | 
						|
	j	10b
 | 
						|
SYM_FUNC_END(__asm_vector_usercopy)
 |