summaryrefslogtreecommitdiff
path: root/common/malloc_simple.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2014-11-24 17:01:48 (GMT)
committerTom Rini <trini@ti.com>2014-11-24 17:01:48 (GMT)
commit1739564e753bc3a8097f8937a3cbe738bdaaed5d (patch)
tree56fe759e62f129dc055b6f6a22f299f6c8b5cdde /common/malloc_simple.c
parent746667f1e56bf08d03e66a178df3c4f4f6c806e1 (diff)
parent17b28edb37a33d0c89089faf36e4edd7084f65fa (diff)
downloadu-boot-fsl-qoriq-1739564e753bc3a8097f8937a3cbe738bdaaed5d.tar.xz
Merge git://git.denx.de/u-boot-dm
Conflicts: drivers/serial/serial-uclass.c Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'common/malloc_simple.c')
-rw-r--r--common/malloc_simple.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/common/malloc_simple.c b/common/malloc_simple.c
new file mode 100644
index 0000000..afdacff
--- /dev/null
+++ b/common/malloc_simple.c
@@ -0,0 +1,39 @@
+/*
+ * Simple malloc implementation
+ *
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/io.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void *malloc_simple(size_t bytes)
+{
+ ulong new_ptr;
+ void *ptr;
+
+ new_ptr = gd->malloc_ptr + bytes;
+ if (new_ptr > gd->malloc_limit)
+ panic("Out of pre-reloc memory");
+ ptr = map_sysmem(gd->malloc_base + gd->malloc_ptr, bytes);
+ gd->malloc_ptr = ALIGN(new_ptr, sizeof(new_ptr));
+ return ptr;
+}
+
+#ifdef CONFIG_SYS_MALLOC_SIMPLE
+void *calloc(size_t nmemb, size_t elem_size)
+{
+ size_t size = nmemb * elem_size;
+ void *ptr;
+
+ ptr = malloc(size);
+ memset(ptr, '\0', size);
+
+ return ptr;
+}
+#endif