Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5cc49497 authored by Markos Chandras's avatar Markos Chandras Committed by Ralf Baechle
Browse files

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: default avatarMarkos Chandras <markos.chandras@imgtec.com>
parent 4968db4b
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -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