Fix known BUG in nrf_svc.h when compiled by GCC.

pull/2234/head
Vincent Coubard 2016-06-17 11:20:51 +01:00
parent 96b2604469
commit 3fe77a5efe
2 changed files with 30 additions and 30 deletions

View File

@ -1,26 +1,26 @@
/* /*
* Copyright (c) Nordic Semiconductor ASA * Copyright (c) Nordic Semiconductor ASA
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without modification, * Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met: * are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. * list of conditions and the following disclaimer.
* *
* 2. Redistributions in binary form must reproduce the above copyright notice, this * 2. Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or * list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution. * other materials provided with the distribution.
* *
* 3. Neither the name of Nordic Semiconductor ASA nor the names of other * 3. Neither the name of Nordic Semiconductor ASA nor the names of other
* contributors to this software may be used to endorse or promote products * contributors to this software may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* 4. This software must only be used in a processor manufactured by Nordic * 4. This software must only be used in a processor manufactured by Nordic
* Semiconductor ASA, or in a processor manufactured by a third party that * Semiconductor ASA, or in a processor manufactured by a third party that
* is used in combination with a processor manufactured by Nordic Semiconductor. * is used in combination with a processor manufactured by Nordic Semiconductor.
* *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@ -31,9 +31,9 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
#ifndef NRF_SVC__ #ifndef NRF_SVC__
#define NRF_SVC__ #define NRF_SVC__
@ -42,7 +42,7 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#ifdef SVCALL_AS_NORMAL_FUNCTION #ifdef SVCALL_AS_NORMAL_FUNCTION
#define SVCALL(number, return_type, signature) return_type signature #define SVCALL(number, return_type, signature) return_type signature
#else #else
@ -52,9 +52,9 @@ extern "C" {
#define SVCALL(number, return_type, signature) return_type __svc(number) signature #define SVCALL(number, return_type, signature) return_type __svc(number) signature
#elif defined (__GNUC__) #elif defined (__GNUC__)
#ifdef __cplusplus #ifdef __cplusplus
#define GCC_CAST_CPP (uint8_t) #define GCC_CAST_CPP (uint16_t)
#else #else
#define GCC_CAST_CPP #define GCC_CAST_CPP
#endif #endif
#define SVCALL(number, return_type, signature) \ #define SVCALL(number, return_type, signature) \
_Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic push") \
@ -69,14 +69,14 @@ extern "C" {
); \ ); \
} \ } \
_Pragma("GCC diagnostic pop") _Pragma("GCC diagnostic pop")
#elif defined (__ICCARM__) #elif defined (__ICCARM__)
#define PRAGMA(x) _Pragma(#x) #define PRAGMA(x) _Pragma(#x)
#define SVCALL(number, return_type, signature) \ #define SVCALL(number, return_type, signature) \
PRAGMA(swi_number = (number)) \ PRAGMA(swi_number = (number)) \
__swi return_type signature; __swi return_type signature;
#else #else
#define SVCALL(number, return_type, signature) return_type signature #define SVCALL(number, return_type, signature) return_type signature
#endif #endif
#endif // SVCALL #endif // SVCALL

View File

@ -1,26 +1,26 @@
/* /*
* Copyright (c) Nordic Semiconductor ASA * Copyright (c) Nordic Semiconductor ASA
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without modification, * Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met: * are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. * list of conditions and the following disclaimer.
* *
* 2. Redistributions in binary form must reproduce the above copyright notice, this * 2. Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or * list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution. * other materials provided with the distribution.
* *
* 3. Neither the name of Nordic Semiconductor ASA nor the names of other * 3. Neither the name of Nordic Semiconductor ASA nor the names of other
* contributors to this software may be used to endorse or promote products * contributors to this software may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* 4. This software must only be used in a processor manufactured by Nordic * 4. This software must only be used in a processor manufactured by Nordic
* Semiconductor ASA, or in a processor manufactured by a third party that * Semiconductor ASA, or in a processor manufactured by a third party that
* is used in combination with a processor manufactured by Nordic Semiconductor. * is used in combination with a processor manufactured by Nordic Semiconductor.
* *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@ -31,9 +31,9 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
#ifndef NRF_SVC__ #ifndef NRF_SVC__
#define NRF_SVC__ #define NRF_SVC__
@ -42,7 +42,7 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#ifdef SVCALL_AS_NORMAL_FUNCTION #ifdef SVCALL_AS_NORMAL_FUNCTION
#define SVCALL(number, return_type, signature) return_type signature #define SVCALL(number, return_type, signature) return_type signature
#else #else
@ -52,9 +52,9 @@ extern "C" {
#define SVCALL(number, return_type, signature) return_type __svc(number) signature #define SVCALL(number, return_type, signature) return_type __svc(number) signature
#elif defined (__GNUC__) #elif defined (__GNUC__)
#ifdef __cplusplus #ifdef __cplusplus
#define GCC_CAST_CPP (uint8_t) #define GCC_CAST_CPP (uint16_t)
#else #else
#define GCC_CAST_CPP #define GCC_CAST_CPP
#endif #endif
#define SVCALL(number, return_type, signature) \ #define SVCALL(number, return_type, signature) \
_Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic push") \
@ -69,14 +69,14 @@ extern "C" {
); \ ); \
} \ } \
_Pragma("GCC diagnostic pop") _Pragma("GCC diagnostic pop")
#elif defined (__ICCARM__) #elif defined (__ICCARM__)
#define PRAGMA(x) _Pragma(#x) #define PRAGMA(x) _Pragma(#x)
#define SVCALL(number, return_type, signature) \ #define SVCALL(number, return_type, signature) \
PRAGMA(swi_number = (number)) \ PRAGMA(swi_number = (number)) \
__swi return_type signature; __swi return_type signature;
#else #else
#define SVCALL(number, return_type, signature) return_type signature #define SVCALL(number, return_type, signature) return_type signature
#endif #endif
#endif // SVCALL #endif // SVCALL