From fa8f9e9f44d47f5b2d0b4cc6a2cc8f328e0caa80 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Tue, 26 Nov 2024 22:27:02 +0100 Subject: Move 'memcpy' to assembly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And apparently 'memmove' is not needed anymore, so we dodged a bullet there. Signed-off-by: Miquel Sabaté Solà --- kernel/string.S | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'kernel/string.S') diff --git a/kernel/string.S b/kernel/string.S index 4fb1ccc..271e8f3 100644 --- a/kernel/string.S +++ b/kernel/string.S @@ -51,7 +51,7 @@ strcmp: * int memcmp(const void *ptr1, const void *ptr2, size_t n) * * Returns (a0): comparison result as in stdlib. - * Parameter (a0, a1): strings to compare. + * Parameters (a0, a1): strings to compare. * Clobbers: t0, t1. */ .global memcmp @@ -70,3 +70,28 @@ memcmp: 2: sub a0, t0, t1 ret + +/* + * Defined in include/fbos/string.h + * + * void memcpy(const void *dest, const void *src, size_t count) + * + * Parameter a0: destination string. + * Parameter a1: source string. + * Parameter a2: number of bytes to copy. + * Clobbers: t0. + */ +.global memcpy +.type memcpy, @function +memcpy: +1: + beqz a2, 3f +2: + lbu t0, 0(a1) + sb t0, 0(a0) + addi a0, a0, 1 + addi a1, a1, 1 + addi a2, a2, -1 + bnez a2, 2b +3: + ret -- cgit v1.2.3