mirror of https://github.com/ARMmbed/mbed-os.git
Fix GCC _sbrk allocation
parent
b36147fbe9
commit
f13a3e32b6
|
@ -1245,16 +1245,17 @@ extern "C" int errno;
|
||||||
// Weak attribute allows user to override, e.g. to use external RAM for dynamic memory.
|
// Weak attribute allows user to override, e.g. to use external RAM for dynamic memory.
|
||||||
extern "C" WEAK caddr_t _sbrk(int incr)
|
extern "C" WEAK caddr_t _sbrk(int incr)
|
||||||
{
|
{
|
||||||
static unsigned char *heap = (unsigned char *) &__end__;
|
static uint32_t heap = (uint32_t) &__end__;
|
||||||
unsigned char *prev_heap = heap;
|
uint32_t prev_heap = heap;
|
||||||
unsigned char *new_heap = heap + incr;
|
uint32_t new_heap = heap + incr;
|
||||||
|
|
||||||
/* __HeapLimit is end of heap section */
|
/* __HeapLimit is end of heap section */
|
||||||
if (new_heap >= (unsigned char *) &__HeapLimit) {
|
if (new_heap >= (uint32_t) &__HeapLimit) {
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
return (caddr_t) -1;
|
return (caddr_t) -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
heap = new_heap;
|
||||||
return (caddr_t) prev_heap;
|
return (caddr_t) prev_heap;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -44,9 +44,9 @@ extern void __libc_init_array(void);
|
||||||
void software_init_hook(void)
|
void software_init_hook(void)
|
||||||
{
|
{
|
||||||
mbed_stack_isr_start = (unsigned char *) &__StackLimit;
|
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_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_init();
|
||||||
mbed_rtos_start();
|
mbed_rtos_start();
|
||||||
|
|
Loading…
Reference in New Issue