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

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

MIPS: lib: strncpy_user: Add EVA support



In non-EVA mode, strncpy_from_user* aliases are used for the
strncpy_from_kernel* symbols since the code is identical. In EVA
mode, new strcpy_from_user* symbols are used which use the EVA
specific instructions to load values from userspace.

Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
parent cc59fe5b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@
#include <asm/ftrace.h>

extern void *__bzero(void *__s, size_t __count);
extern long __strncpy_from_kernel_nocheck_asm(char *__to,
					      const char *__from, long __len);
extern long __strncpy_from_kernel_asm(char *__to, const char *__from,
				      long __len);
extern long __strncpy_from_user_nocheck_asm(char *__to,
					    const char *__from, long __len);
extern long __strncpy_from_user_asm(char *__to, const char *__from,
@@ -48,6 +52,8 @@ EXPORT_SYMBOL(copy_page);
EXPORT_SYMBOL(__copy_user);
EXPORT_SYMBOL(__copy_user_inatomic);
EXPORT_SYMBOL(__bzero);
EXPORT_SYMBOL(__strncpy_from_kernel_nocheck_asm);
EXPORT_SYMBOL(__strncpy_from_kernel_asm);
EXPORT_SYMBOL(__strncpy_from_user_nocheck_asm);
EXPORT_SYMBOL(__strncpy_from_user_asm);
EXPORT_SYMBOL(__strlen_kernel_nocheck_asm);
+19 −0
Original line number Diff line number Diff line
@@ -38,7 +38,11 @@ FEXPORT(__strncpy_from_\func\()_nocheck_asm)
	.set		noreorder
	move		t0, zero
	move		v1, a1
.ifeqs "\func","kernel"
1:	EX(lbu, v0, (v1), .Lfault\@)
.else
1:	EX(lbue, v0, (v1), .Lfault\@)
.endif
	PTR_ADDIU	v1, 1
	R10KCBARRIER(0(ra))
	beqz		v0, 2f
@@ -63,4 +67,19 @@ FEXPORT(__strncpy_from_\func\()_nocheck_asm)

	.endm

#ifndef CONFIG_EVA
	/* Set aliases */
	.global __strncpy_from_user_asm
	.global __strncpy_from_user_nocheck_asm
	.set __strncpy_from_user_asm, __strncpy_from_kernel_asm
	.set __strncpy_from_user_nocheck_asm, __strncpy_from_kernel_nocheck_asm
#endif

__BUILD_STRNCPY_ASM kernel

#ifdef CONFIG_EVA
	.set push
	.set eva
__BUILD_STRNCPY_ASM user
	.set pop
#endif