diff options
Diffstat (limited to 'arch/riscv/lib')
| -rw-r--r-- | arch/riscv/lib/uaccess.S | 28 | 
1 files changed, 13 insertions, 15 deletions
| diff --git a/arch/riscv/lib/uaccess.S b/arch/riscv/lib/uaccess.S index 63bc691cff91..8c475f4da308 100644 --- a/arch/riscv/lib/uaccess.S +++ b/arch/riscv/lib/uaccess.S @@ -1,15 +1,13 @@  #include <linux/linkage.h>  #include <asm-generic/export.h>  #include <asm/asm.h> +#include <asm/asm-extable.h>  #include <asm/csr.h>  	.macro fixup op reg addr lbl  100:  	\op \reg, \addr -	.section __ex_table,"a" -	.balign RISCV_SZPTR -	RISCV_PTR 100b, \lbl -	.previous +	_asm_extable	100b, \lbl  	.endm  ENTRY(__asm_copy_to_user) @@ -173,6 +171,13 @@ ENTRY(__asm_copy_from_user)  	csrc CSR_STATUS, t6  	li	a0, 0  	ret + +	/* Exception fixup code */ +10: +	/* Disable access to user memory */ +	csrs CSR_STATUS, t6 +	mv a0, t5 +	ret  ENDPROC(__asm_copy_to_user)  ENDPROC(__asm_copy_from_user)  EXPORT_SYMBOL(__asm_copy_to_user) @@ -218,19 +223,12 @@ ENTRY(__clear_user)  	addi a0, a0, 1  	bltu a0, a3, 5b  	j 3b -ENDPROC(__clear_user) -EXPORT_SYMBOL(__clear_user) -	.section .fixup,"ax" -	.balign 4 -	/* Fixup code for __copy_user(10) and __clear_user(11) */ -10: -	/* Disable access to user memory */ -	csrs CSR_STATUS, t6 -	mv a0, t5 -	ret +	/* Exception fixup code */  11: +	/* Disable access to user memory */  	csrs CSR_STATUS, t6  	mv a0, a1  	ret -	.previous +ENDPROC(__clear_user) +EXPORT_SYMBOL(__clear_user) |