Skip to content

Commit

Permalink
MIPS: lib: strlen_user: Use macro to build the strlen_user symbol
Browse files Browse the repository at this point in the history
Build the __strlen_user symbol using a macro. In EVA mode we will
need to use similar code to do the userspace load operations so
it is better if we use a macro to avoid code duplications.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
  • Loading branch information
Markos Chandras authored and Ralf Baechle committed Mar 26, 2014
1 parent 4968db4 commit 5cc4949
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions arch/mips/lib/strlen_user.S
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,23 @@
*
* Return 0 for error
*/
LEAF(__strlen_user_asm)
.macro __BUILD_STRLEN_ASM func
LEAF(__strlen_\func\()_asm)
LONG_L v0, TI_ADDR_LIMIT($28) # pointer ok?
and v0, a0
bnez v0, .Lfault
bnez v0, .Lfault\@

FEXPORT(__strlen_user_nocheck_asm)
FEXPORT(__strlen_\func\()_nocheck_asm)
move v0, a0
1: EX(lbu, v1, (v0), .Lfault)
1: EX(lbu, v1, (v0), .Lfault\@)
PTR_ADDIU v0, 1
bnez v1, 1b
PTR_SUBU v0, a0
jr ra
END(__strlen_user_asm)
END(__strlen_\func\()_asm)

.Lfault: move v0, zero
.Lfault\@: move v0, zero
jr ra
.endm

__BUILD_STRLEN_ASM user

0 comments on commit 5cc4949

Please sign in to comment.