Birkbeck College Mobile and Ubiquitous Computing IoT Lab Exercise 2

Dependencies:   BLE_API_Native_blog

Committer:
gkroussos
Date:
Sat Mar 07 16:34:53 2015 +0000
Revision:
0:e8fdba0ed044
MUC IoT Workshop v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gkroussos 0:e8fdba0ed044 1 #ifndef NRF_SVC__
gkroussos 0:e8fdba0ed044 2 #define NRF_SVC__
gkroussos 0:e8fdba0ed044 3
gkroussos 0:e8fdba0ed044 4 #ifdef SVCALL_AS_NORMAL_FUNCTION
gkroussos 0:e8fdba0ed044 5 #define SVCALL(number, return_type, signature) return_type signature
gkroussos 0:e8fdba0ed044 6 #else
gkroussos 0:e8fdba0ed044 7
gkroussos 0:e8fdba0ed044 8 #ifndef SVCALL
gkroussos 0:e8fdba0ed044 9 #if defined (__CC_ARM)
gkroussos 0:e8fdba0ed044 10 #define SVCALL(number, return_type, signature) return_type __svc(number) signature
gkroussos 0:e8fdba0ed044 11 #elif defined (__GNUC__)
gkroussos 0:e8fdba0ed044 12 #define SVCALL(number, return_type, signature) \
gkroussos 0:e8fdba0ed044 13 _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \
gkroussos 0:e8fdba0ed044 14 _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
gkroussos 0:e8fdba0ed044 15 __attribute__((naked)) static return_type signature \
gkroussos 0:e8fdba0ed044 16 { \
gkroussos 0:e8fdba0ed044 17 __asm( \
gkroussos 0:e8fdba0ed044 18 "svc %0\n" \
gkroussos 0:e8fdba0ed044 19 "bx r14" : : "I" (number) : "r0" \
gkroussos 0:e8fdba0ed044 20 ); \
gkroussos 0:e8fdba0ed044 21 }
gkroussos 0:e8fdba0ed044 22 #elif defined (__ICCARM__)
gkroussos 0:e8fdba0ed044 23 #define PRAGMA(x) _Pragma(#x)
gkroussos 0:e8fdba0ed044 24 #define SVCALL(number, return_type, signature) \
gkroussos 0:e8fdba0ed044 25 PRAGMA(swi_number = number) \
gkroussos 0:e8fdba0ed044 26 __swi return_type signature;
gkroussos 0:e8fdba0ed044 27 #else
gkroussos 0:e8fdba0ed044 28 #define SVCALL(number, return_type, signature) return_type signature
gkroussos 0:e8fdba0ed044 29 #endif
gkroussos 0:e8fdba0ed044 30 #endif // SVCALL
gkroussos 0:e8fdba0ed044 31
gkroussos 0:e8fdba0ed044 32 #endif // SVCALL_AS_NORMAL_FUNCTION
gkroussos 0:e8fdba0ed044 33 #endif // NRF_SVC__