1 /*
2 * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8 #include "util.h"
9
10 #include "fih.h"
11 #include <string.h>
12
13 #ifdef TFM_FIH_PROFILE_ON
bl_fih_memeql(const void * ptr1,const void * ptr2,size_t num)14 fih_int bl_fih_memeql(const void *ptr1, const void *ptr2, size_t num)
15 {
16 size_t idx;
17
18 for (idx = 0; idx < num; idx++) {
19 if (((uint8_t *)ptr1)[idx] != ((uint8_t *)ptr2)[idx]) {
20 FIH_RET(FIH_FAILURE);
21 }
22
23 fih_delay();
24
25 if (((uint8_t *)ptr1)[idx] != ((uint8_t *)ptr2)[idx]) {
26 FIH_RET(FIH_FAILURE);
27 }
28 }
29
30 if (idx != num) {
31 FIH_RET(FIH_FAILURE);
32 }
33
34 FIH_RET(FIH_SUCCESS);
35 }
36 #else
bl_fih_memeql(const void * ptr1,const void * ptr2,size_t num)37 fih_int bl_fih_memeql(const void *ptr1, const void *ptr2, size_t num)
38 {
39 /* Only return 1 or 0 */
40 return memcmp(ptr1, ptr2, num) != 0;
41 }
42 #endif /* TFM_FIH_PROFILE_ON */
43