tdse-tp2_03-model_integration

Index Commits Files Refs README
Drivers/CMSIS/Include/cmsis_compiler.h (9014B)
   1 /**************************************************************************//**
   2  * @file     cmsis_compiler.h
   3  * @brief    CMSIS compiler generic header file
   4  * @version  V5.0.4
   5  * @date     10. January 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 (armclang)
  39  */
  40 #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  41   #include "cmsis_armclang.h"
  42 
  43 
  44 /*
  45  * GNU Compiler
  46  */
  47 #elif defined ( __GNUC__ )
  48   #include "cmsis_gcc.h"
  49 
  50 
  51 /*
  52  * IAR Compiler
  53  */
  54 #elif defined ( __ICCARM__ )
  55   #include <cmsis_iccarm.h>
  56 
  57 
  58 /*
  59  * TI Arm Compiler
  60  */
  61 #elif defined ( __TI_ARM__ )
  62   #include <cmsis_ccs.h>
  63 
  64   #ifndef   __ASM
  65     #define __ASM                                  __asm
  66   #endif
  67   #ifndef   __INLINE
  68     #define __INLINE                               inline
  69   #endif
  70   #ifndef   __STATIC_INLINE
  71     #define __STATIC_INLINE                        static inline
  72   #endif
  73   #ifndef   __STATIC_FORCEINLINE
  74     #define __STATIC_FORCEINLINE                   __STATIC_INLINE
  75   #endif
  76   #ifndef   __NO_RETURN
  77     #define __NO_RETURN                            __attribute__((noreturn))
  78   #endif
  79   #ifndef   __USED
  80     #define __USED                                 __attribute__((used))
  81   #endif
  82   #ifndef   __WEAK
  83     #define __WEAK                                 __attribute__((weak))
  84   #endif
  85   #ifndef   __PACKED
  86     #define __PACKED                               __attribute__((packed))
  87   #endif
  88   #ifndef   __PACKED_STRUCT
  89     #define __PACKED_STRUCT                        struct __attribute__((packed))
  90   #endif
  91   #ifndef   __PACKED_UNION
  92     #define __PACKED_UNION                         union __attribute__((packed))
  93   #endif
  94   #ifndef   __UNALIGNED_UINT32        /* deprecated */
  95     struct __attribute__((packed)) T_UINT32 { uint32_t v; };
  96     #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
  97   #endif
  98   #ifndef   __UNALIGNED_UINT16_WRITE
  99     __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
 100     #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))
 101   #endif
 102   #ifndef   __UNALIGNED_UINT16_READ
 103     __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
 104     #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
 105   #endif
 106   #ifndef   __UNALIGNED_UINT32_WRITE
 107     __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
 108     #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
 109   #endif
 110   #ifndef   __UNALIGNED_UINT32_READ
 111     __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
 112     #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
 113   #endif
 114   #ifndef   __ALIGNED
 115     #define __ALIGNED(x)                           __attribute__((aligned(x)))
 116   #endif
 117   #ifndef   __RESTRICT
 118     #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
 119     #define __RESTRICT
 120   #endif
 121 
 122 
 123 /*
 124  * TASKING Compiler
 125  */
 126 #elif defined ( __TASKING__ )
 127   /*
 128    * The CMSIS functions have been implemented as intrinsics in the compiler.
 129    * Please use "carm -?i" to get an up to date list of all intrinsics,
 130    * Including the CMSIS ones.
 131    */
 132 
 133   #ifndef   __ASM
 134     #define __ASM                                  __asm
 135   #endif
 136   #ifndef   __INLINE
 137     #define __INLINE                               inline
 138   #endif
 139   #ifndef   __STATIC_INLINE
 140     #define __STATIC_INLINE                        static inline
 141   #endif
 142   #ifndef   __STATIC_FORCEINLINE
 143     #define __STATIC_FORCEINLINE                   __STATIC_INLINE
 144   #endif
 145   #ifndef   __NO_RETURN
 146     #define __NO_RETURN                            __attribute__((noreturn))
 147   #endif
 148   #ifndef   __USED
 149     #define __USED                                 __attribute__((used))
 150   #endif
 151   #ifndef   __WEAK
 152     #define __WEAK                                 __attribute__((weak))
 153   #endif
 154   #ifndef   __PACKED
 155     #define __PACKED                               __packed__
 156   #endif
 157   #ifndef   __PACKED_STRUCT
 158     #define __PACKED_STRUCT                        struct __packed__
 159   #endif
 160   #ifndef   __PACKED_UNION
 161     #define __PACKED_UNION                         union __packed__
 162   #endif
 163   #ifndef   __UNALIGNED_UINT32        /* deprecated */
 164     struct __packed__ T_UINT32 { uint32_t v; };
 165     #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
 166   #endif
 167   #ifndef   __UNALIGNED_UINT16_WRITE
 168     __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
 169     #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
 170   #endif
 171   #ifndef   __UNALIGNED_UINT16_READ
 172     __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
 173     #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
 174   #endif
 175   #ifndef   __UNALIGNED_UINT32_WRITE
 176     __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
 177     #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
 178   #endif
 179   #ifndef   __UNALIGNED_UINT32_READ
 180     __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
 181     #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
 182   #endif
 183   #ifndef   __ALIGNED
 184     #define __ALIGNED(x)              __align(x)
 185   #endif
 186   #ifndef   __RESTRICT
 187     #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
 188     #define __RESTRICT
 189   #endif
 190 
 191 
 192 /*
 193  * COSMIC Compiler
 194  */
 195 #elif defined ( __CSMC__ )
 196    #include <cmsis_csm.h>
 197 
 198  #ifndef   __ASM
 199     #define __ASM                                  _asm
 200   #endif
 201   #ifndef   __INLINE
 202     #define __INLINE                               inline
 203   #endif
 204   #ifndef   __STATIC_INLINE
 205     #define __STATIC_INLINE                        static inline
 206   #endif
 207   #ifndef   __STATIC_FORCEINLINE
 208     #define __STATIC_FORCEINLINE                   __STATIC_INLINE
 209   #endif
 210   #ifndef   __NO_RETURN
 211     // NO RETURN is automatically detected hence no warning here
 212     #define __NO_RETURN
 213   #endif
 214   #ifndef   __USED
 215     #warning No compiler specific solution for __USED. __USED is ignored.
 216     #define __USED
 217   #endif
 218   #ifndef   __WEAK
 219     #define __WEAK                                 __weak
 220   #endif
 221   #ifndef   __PACKED
 222     #define __PACKED                               @packed
 223   #endif
 224   #ifndef   __PACKED_STRUCT
 225     #define __PACKED_STRUCT                        @packed struct
 226   #endif
 227   #ifndef   __PACKED_UNION
 228     #define __PACKED_UNION                         @packed union
 229   #endif
 230   #ifndef   __UNALIGNED_UINT32        /* deprecated */
 231     @packed struct T_UINT32 { uint32_t v; };
 232     #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
 233   #endif
 234   #ifndef   __UNALIGNED_UINT16_WRITE
 235     __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
 236     #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
 237   #endif
 238   #ifndef   __UNALIGNED_UINT16_READ
 239     __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
 240     #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
 241   #endif
 242   #ifndef   __UNALIGNED_UINT32_WRITE
 243     __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
 244     #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
 245   #endif
 246   #ifndef   __UNALIGNED_UINT32_READ
 247     __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
 248     #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
 249   #endif
 250   #ifndef   __ALIGNED
 251     #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.
 252     #define __ALIGNED(x)
 253   #endif
 254   #ifndef   __RESTRICT
 255     #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
 256     #define __RESTRICT
 257   #endif
 258 
 259 
 260 #else
 261   #error Unknown compiler.
 262 #endif
 263 
 264 
 265 #endif /* __CMSIS_COMPILER_H */
 266