mbed library sources. Supersedes mbed-src.

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

Committer:
AnnaBridge
Date:
Thu Aug 31 17:27:04 2017 +0100
Revision:
172:7d866c31b3c5
Child:
187:0387e8f68319
This updates the lib to the mbed lib v 150

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 172:7d866c31b3c5 21 /**
AnnaBridge 172:7d866c31b3c5 22 * The default implementation of _sbrk() (in common/retarget.cpp) for GCC_ARM requires one-region model (heap and stack share one region), which doesn't
AnnaBridge 172:7d866c31b3c5 23 * fit two-region model (heap and stack are two distinct regions), for example, NUMAKER-PFM-NUC472 locates heap on external SRAM. Define __wrap__sbrk() to
AnnaBridge 172:7d866c31b3c5 24 * override the default _sbrk(). It is expected to get called through gcc hooking mechanism ('-Wl,--wrap,_sbrk') or in _sbrk().
AnnaBridge 172:7d866c31b3c5 25 */
AnnaBridge 172:7d866c31b3c5 26 void *__wrap__sbrk(int incr)
AnnaBridge 172:7d866c31b3c5 27 {
AnnaBridge 172:7d866c31b3c5 28 static uint32_t heap_ind = (uint32_t) &__mbed_sbrk_start;
AnnaBridge 172:7d866c31b3c5 29 uint32_t heap_ind_old = NU_ALIGN_UP(heap_ind, NU_HEAP_ALIGN);
AnnaBridge 172:7d866c31b3c5 30 uint32_t heap_ind_new = NU_ALIGN_UP(heap_ind_old + incr, NU_HEAP_ALIGN);
AnnaBridge 172:7d866c31b3c5 31
AnnaBridge 172:7d866c31b3c5 32 if (heap_ind_new > (uint32_t) &__mbed_krbs_start) {
AnnaBridge 172:7d866c31b3c5 33 errno = ENOMEM;
AnnaBridge 172:7d866c31b3c5 34 return (void *) -1;
AnnaBridge 172:7d866c31b3c5 35 }
AnnaBridge 172:7d866c31b3c5 36
AnnaBridge 172:7d866c31b3c5 37 heap_ind = heap_ind_new;
AnnaBridge 172:7d866c31b3c5 38
AnnaBridge 172:7d866c31b3c5 39 return (void *) heap_ind_old;
AnnaBridge 172:7d866c31b3c5 40 }