xref: /arm-trusted-firmware/lib/libc/memcmp.c (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2013-2019, Arm Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #include <stddef.h>
8*91f16700Schasinglulu #include <string.h>
9*91f16700Schasinglulu 
10*91f16700Schasinglulu int memcmp(const void *s1, const void *s2, size_t len)
11*91f16700Schasinglulu {
12*91f16700Schasinglulu 	const unsigned char *s = s1;
13*91f16700Schasinglulu 	const unsigned char *d = s2;
14*91f16700Schasinglulu 	unsigned char sc;
15*91f16700Schasinglulu 	unsigned char dc;
16*91f16700Schasinglulu 
17*91f16700Schasinglulu 	while (len--) {
18*91f16700Schasinglulu 		sc = *s++;
19*91f16700Schasinglulu 		dc = *d++;
20*91f16700Schasinglulu 		if (sc - dc)
21*91f16700Schasinglulu 			return (sc - dc);
22*91f16700Schasinglulu 	}
23*91f16700Schasinglulu 
24*91f16700Schasinglulu 	return 0;
25*91f16700Schasinglulu }
26