aboutsummaryrefslogtreecommitdiff
path: root/kernel/string.S
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/string.S')
-rw-r--r--kernel/string.S28
1 files changed, 27 insertions, 1 deletions
diff --git a/kernel/string.S b/kernel/string.S
index afd5985..4fb1ccc 100644
--- a/kernel/string.S
+++ b/kernel/string.S
@@ -35,12 +35,38 @@ strcmp:
1:
lbu t0, 0(a0)
lbu t1, 0(a1)
- bne t0, t1, 2f
addi a0, a0, 1
addi a1, a1, 1
+ bne t0, t1, 2f
bnez t0, 1b
li a0, 0
ret
2:
sub a0, t0, t1
ret
+
+/*
+ * Defined in include/fbos/string.h
+ *
+ * int memcmp(const void *ptr1, const void *ptr2, size_t n)
+ *
+ * Returns (a0): comparison result as in stdlib.
+ * Parameter (a0, a1): strings to compare.
+ * Clobbers: t0, t1.
+ */
+.global memcmp
+.type memcmp, @function
+memcmp:
+1:
+ lbu t0, 0(a0)
+ lbu t1, 0(a1)
+ bne t0, t1, 2f
+ addi a0, a0, 1
+ addi a1, a1, 1
+ addi a2, a2, -1
+ bnez a2, 1b
+ li a0, 0
+ ret
+2:
+ sub a0, t0, t1
+ ret