\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