aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/nRF5_SDK_15.0.0_a53641a/modules/nrfx/mdk/compiler_abstraction.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/nRF5_SDK_15.0.0_a53641a/modules/nrfx/mdk/compiler_abstraction.h')
-rw-r--r--thirdparty/nRF5_SDK_15.0.0_a53641a/modules/nrfx/mdk/compiler_abstraction.h155
1 files changed, 155 insertions, 0 deletions
diff --git a/thirdparty/nRF5_SDK_15.0.0_a53641a/modules/nrfx/mdk/compiler_abstraction.h b/thirdparty/nRF5_SDK_15.0.0_a53641a/modules/nrfx/mdk/compiler_abstraction.h
new file mode 100644
index 0000000..73da016
--- /dev/null
+++ b/thirdparty/nRF5_SDK_15.0.0_a53641a/modules/nrfx/mdk/compiler_abstraction.h
@@ -0,0 +1,155 @@
+/*
+
+Copyright (c) 2010 - 2018, Nordic Semiconductor ASA
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form, except as embedded into a Nordic
+ Semiconductor ASA integrated circuit in a product or a software update for
+ such product, must reproduce the above copyright notice, this list of
+ conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+4. This software, with or without modification, must only be used with a
+ Nordic Semiconductor ASA integrated circuit.
+
+5. Any software provided in binary form under this license must not be reverse
+ engineered, decompiled, modified and/or disassembled.
+
+THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef _COMPILER_ABSTRACTION_H
+#define _COMPILER_ABSTRACTION_H
+
+/*lint ++flb "Enter library region" */
+
+#if defined ( __CC_ARM )
+
+ #ifndef __ASM
+ #define __ASM __asm
+ #endif
+
+ #ifndef __INLINE
+ #define __INLINE __inline
+ #endif
+
+ #ifndef __WEAK
+ #define __WEAK __weak
+ #endif
+
+ #ifndef __ALIGN
+ #define __ALIGN(n) __align(n)
+ #endif
+
+ #ifndef __PACKED
+ #define __PACKED __packed
+ #endif
+
+ #define GET_SP() __current_sp()
+
+#elif defined ( __ICCARM__ )
+
+ #ifndef __ASM
+ #define __ASM __asm
+ #endif
+
+ #ifndef __INLINE
+ #define __INLINE inline
+ #endif
+
+ #ifndef __WEAK
+ #define __WEAK __weak
+ #endif
+
+ #ifndef __ALIGN
+ #define STRING_PRAGMA(x) _Pragma(#x)
+ #define __ALIGN(n) STRING_PRAGMA(data_alignment = n)
+ #endif
+
+ #ifndef __PACKED
+ #define __PACKED __packed
+ #endif
+
+ #define GET_SP() __get_SP()
+
+#elif defined ( __GNUC__ )
+
+ #ifndef __ASM
+ #define __ASM __asm
+ #endif
+
+ #ifndef __INLINE
+ #define __INLINE inline
+ #endif
+
+ #ifndef __WEAK
+ #define __WEAK __attribute__((weak))
+ #endif
+
+ #ifndef __ALIGN
+ #define __ALIGN(n) __attribute__((aligned(n)))
+ #endif
+
+ #ifndef __PACKED
+ #define __PACKED __attribute__((packed))
+ #endif
+
+ #define GET_SP() gcc_current_sp()
+
+ static inline unsigned int gcc_current_sp(void)
+ {
+ register unsigned sp __ASM("sp");
+ return sp;
+ }
+
+#elif defined ( __TASKING__ )
+
+ #ifndef __ASM
+ #define __ASM __asm
+ #endif
+
+ #ifndef __INLINE
+ #define __INLINE inline
+ #endif
+
+ #ifndef __WEAK
+ #define __WEAK __attribute__((weak))
+ #endif
+
+ #ifndef __ALIGN
+ #define __ALIGN(n) __align(n)
+ #endif
+
+ /* Not defined for TASKING. */
+ #ifndef __PACKED
+ #define __PACKED
+ #endif
+
+ #define GET_SP() __get_MSP()
+
+#endif
+
+/*lint --flb "Leave library region" */
+
+#endif