blob: b8857b4b90a53b6465b72bfb23d1f410e8282252 [file] [log] [blame]
Travis Geiselbrecht1d0df692008-09-01 02:26:09 -07001/*
2 * Copyright (c) 2008 Travis Geiselbrecht
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining
5 * a copy of this software and associated documentation files
6 * (the "Software"), to deal in the Software without restriction,
7 * including without limitation the rights to use, copy, modify, merge,
8 * publish, distribute, sublicense, and/or sell copies of the Software,
9 * and to permit persons to whom the Software is furnished to do so,
10 * subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 */
23#include <debug.h>
24#include <malloc.h>
25#include <string.h>
26#include <lib/heap.h>
Channagoud Kadabi8f60b6f2015-03-02 11:52:11 -080027#include <arch/ops.h>
Travis Geiselbrecht1d0df692008-09-01 02:26:09 -070028
29void *malloc(size_t size)
30{
31 return heap_alloc(size, 0);
32}
33
34void *memalign(size_t boundary, size_t size)
35{
Channagoud Kadabi8f60b6f2015-03-02 11:52:11 -080036 void *ptr;
37 ptr = heap_alloc(size, boundary);
38 /* Clean the cache before giving the memory */
Channagoud Kadabicf3afe42015-08-07 16:08:08 -070039 arch_clean_invalidate_cache_range((addr_t) ptr, size);
Channagoud Kadabi8f60b6f2015-03-02 11:52:11 -080040 return ptr;
Travis Geiselbrecht1d0df692008-09-01 02:26:09 -070041}
42
43void *calloc(size_t count, size_t size)
44{
45 void *ptr;
46 size_t realsize = count * size;
47
48 ptr = heap_alloc(realsize, 0);
49 if (!ptr)
50 return NULL;
51
52 memset(ptr, 0, realsize);
53 return ptr;
54}
55
56void free(void *ptr)
57{
58 return heap_free(ptr);
59}
60
Kinson Chik2cd211f2011-07-27 19:27:35 -070061void *realloc(void *ptr, size_t size)
62{
63 return(heap_realloc(ptr, size));
64}
65