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