summaryrefslogtreecommitdiff
path: root/newlib/libc/machine/mn10300/memcpy.S
diff options
context:
space:
mode:
authorChristopher Faylor <cgf@redhat.com>2000-02-17 19:39:46 +0000
committerChristopher Faylor <cgf@redhat.com>2000-02-17 19:39:46 +0000
commit6d491d8ad9122891d1a48447e8c49702eb678921 (patch)
tree45619a131b9f211ceca9fce7a866328344bf00ec /newlib/libc/machine/mn10300/memcpy.S
parentbd592806f45307757c24ec3f75bdefe13abfd51f (diff)
downloadgdb-6d491d8ad9122891d1a48447e8c49702eb678921.tar.gz
import newlib-2000-02-17 snapshotcvs/SNAPSHOT
Diffstat (limited to 'newlib/libc/machine/mn10300/memcpy.S')
-rw-r--r--newlib/libc/machine/mn10300/memcpy.S68
1 files changed, 68 insertions, 0 deletions
diff --git a/newlib/libc/machine/mn10300/memcpy.S b/newlib/libc/machine/mn10300/memcpy.S
new file mode 100644
index 00000000000..da4a21e3050
--- /dev/null
+++ b/newlib/libc/machine/mn10300/memcpy.S
@@ -0,0 +1,68 @@
+ .file "memcpy.S"
+
+ .section .text
+ .global _memcpy
+ .type _memcpy,@function
+_memcpy:
+ movm [d2,d3,a2,a3],(sp)
+ mov d0,d2
+ mov d1,a0
+ mov d2,a1
+ mov (28,sp),d1
+#ifndef __OPTIMIZE_SIZE__
+ mov a0,d0
+ or d2,d0
+ btst 3,d0
+ bne .L37
+ cmp 15,d1
+ bls .L34
+.L29:
+ setlb
+ mov (a0),d0
+ mov d0,(a1)
+ inc4 a0
+ inc4 a1
+ mov (a0),d0
+ mov d0,(a1)
+ inc4 a0
+ inc4 a1
+ mov (a0),d0
+ mov d0,(a1)
+ inc4 a0
+ inc4 a1
+ mov (a0),d0
+ mov d0,(a1)
+ inc4 a0
+ inc4 a1
+ add -16,d1
+ cmp 15,d1
+ lhi
+.L34:
+ cmp 3,d1
+ bls .L37
+.L33:
+ setlb
+ mov (a0),d0
+ mov d0,(a1)
+ inc4 a0
+ inc4 a1
+ add -4,d1
+ cmp 3,d1
+ lhi
+#endif
+.L37:
+ cmp 0,d1
+ beq .L36
+.L38:
+ setlb
+ movbu (a0),d0
+ movbu d0,(a1)
+ inc a0
+ inc a1
+ sub 1,d1
+ lne
+.L36:
+ mov d2,a0
+ ret [d2,d3,a2,a3],16
+.Lfe1:
+ .size _memcpy,.Lfe1-_memcpy