mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Thu Sep 06 13:40:20 2018 +0100
Revision:
187:0387e8f68319
Parent:
172:7d866c31b3c5
mbed-dev library. Release version 163

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:7d866c31b3c5 1 /******************************************************************************
AnnaBridge 172:7d866c31b3c5 2 * @file startup_NUC472_442.c
AnnaBridge 172:7d866c31b3c5 3 * @version V0.10
AnnaBridge 172:7d866c31b3c5 4 * $Revision: 11 $
AnnaBridge 172:7d866c31b3c5 5 * $Date: 15/09/02 10:02a $
AnnaBridge 172:7d866c31b3c5 6 * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Source File for M480 MCU
AnnaBridge 172:7d866c31b3c5 7 *
AnnaBridge 172:7d866c31b3c5 8 * @note
AnnaBridge 172:7d866c31b3c5 9 * Copyright (C) 2013~2015 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 172:7d866c31b3c5 10 *****************************************************************************/
AnnaBridge 172:7d866c31b3c5 11
AnnaBridge 172:7d866c31b3c5 12 #include "M480.h"
AnnaBridge 172:7d866c31b3c5 13 #include <errno.h>
AnnaBridge 172:7d866c31b3c5 14 #include "nu_miscutil.h"
AnnaBridge 172:7d866c31b3c5 15
AnnaBridge 172:7d866c31b3c5 16 extern uint32_t __mbed_sbrk_start;
AnnaBridge 172:7d866c31b3c5 17 extern uint32_t __mbed_krbs_start;
AnnaBridge 172:7d866c31b3c5 18
AnnaBridge 172:7d866c31b3c5 19 #define NU_HEAP_ALIGN 32
AnnaBridge 172:7d866c31b3c5 20
AnnaBridge 187:0387e8f68319 21 /* Support heap with two-region model
AnnaBridge 187:0387e8f68319 22 *
AnnaBridge 187:0387e8f68319 23 * The default implementation of _sbrk() (in mbed_retarget.cpp) for GCC_ARM requires one-region
AnnaBridge 187:0387e8f68319 24 * model (heap and stack share one region), which doesn't fit two-region model (heap and stack
AnnaBridge 187:0387e8f68319 25 * are two distinct regions), e.g., stack in internal SRAM/heap in external SRAM on NUMAKER_PFM_NUC472.
AnnaBridge 187:0387e8f68319 26 * Hence, override _sbrk() here to support heap with two-region model.
AnnaBridge 172:7d866c31b3c5 27 */
AnnaBridge 187:0387e8f68319 28 void *_sbrk(int incr)
AnnaBridge 172:7d866c31b3c5 29 {
AnnaBridge 172:7d866c31b3c5 30 static uint32_t heap_ind = (uint32_t) &__mbed_sbrk_start;
AnnaBridge 172:7d866c31b3c5 31 uint32_t heap_ind_old = NU_ALIGN_UP(heap_ind, NU_HEAP_ALIGN);
AnnaBridge 172:7d866c31b3c5 32 uint32_t heap_ind_new = NU_ALIGN_UP(heap_ind_old + incr, NU_HEAP_ALIGN);
AnnaBridge 172:7d866c31b3c5 33
AnnaBridge 172:7d866c31b3c5 34 if (heap_ind_new > (uint32_t) &__mbed_krbs_start) {
AnnaBridge 172:7d866c31b3c5 35 errno = ENOMEM;
AnnaBridge 172:7d866c31b3c5 36 return (void *) -1;
AnnaBridge 172:7d866c31b3c5 37 }
AnnaBridge 172:7d866c31b3c5 38
AnnaBridge 172:7d866c31b3c5 39 heap_ind = heap_ind_new;
AnnaBridge 172:7d866c31b3c5 40
AnnaBridge 172:7d866c31b3c5 41 return (void *) heap_ind_old;
AnnaBridge 172:7d866c31b3c5 42 }