Syscalls update
authorgkostka <kostka.grzegorz@gmail.com>
Tue, 13 May 2014 20:30:02 +0000 (20:30 +0000)
committergkostka <kostka.grzegorz@gmail.com>
Tue, 13 May 2014 20:30:02 +0000 (20:30 +0000)
demos/stm32f429_disco/syscalls.c

index 40aee0c90b03dd3f2e1e33edfac5e1c358b7b9cb..78f6e4e12a9829b053997298f638b7c12f409213 100644 (file)
@@ -67,24 +67,22 @@ int _write(int file, char *ptr, int len)
 \r
 caddr_t _sbrk(int incr)\r
 {\r
-    extern char __heap_end asm("__heap_end");\r
-    static char *heap_end;\r
-    char *prev_heap_end;\r
+       extern char __heap_start;\r
+       extern char __heap_end;\r
+       static char *current_heap_end = &__heap_start;\r
+       char *previous_heap_end;\r
 \r
-    if (heap_end == 0)\r
-        heap_end = &__heap_end;\r
+       previous_heap_end = current_heap_end;\r
 \r
-    prev_heap_end = heap_end;\r
-    if ((unsigned int)(heap_end + incr) > (0x20000000 + 0x20000))\r
-    {\r
-        abort();\r
-        errno = ENOMEM;\r
-        return (caddr_t) -1;\r
-    }\r
+       if (current_heap_end + incr > &__heap_end)\r
+       {\r
+               errno = ENOMEM;\r
+               return (caddr_t) -1;\r
+       }\r
 \r
-    heap_end += incr;\r
+       current_heap_end += incr;\r
 \r
-    return (caddr_t) prev_heap_end;\r
+       return (caddr_t)previous_heap_end;\r
 }\r
 \r
 int _close(int file)\r