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