1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * Description:
8  *     Memory management.
9  */
10 
11 #include <fwk_assert.h>
12 #include <fwk_mm.h>
13 
14 #include <stdlib.h>
15 
fwk_mm_alloc(size_t num,size_t size)16 void *fwk_mm_alloc(size_t num, size_t size)
17 {
18     void *ptr = malloc(num * size);
19 
20     if (ptr == NULL) {
21         fwk_trap();
22     }
23 
24     return ptr;
25 }
26 
fwk_mm_alloc_notrap(size_t num,size_t size)27 void *fwk_mm_alloc_notrap(size_t num, size_t size)
28 {
29     return malloc(num * size);
30 }
31 
fwk_mm_alloc_aligned(size_t alignment,size_t num,size_t size)32 void *fwk_mm_alloc_aligned(size_t alignment, size_t num, size_t size)
33 {
34     void *ptr = aligned_alloc(alignment, num * size);
35 
36     if (ptr == NULL) {
37         fwk_trap();
38     }
39 
40     return ptr;
41 }
42 
fwk_mm_calloc(size_t num,size_t size)43 void *fwk_mm_calloc(size_t num, size_t size)
44 {
45     void *ptr = calloc(num, size);
46     if (ptr == NULL) {
47         fwk_trap();
48     }
49 
50     return ptr;
51 }
52 
fwk_mm_calloc_aligned(size_t alignment,size_t num,size_t size)53 void *fwk_mm_calloc_aligned(size_t alignment, size_t num, size_t size)
54 {
55     void *ptr = fwk_mm_alloc_aligned(alignment, num, size);
56 
57     if (ptr != NULL) {
58         (void)memset(ptr, 0, num * size);
59 
60         return ptr;
61     }
62 
63     fwk_trap();
64 }
65 
fwk_mm_realloc(void * ptr,size_t num,size_t size)66 void *fwk_mm_realloc(void *ptr, size_t num, size_t size)
67 {
68     return realloc(ptr, num * size);
69 }
70 
fwk_mm_free(void * ptr)71 void fwk_mm_free(void *ptr)
72 {
73     return free(ptr);
74 }
75