aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wilbert Villamor <lameguy64@gmail.com>2020-10-26 10:29:16 +0800
committerGitHub <noreply@github.com>2020-10-26 10:29:16 +0800
commitb0659ad85b7aa6e74d2c3eac29281636a0c2bc5e (patch)
tree2ab74de6c0ef1efe7620dded94718a98c6b1523d
parent60deeff6e078271a17cf77c6204edbbde846f0bd (diff)
parent46404513a49d1b3ef4203f4309bf3752eb0c3f35 (diff)
downloadpsn00bsdk-b0659ad85b7aa6e74d2c3eac29281636a0c2bc5e.tar.gz
Merge pull request #24 from ckosmic/master
Account for forward-looped memmove
-rw-r--r--libpsn00b/libc/memmove.s21
1 files changed, 17 insertions, 4 deletions
diff --git a/libpsn00b/libc/memmove.s b/libpsn00b/libc/memmove.s
index d32e2ca..843ece7 100644
--- a/libpsn00b/libc/memmove.s
+++ b/libpsn00b/libc/memmove.s
@@ -10,20 +10,33 @@
.type memmove, @function
memmove:
move $v0, $a0
+ sltu $v1, $a0, $a1
+ blez $v1, .Linit_backward
+.Lloop_forward:
+ blez $a2, .Lexit
+ addi $a2, -1
+ lbu $v1, 0($a1)
+ addiu $a1, 1
+ sb $v1, 0($a0)
+ addiu $a0, 1
+ b .Lloop_forward
+ nop
+.Linit_backward:
addu $a0, $a2
addu $a1, $a2
addiu $a0, -1
addiu $a1, -1
-.Lloop:
+ b .Lloop_backward
+ nop
+.Lloop_backward:
blez $a2, .Lexit
addi $a2, -1
lbu $v1, 0($a1)
addiu $a1, -1
sb $v1, 0($a0)
addiu $a0, -1
- b .Lloop
+ b .Lloop_backward
nop
.Lexit:
jr $ra
- nop
- \ No newline at end of file
+ nop \ No newline at end of file