]> git.sur5r.net Git - u-boot/blobdiff - common/dlmalloc.c
Blackfin: TWI/I2C: implement bus speed get/set functions
[u-boot] / common / dlmalloc.c
index 4a185620f98203d74c7bfdc30f2c669d7c8391da..ca088a17d1596fc192be4cd3dc12b9b2ab2a411c 100644 (file)
@@ -1494,6 +1494,7 @@ static mbinptr av_[NAV * 2 + 2] = {
  IAV(120), IAV(121), IAV(122), IAV(123), IAV(124), IAV(125), IAV(126), IAV(127)
 };
 
+#ifndef CONFIG_RELOC_FIXUP_WORKS
 void malloc_bin_reloc (void)
 {
        unsigned long *p = (unsigned long *)(&av_[2]);
@@ -1502,7 +1503,39 @@ void malloc_bin_reloc (void)
                *p++ += gd->reloc_off;
        }
 }
-\f
+#endif
+
+ulong mem_malloc_start = 0;
+ulong mem_malloc_end = 0;
+ulong mem_malloc_brk = 0;
+
+void *sbrk(ptrdiff_t increment)
+{
+       ulong old = mem_malloc_brk;
+       ulong new = old + increment;
+
+       if ((new < mem_malloc_start) || (new > mem_malloc_end))
+               return NULL;
+
+       mem_malloc_brk = new;
+
+       return (void *)old;
+}
+
+#ifndef CONFIG_X86
+/*
+ * x86 boards use a slightly different init sequence thus they implement
+ * their own version of mem_malloc_init()
+ */
+void mem_malloc_init(ulong start, ulong size)
+{
+       mem_malloc_start = start;
+       mem_malloc_end = start + size;
+       mem_malloc_brk = start;
+
+       memset((void *)mem_malloc_start, 0, size);
+}
+#endif
 
 /* field-extraction macros */