]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/compiler_abstraction.h
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_NORDIC / TARGET_MCU_NRF51822 / compiler_abstraction.h
1 /* Copyright (c) 2013, Nordic Semiconductor ASA
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  *   * Redistributions of source code must retain the above copyright notice, this
8  *     list of conditions and the following disclaimer.
9  *
10  *   * Redistributions in binary form must reproduce the above copyright notice,
11  *     this list of conditions and the following disclaimer in the documentation
12  *     and/or other materials provided with the distribution.
13  *
14  *   * Neither the name of Nordic Semiconductor ASA nor the names of its
15  *     contributors may be used to endorse or promote products derived from
16  *     this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  *
29  */
30 #ifndef _COMPILER_ABSTRACTION_H
31 #define _COMPILER_ABSTRACTION_H
32
33 /*lint ++flb "Enter library region" */
34
35 #if defined ( __CC_ARM )
36     
37     #ifndef __ASM
38         #define __ASM               __asm                       /*!< asm keyword for ARM Compiler */
39     #endif
40     
41     #ifndef __INLINE
42         #define __INLINE            __inline                    /*!< inline keyword for ARM Compiler */
43     #endif
44     
45     #ifndef __WEAK
46         #define __WEAK              __weak                      /*!< weak keyword for ARM Compiler */
47     #endif
48     
49     #define GET_SP()                __current_sp()              /*!> read current SP function for ARM Compiler */
50   
51 #elif defined ( __ICCARM__ )
52     
53     #ifndef __ASM
54         #define __ASM               __asm                       /*!< asm keyword for IAR Compiler */
55     #endif
56     
57     #ifndef __INLINE
58         #define __INLINE            inline                      /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
59     #endif
60     
61     #ifndef __WEAK
62         #define __WEAK              __weak                      /*!> define weak function for IAR Compiler */
63     #endif
64     
65     #define GET_SP()                __get_SP()                  /*!> read current SP function for IAR Compiler */
66     
67 #elif defined   ( __GNUC__ )
68     
69     #ifndef __ASM
70         #define __ASM               __asm                       /*!< asm keyword for GNU Compiler */
71     #endif
72     
73     #ifndef __INLINE
74         #define __INLINE            inline                      /*!< inline keyword for GNU Compiler */
75     #endif
76     
77     #ifndef __WEAK
78         #define __WEAK              __attribute__((weak))       /*!< weak keyword for GNU Compiler */
79     #endif
80     
81     #define GET_SP()                gcc_current_sp()            /*!> read current SP function for GNU Compiler */
82
83     static inline unsigned int gcc_current_sp(void)
84     {
85         register unsigned sp asm("sp");
86         return sp;
87     }
88     
89 #elif defined   ( __TASKING__ )
90         
91     #ifndef __ASM        
92         #define __ASM               __asm                       /*!< asm keyword for TASKING Compiler */
93     #endif
94     
95     #ifndef __INLINE
96         #define __INLINE            inline                      /*!< inline keyword for TASKING Compiler */
97     #endif
98     
99     #ifndef __WEAK
100         #define __WEAK              __attribute__((weak))       /*!< weak keyword for TASKING Compiler */
101     #endif
102     
103     #define GET_SP()                __get_MSP()                 /*!> read current SP function for TASKING Compiler */
104     
105 #endif
106
107 /*lint --flb "Leave library region" */
108
109 #endif