diff options
Diffstat (limited to 'arch/mips/lib/strncpy_user.S')
| -rw-r--r-- | arch/mips/lib/strncpy_user.S | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/mips/lib/strncpy_user.S b/arch/mips/lib/strncpy_user.S index d3301cd1e9a5..3c32baf8b494 100644 --- a/arch/mips/lib/strncpy_user.S +++ b/arch/mips/lib/strncpy_user.S | |||
| @@ -35,7 +35,6 @@ LEAF(__strncpy_from_\func\()_asm) | |||
| 35 | bnez v0, .Lfault\@ | 35 | bnez v0, .Lfault\@ |
| 36 | 36 | ||
| 37 | FEXPORT(__strncpy_from_\func\()_nocheck_asm) | 37 | FEXPORT(__strncpy_from_\func\()_nocheck_asm) |
| 38 | .set noreorder | ||
| 39 | move t0, zero | 38 | move t0, zero |
| 40 | move v1, a1 | 39 | move v1, a1 |
| 41 | .ifeqs "\func","kernel" | 40 | .ifeqs "\func","kernel" |
| @@ -45,21 +44,21 @@ FEXPORT(__strncpy_from_\func\()_nocheck_asm) | |||
| 45 | .endif | 44 | .endif |
| 46 | PTR_ADDIU v1, 1 | 45 | PTR_ADDIU v1, 1 |
| 47 | R10KCBARRIER(0(ra)) | 46 | R10KCBARRIER(0(ra)) |
| 47 | sb v0, (a0) | ||
| 48 | beqz v0, 2f | 48 | beqz v0, 2f |
| 49 | sb v0, (a0) | ||
| 50 | PTR_ADDIU t0, 1 | 49 | PTR_ADDIU t0, 1 |
| 50 | PTR_ADDIU a0, 1 | ||
| 51 | bne t0, a2, 1b | 51 | bne t0, a2, 1b |
| 52 | PTR_ADDIU a0, 1 | ||
| 53 | 2: PTR_ADDU v0, a1, t0 | 52 | 2: PTR_ADDU v0, a1, t0 |
| 54 | xor v0, a1 | 53 | xor v0, a1 |
| 55 | bltz v0, .Lfault\@ | 54 | bltz v0, .Lfault\@ |
| 56 | nop | 55 | move v0, t0 |
| 57 | jr ra # return n | 56 | jr ra # return n |
| 58 | move v0, t0 | ||
| 59 | END(__strncpy_from_\func\()_asm) | 57 | END(__strncpy_from_\func\()_asm) |
| 60 | 58 | ||
| 61 | .Lfault\@: jr ra | 59 | .Lfault\@: |
| 62 | li v0, -EFAULT | 60 | li v0, -EFAULT |
| 61 | jr ra | ||
| 63 | 62 | ||
| 64 | .section __ex_table,"a" | 63 | .section __ex_table,"a" |
| 65 | PTR 1b, .Lfault\@ | 64 | PTR 1b, .Lfault\@ |
