Interrupt stack is always explicitly specified, hence other condition is not needed

Earlier if interrupt stack is specified it was used and remaining section of
IRAM was used to allocate heap, if stack is not specified heap section was
reduced by isr stack size and it was added at the end of RAM

With 2-region RAM support interrupt stack will always be specified.
pull/9571/head
Deepika 2019-02-04 17:07:32 -06:00 committed by deepikabhavnani
parent 26a6a9a1c8
commit a1fe75093e
2 changed files with 7 additions and 30 deletions

View File

@ -58,23 +58,11 @@ extern uint32_t Image$$RW_IRAM1$$ZI$$Limit[];
*/
void __rt_entry(void)
{
unsigned char *free_start = HEAP_START;
uint32_t free_size = HEAP_SIZE;
#ifdef ISR_STACK_START
/* Interrupt stack explicitly specified */
mbed_stack_isr_size = ISR_STACK_SIZE;
mbed_stack_isr_size = (unsigned char *)ISR_STACK_SIZE;
mbed_stack_isr_start = ISR_STACK_START;
#else
/* Interrupt stack - reserve space at the end of the free block */
mbed_stack_isr_size = ISR_STACK_SIZE < free_size ? ISR_STACK_SIZE : free_size;
mbed_stack_isr_start = free_start + free_size - mbed_stack_isr_size;
free_size -= mbed_stack_isr_size;
#endif
/* Heap - everything else */
mbed_heap_size = free_size;
mbed_heap_start = free_start;
mbed_heap_size = (uint32_t)HEAP_SIZE;
mbed_heap_start = (unsigned char *)HEAP_START;
mbed_init();
_platform_post_stackheap_init();

View File

@ -52,24 +52,13 @@ extern void __libc_init_array(void);
*/
void software_init_hook(void)
{
unsigned char *free_start = HEAP_START;
uint32_t free_size = HEAP_SIZE;
#ifdef ISR_STACK_START
/* Interrupt stack explicitly specified */
mbed_stack_isr_size = ISR_STACK_SIZE;
mbed_stack_isr_start = ISR_STACK_START;
#else
/* Interrupt stack - reserve space at the end of the free block */
mbed_stack_isr_size = ISR_STACK_SIZE < free_size ? ISR_STACK_SIZE : free_size;
mbed_stack_isr_start = free_start + free_size - mbed_stack_isr_size;
free_size -= mbed_stack_isr_size;
#endif
mbed_stack_isr_size = (unsigned char *)ISR_STACK_SIZE;
mbed_stack_isr_start = (uint32_t)ISR_STACK_START;
/* Heap - everything else */
mbed_heap_size = free_size;
mbed_heap_start = free_start;
mbed_heap_size = (uint32_t)HEAP_SIZE;
mbed_heap_start = (unsigned char *)HEAP_START;
mbed_init();
mbed_rtos_start();