diff options
author | Greentime Hu <greentime@andestech.com> | 2017-10-25 09:27:22 +0300 |
---|---|---|
committer | Greentime Hu <greentime@andestech.com> | 2018-02-22 05:44:33 +0300 |
commit | ace02e2badd12e34d781780517614c42dbbf8068 (patch) | |
tree | dcc51bcd5f0af76c52ef6e2e7276bae881967af6 /arch/nds32/lib/copy_from_user.S | |
parent | 7ecbac743a58ae2ed9851aa7ec81d4bf2ca2cffe (diff) | |
download | linux-ace02e2badd12e34d781780517614c42dbbf8068.tar.xz |
nds32: Library functions
This patch add support for various library functions.
Signed-off-by: Vincent Chen <vincentc@andestech.com>
Signed-off-by: Greentime Hu <greentime@andestech.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/nds32/lib/copy_from_user.S')
-rw-r--r-- | arch/nds32/lib/copy_from_user.S | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/nds32/lib/copy_from_user.S b/arch/nds32/lib/copy_from_user.S new file mode 100644 index 000000000000..ad1857b20067 --- /dev/null +++ b/arch/nds32/lib/copy_from_user.S @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0 +// Copyright (C) 2005-2017 Andes Technology Corporation + +#include <linux/linkage.h> +#include <asm/assembler.h> +#include <asm/errno.h> + +.macro lbi1 dst, addr, adj +USER( lbi.bi, \dst, [\addr], \adj) +.endm + +.macro sbi1 src, addr, adj +sbi.bi \src, [\addr], \adj +.endm + +.macro lmw1 start_reg, addr, end_reg +USER( lmw.bim, \start_reg, [\addr], \end_reg) +.endm + +.macro smw1 start_reg, addr, end_reg +smw.bim \start_reg, [\addr], \end_reg +.endm + + +/* Prototype: int __arch_copy_from_user(void *to, const char *from, size_t n) + * Purpose : copy a block from user memory to kernel memory + * Params : to - kernel memory + * : from - user memory + * : n - number of bytes to copy + * Returns : Number of bytes NOT copied. + */ + +.text +ENTRY(__arch_copy_from_user) + add $r5, $r0, $r2 +#include "copy_template.S" + move $r0, $r2 + ret +.section .fixup,"ax" +.align 2 +9001: + sub $r0, $r5, $r0 + ret +.previous +ENDPROC(__arch_copy_from_user) |