retarget: fix microlib for mbed 2

This is as it used to be, reverting the removal. uARM does not have any hook
that we could use for mbed sdk init and copy nvic, therefore _open is used that
should be sufficient, but not ideal.

For more information, visit https://github.com/ARMmbed/mbed-os/pull/2160/files#r76563844.
pull/4689/head
Martin Kojtal 2017-06-29 14:35:00 +01:00 committed by adbridge
parent 9797c7c3d2
commit e911d9867c
1 changed files with 14 additions and 0 deletions

View File

@ -177,6 +177,20 @@ static inline int openmode_to_posix(int openmode) {
* */ * */
extern "C" FILEHANDLE PREFIX(_open)(const char* name, int openmode) { extern "C" FILEHANDLE PREFIX(_open)(const char* name, int openmode) {
#if defined(__MICROLIB) && (__ARMCC_VERSION>5030000) #if defined(__MICROLIB) && (__ARMCC_VERSION>5030000)
#if !defined(MBED_CONF_RTOS_PRESENT)
// valid only for mbed 2
// for ulib, this is invoked after RAM init, prior c++
// used as hook, as post stack/heap is not active there
extern void mbed_copy_nvic(void);
extern void mbed_sdk_init(void);
static int mbed_sdk_inited = 0;
if (!mbed_sdk_inited) {
mbed_copy_nvic();
mbed_sdk_init();
mbed_sdk_inited = 1;
}
#endif
// Before version 5.03, we were using a patched version of microlib with proper names // Before version 5.03, we were using a patched version of microlib with proper names
// This is the workaround that the microlib author suggested us // This is the workaround that the microlib author suggested us
static int n = 0; static int n = 0;