diff --git a/arch/mips/lib/strncpy_user.S b/arch/mips/lib/strncpy_user.S index 92870b6b53eaeee044a0424ef1cdd16870ec445a..51b38ab1478a43d45806e55a647677080018788c 100644 --- a/arch/mips/lib/strncpy_user.S +++ b/arch/mips/lib/strncpy_user.S @@ -28,16 +28,17 @@ * it happens at most some bytes of the exceptions handlers will be copied. */ -LEAF(__strncpy_from_user_asm) + .macro __BUILD_STRNCPY_ASM func +LEAF(__strncpy_from_\func\()_asm) LONG_L v0, TI_ADDR_LIMIT($28) # pointer ok? and v0, a1 - bnez v0, .Lfault + bnez v0, .Lfault\@ -FEXPORT(__strncpy_from_user_nocheck_asm) +FEXPORT(__strncpy_from_\func\()_nocheck_asm) .set noreorder move t0, zero move v1, a1 -1: EX(lbu, v0, (v1), .Lfault) +1: EX(lbu, v0, (v1), .Lfault\@) PTR_ADDIU v1, 1 R10KCBARRIER(0(ra)) beqz v0, 2f @@ -47,15 +48,19 @@ FEXPORT(__strncpy_from_user_nocheck_asm) PTR_ADDIU a0, 1 2: PTR_ADDU v0, a1, t0 xor v0, a1 - bltz v0, .Lfault + bltz v0, .Lfault\@ nop jr ra # return n move v0, t0 - END(__strncpy_from_user_asm) + END(__strncpy_from_\func\()_asm) -.Lfault: jr ra +.Lfault\@: jr ra li v0, -EFAULT .section __ex_table,"a" - PTR 1b, .Lfault + PTR 1b, .Lfault\@ .previous + + .endm + +__BUILD_STRNCPY_ASM user