提交 5cc49497 编写于 作者: M Markos Chandras 提交者: Ralf Baechle

MIPS: lib: strlen_user: Use macro to build the strlen_user symbol

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: NMarkos Chandras <markos.chandras@imgtec.com>
上级 4968db4b
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册