summaryrefslogtreecommitdiffstats
path: root/arch/h8300/lib/strncpy.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/h8300/lib/strncpy.S')
-rw-r--r--arch/h8300/lib/strncpy.S35
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/h8300/lib/strncpy.S b/arch/h8300/lib/strncpy.S
new file mode 100644
index 000000000..8b65d7c47
--- /dev/null
+++ b/arch/h8300/lib/strncpy.S
@@ -0,0 +1,35 @@
+;;; SPDX-License-Identifier: GPL-2.0
+;;; strncpy.S
+
+#include <asm/linkage.h>
+
+ .text
+.global strncpy_from_user
+
+;;; long strncpy_from_user(void *to, void *from, size_t n)
+strncpy_from_user:
+ mov.l er2,er2
+ bne 1f
+ sub.l er0,er0
+ rts
+1:
+ mov.l er4,@-sp
+ sub.l er3,er3
+2:
+ mov.b @er1+,r4l
+ mov.b r4l,@er0
+ adds #1,er0
+ beq 3f
+ inc.l #1,er3
+ dec.l #1,er2
+ bne 2b
+3:
+ dec.l #1,er2
+4:
+ mov.b r4l,@er0
+ adds #1,er0
+ dec.l #1,er2
+ bne 4b
+ mov.l er3,er0
+ mov.l @sp+,er4
+ rts