aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/libc/memcpy.s
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
commitf3e040230772f978540a71aea43dfde200992922 (patch)
treebd8ca31b72dd01e24980b073854e263589530f56 /libpsn00b/libc/memcpy.s
downloadpsn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz
First commit
Diffstat (limited to 'libpsn00b/libc/memcpy.s')
-rw-r--r--libpsn00b/libc/memcpy.s28
1 files changed, 28 insertions, 0 deletions
diff --git a/libpsn00b/libc/memcpy.s b/libpsn00b/libc/memcpy.s
new file mode 100644
index 0000000..e1a4e30
--- /dev/null
+++ b/libpsn00b/libc/memcpy.s
@@ -0,0 +1,28 @@
+# High speed ASM memcpy implementation by Lameguy64
+#
+# Part of PSn00bSDK
+
+.set noreorder
+
+.section .text
+
+# Arguments:
+# a0 - destination address
+# a1 - source adress
+# a2 - bytes to copy
+.global memcpy
+.type memcpy, @function
+memcpy:
+ move $v0, $a0
+.loop:
+ blez $a2, .exit
+ addi $a2, -1
+ lbu $a3, 0($a1)
+ addiu $a1, 1
+ sb $a3, 0($a0)
+ b .loop
+ addiu $a0, 1
+.exit:
+ jr $ra
+ nop
+ \ No newline at end of file