[coreboot-gerrit] New patch to review for coreboot: f2ebcaf libpayload: mips: add memcmp to the MIPS string functions

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Wed Mar 18 13:05:46 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8743

-gerrit

commit f2ebcafbef908dbe0e19706b25731459e29ad29d
Author: Ionela Voinescu <ionela.voinescu at imgtec.com>
Date:   Wed Jan 21 01:11:56 2015 +0000

    libpayload: mips: add memcmp to the MIPS string functions
    
    The default string functions work with multiple of 4 bytes
    (sizeof(unsinged long)); MIPS will use LW/SW instructions
    for these operations and if the source and destination
    addresses are not aligned it will trigger an exception.
    Therefore, this implementation does all data access operations
    per byte, because there is no guarantee that the provided
    strings are properly aligned.
    
    BUG=chrome-os-partner:31438
    TEST=tested on Pistachio bring up board; behaves as expected
    BRANCH=none
    
    Change-Id: I05b43673deb954f022d12cb9c3d7baac26be2a34
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 8e13b3d31726404abd8c8e5c8780d3d3e16e032d
    Original-Change-Id: I456e312eb6b7fee2eff10e461af7f578aed07648
    Original-Signed-off-by: Ionela Voinescu <ionela.voinescu at imgtec.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/241885
    Original-Reviewed-by: David Hendricks <dhendrix at chromium.org>
---
 payloads/libpayload/arch/mips/string.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/payloads/libpayload/arch/mips/string.c b/payloads/libpayload/arch/mips/string.c
index 0f0c7c3..0563cf8 100644
--- a/payloads/libpayload/arch/mips/string.c
+++ b/payloads/libpayload/arch/mips/string.c
@@ -70,3 +70,13 @@ void *memset(void *s, int c, size_t n)
 
 	return s;
 }
+
+int memcmp(const void *s1, const void *s2, size_t n)
+{
+	size_t i;
+
+	for (i = 0; i < n; i++)
+		if (((u8 *)s1)[i] != ((u8 *)s2)[i])
+			return ((u8 *)s1)[i] - ((u8 *)s2)[i];
+	return 0;
+}



More information about the coreboot-gerrit mailing list