xref: /optee_os/core/arch/arm/kernel/unwind_private.h (revision 02d307b7db909c7973fd54431c9bb7335f103ede)
1a367dcbbSJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */
2a367dcbbSJerome Forissier /*
3a367dcbbSJerome Forissier  * Copyright (c) 2018, Linaro Limited
4a367dcbbSJerome Forissier  */
5a367dcbbSJerome Forissier #include <malloc.h>
6a367dcbbSJerome Forissier #include <stddef.h>
7a367dcbbSJerome Forissier #include <util.h>
8a367dcbbSJerome Forissier 
unw_grow(void * p,size_t * cur_size,size_t new_size)9a367dcbbSJerome Forissier static inline void *unw_grow(void *p, size_t *cur_size, size_t new_size)
10a367dcbbSJerome Forissier {
11*02d307b7SJerome Forissier 	size_t rounded_size = 0;
12*02d307b7SJerome Forissier 	void *tmp = NULL;
13*02d307b7SJerome Forissier 
14a367dcbbSJerome Forissier 	if (*cur_size >= new_size)
15a367dcbbSJerome Forissier 		return p;
16a367dcbbSJerome Forissier 
17*02d307b7SJerome Forissier 	rounded_size = ROUNDUP(new_size, 16 * sizeof(vaddr_t));
18*02d307b7SJerome Forissier 	tmp = realloc(p, rounded_size);
19a367dcbbSJerome Forissier 
20a367dcbbSJerome Forissier 	if (tmp)
21a367dcbbSJerome Forissier 		*cur_size = rounded_size;
22a367dcbbSJerome Forissier 	return tmp;
23a367dcbbSJerome Forissier }
24