Fix GCC _sbrk allocation

pull/9571/head
Deepika 2019-02-10 18:26:34 -06:00 committed by deepikabhavnani
parent b36147fbe9
commit f13a3e32b6
2 changed files with 7 additions and 6 deletions

View File

@ -1245,16 +1245,17 @@ extern "C" int errno;
// Weak attribute allows user to override, e.g. to use external RAM for dynamic memory.
extern "C" WEAK caddr_t _sbrk(int incr)
{
static unsigned char *heap = (unsigned char *) &__end__;
unsigned char *prev_heap = heap;
unsigned char *new_heap = heap + incr;
static uint32_t heap = (uint32_t) &__end__;
uint32_t prev_heap = heap;
uint32_t new_heap = heap + incr;
/* __HeapLimit is end of heap section */
if (new_heap >= (unsigned char *) &__HeapLimit) {
if (new_heap >= (uint32_t) &__HeapLimit) {
errno = ENOMEM;
return (caddr_t) -1;
}
heap = new_heap;
return (caddr_t) prev_heap;
}
#endif

View File

@ -44,9 +44,9 @@ extern void __libc_init_array(void);
void software_init_hook(void)
{
mbed_stack_isr_start = (unsigned char *) &__StackLimit;
mbed_stack_isr_size = ((uint32_t)((uint32_t) &__StackTop - (uint32_t) &__StackLimit));
mbed_stack_isr_size = (uint32_t) &__StackTop - (uint32_t) &__StackLimit;
mbed_heap_start = (unsigned char *) &__end__;
mbed_heap_size = ((uint32_t)((uint32_t) &__HeapLimit - (uint32_t) &__end__));
mbed_heap_size = (uint32_t) &__HeapLimit - (uint32_t) &__end__;
mbed_init();
mbed_rtos_start();