source: ecs_cellMon/firmware/Drivers/CMSIS/Include/cmsis_compiler.h @ 3

Last change on this file since 3 was 3, checked in by f.jahn, 20 months ago

fw hinzugfügt-->zed

File size: 9.5 KB
Line 
1/**************************************************************************//**
2 * @file     cmsis_compiler.h
3 * @brief    CMSIS compiler generic header file
4 * @version  V5.1.0
5 * @date     09. October 2018
6 ******************************************************************************/
7/*
8 * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
9 *
10 * SPDX-License-Identifier: Apache-2.0
11 *
12 * Licensed under the Apache License, Version 2.0 (the License); you may
13 * not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
15 *
16 * www.apache.org/licenses/LICENSE-2.0
17 *
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
20 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
23 */
24
25#ifndef __CMSIS_COMPILER_H
26#define __CMSIS_COMPILER_H
27
28#include <stdint.h>
29
30/*
31 * Arm Compiler 4/5
32 */
33#if   defined ( __CC_ARM )
34  #include "cmsis_armcc.h"
35
36
37/*
38 * Arm Compiler 6.6 LTM (armclang)
39 */
40#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)
41  #include "cmsis_armclang_ltm.h"
42
43  /*
44 * Arm Compiler above 6.10.1 (armclang)
45 */
46#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100)
47  #include "cmsis_armclang.h"
48
49
50/*
51 * GNU Compiler
52 */
53#elif defined ( __GNUC__ )
54  #include "cmsis_gcc.h"
55
56
57/*
58 * IAR Compiler
59 */
60#elif defined ( __ICCARM__ )
61  #include <cmsis_iccarm.h>
62
63
64/*
65 * TI Arm Compiler
66 */
67#elif defined ( __TI_ARM__ )
68  #include <cmsis_ccs.h>
69
70  #ifndef   __ASM
71    #define __ASM                                  __asm
72  #endif
73  #ifndef   __INLINE
74    #define __INLINE                               inline
75  #endif
76  #ifndef   __STATIC_INLINE
77    #define __STATIC_INLINE                        static inline
78  #endif
79  #ifndef   __STATIC_FORCEINLINE
80    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
81  #endif
82  #ifndef   __NO_RETURN
83    #define __NO_RETURN                            __attribute__((noreturn))
84  #endif
85  #ifndef   __USED
86    #define __USED                                 __attribute__((used))
87  #endif
88  #ifndef   __WEAK
89    #define __WEAK                                 __attribute__((weak))
90  #endif
91  #ifndef   __PACKED
92    #define __PACKED                               __attribute__((packed))
93  #endif
94  #ifndef   __PACKED_STRUCT
95    #define __PACKED_STRUCT                        struct __attribute__((packed))
96  #endif
97  #ifndef   __PACKED_UNION
98    #define __PACKED_UNION                         union __attribute__((packed))
99  #endif
100  #ifndef   __UNALIGNED_UINT32        /* deprecated */
101    struct __attribute__((packed)) T_UINT32 { uint32_t v; };
102    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
103  #endif
104  #ifndef   __UNALIGNED_UINT16_WRITE
105    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
106    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))
107  #endif
108  #ifndef   __UNALIGNED_UINT16_READ
109    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
110    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
111  #endif
112  #ifndef   __UNALIGNED_UINT32_WRITE
113    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
114    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
115  #endif
116  #ifndef   __UNALIGNED_UINT32_READ
117    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
118    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
119  #endif
120  #ifndef   __ALIGNED
121    #define __ALIGNED(x)                           __attribute__((aligned(x)))
122  #endif
123  #ifndef   __RESTRICT
124    #define __RESTRICT                             __restrict
125  #endif
126  #ifndef   __COMPILER_BARRIER
127    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.
128    #define __COMPILER_BARRIER()                   (void)0
129  #endif
130
131
132/*
133 * TASKING Compiler
134 */
135#elif defined ( __TASKING__ )
136  /*
137   * The CMSIS functions have been implemented as intrinsics in the compiler.
138   * Please use "carm -?i" to get an up to date list of all intrinsics,
139   * Including the CMSIS ones.
140   */
141
142  #ifndef   __ASM
143    #define __ASM                                  __asm
144  #endif
145  #ifndef   __INLINE
146    #define __INLINE                               inline
147  #endif
148  #ifndef   __STATIC_INLINE
149    #define __STATIC_INLINE                        static inline
150  #endif
151  #ifndef   __STATIC_FORCEINLINE
152    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
153  #endif
154  #ifndef   __NO_RETURN
155    #define __NO_RETURN                            __attribute__((noreturn))
156  #endif
157  #ifndef   __USED
158    #define __USED                                 __attribute__((used))
159  #endif
160  #ifndef   __WEAK
161    #define __WEAK                                 __attribute__((weak))
162  #endif
163  #ifndef   __PACKED
164    #define __PACKED                               __packed__
165  #endif
166  #ifndef   __PACKED_STRUCT
167    #define __PACKED_STRUCT                        struct __packed__
168  #endif
169  #ifndef   __PACKED_UNION
170    #define __PACKED_UNION                         union __packed__
171  #endif
172  #ifndef   __UNALIGNED_UINT32        /* deprecated */
173    struct __packed__ T_UINT32 { uint32_t v; };
174    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
175  #endif
176  #ifndef   __UNALIGNED_UINT16_WRITE
177    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
178    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
179  #endif
180  #ifndef   __UNALIGNED_UINT16_READ
181    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
182    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
183  #endif
184  #ifndef   __UNALIGNED_UINT32_WRITE
185    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
186    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
187  #endif
188  #ifndef   __UNALIGNED_UINT32_READ
189    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
190    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
191  #endif
192  #ifndef   __ALIGNED
193    #define __ALIGNED(x)              __align(x)
194  #endif
195  #ifndef   __RESTRICT
196    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
197    #define __RESTRICT
198  #endif
199  #ifndef   __COMPILER_BARRIER
200    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.
201    #define __COMPILER_BARRIER()                   (void)0
202  #endif
203
204
205/*
206 * COSMIC Compiler
207 */
208#elif defined ( __CSMC__ )
209   #include <cmsis_csm.h>
210
211 #ifndef   __ASM
212    #define __ASM                                  _asm
213  #endif
214  #ifndef   __INLINE
215    #define __INLINE                               inline
216  #endif
217  #ifndef   __STATIC_INLINE
218    #define __STATIC_INLINE                        static inline
219  #endif
220  #ifndef   __STATIC_FORCEINLINE
221    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
222  #endif
223  #ifndef   __NO_RETURN
224    // NO RETURN is automatically detected hence no warning here
225    #define __NO_RETURN
226  #endif
227  #ifndef   __USED
228    #warning No compiler specific solution for __USED. __USED is ignored.
229    #define __USED
230  #endif
231  #ifndef   __WEAK
232    #define __WEAK                                 __weak
233  #endif
234  #ifndef   __PACKED
235    #define __PACKED                               @packed
236  #endif
237  #ifndef   __PACKED_STRUCT
238    #define __PACKED_STRUCT                        @packed struct
239  #endif
240  #ifndef   __PACKED_UNION
241    #define __PACKED_UNION                         @packed union
242  #endif
243  #ifndef   __UNALIGNED_UINT32        /* deprecated */
244    @packed struct T_UINT32 { uint32_t v; };
245    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
246  #endif
247  #ifndef   __UNALIGNED_UINT16_WRITE
248    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
249    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
250  #endif
251  #ifndef   __UNALIGNED_UINT16_READ
252    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
253    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
254  #endif
255  #ifndef   __UNALIGNED_UINT32_WRITE
256    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
257    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
258  #endif
259  #ifndef   __UNALIGNED_UINT32_READ
260    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
261    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
262  #endif
263  #ifndef   __ALIGNED
264    #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.
265    #define __ALIGNED(x)
266  #endif
267  #ifndef   __RESTRICT
268    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
269    #define __RESTRICT
270  #endif
271  #ifndef   __COMPILER_BARRIER
272    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.
273    #define __COMPILER_BARRIER()                   (void)0
274  #endif
275
276
277#else
278  #error Unknown compiler.
279#endif
280
281
282#endif /* __CMSIS_COMPILER_H */
283
Note: See TracBrowser for help on using the repository browser.