LCOV - code coverage report
Current view: top level - zephyr/toolchain - xcc.h Hit Total Coverage
Test: new.info Lines: 0 11 0.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2017 Intel Corporation
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_TOOLCHAIN_XCC_H_
       8             : #define ZEPHYR_INCLUDE_TOOLCHAIN_XCC_H_
       9             : 
      10             : #ifndef ZEPHYR_INCLUDE_TOOLCHAIN_H_
      11             : #error Please do not include toolchain-specific headers directly, use <zephyr/toolchain.h> instead
      12             : #endif
      13             : 
      14             : /*
      15             :  * XCC does not support using deprecated attribute in enum,
      16             :  * so just nullify it here to avoid compilation errors.
      17             :  */
      18             : #define __deprecated
      19             : 
      20             : #define __in_section_unique(seg) \
      21             :         __attribute__((section("." STRINGIFY(seg) "." STRINGIFY(__COUNTER__))))
      22             : 
      23             : #define __in_section_unique_named(seg, name) \
      24             :         __attribute__((section("." STRINGIFY(seg) \
      25             :                                "." STRINGIFY(__COUNTER__) \
      26             :                                "." STRINGIFY(name))))
      27             : 
      28             : /* toolchain/gcc.h errors out if __BYTE_ORDER__ cannot be determined
      29             :  * there. However, __BYTE_ORDER__ is actually being defined later in
      30             :  * this file. So define __BYTE_ORDER__ to skip the check in gcc.h
      31             :  * and undefine after including gcc.h.
      32             :  *
      33             :  * Clang has it defined so there is no need to work around.
      34             :  */
      35             : #ifndef __clang__
      36             : #define __BYTE_ORDER__
      37             : #endif
      38             : 
      39             : #ifdef __clang__
      40             : #include <zephyr/toolchain/llvm.h>
      41             : #else
      42             : #include <zephyr/toolchain/gcc.h>
      43             : #endif
      44             : 
      45             : #ifndef __clang__
      46             : #undef __BYTE_ORDER__
      47             : #endif
      48             : 
      49             : #include <stdbool.h>
      50             : 
      51             : #ifndef __INT8_C
      52             : #define __INT8_C(x)     x
      53             : #endif
      54             : 
      55             : #ifndef INT8_C
      56           0 : #define INT8_C(x)       __INT8_C(x)
      57             : #endif
      58             : 
      59             : #ifndef __UINT8_C
      60             : #define __UINT8_C(x)    x ## U
      61             : #endif
      62             : 
      63             : #ifndef UINT8_C
      64           0 : #define UINT8_C(x)      __UINT8_C(x)
      65             : #endif
      66             : 
      67             : #ifndef __INT16_C
      68             : #define __INT16_C(x)    x
      69             : #endif
      70             : 
      71             : #ifndef INT16_C
      72           0 : #define INT16_C(x)      __INT16_C(x)
      73             : #endif
      74             : 
      75             : #ifndef __UINT16_C
      76             : #define __UINT16_C(x)   x ## U
      77             : #endif
      78             : 
      79             : #ifndef UINT16_C
      80           0 : #define UINT16_C(x)     __UINT16_C(x)
      81             : #endif
      82             : 
      83             : #ifndef __INT32_C
      84             : #define __INT32_C(x)    x
      85             : #endif
      86             : 
      87             : #ifndef INT32_C
      88           0 : #define INT32_C(x)      __INT32_C(x)
      89             : #endif
      90             : 
      91             : #ifndef __UINT32_C
      92             : #define __UINT32_C(x)   x ## U
      93             : #endif
      94             : 
      95             : #ifndef UINT32_C
      96           0 : #define UINT32_C(x)     __UINT32_C(x)
      97             : #endif
      98             : 
      99             : #ifndef __INT64_C
     100             : #define __INT64_C(x)    x
     101             : #endif
     102             : 
     103             : #ifndef INT64_C
     104           0 : #define INT64_C(x)      __INT64_C(x)
     105             : #endif
     106             : 
     107             : #ifndef __UINT64_C
     108             : #define __UINT64_C(x)   x ## ULL
     109             : #endif
     110             : 
     111             : #ifndef UINT64_C
     112           0 : #define UINT64_C(x)     __UINT64_C(x)
     113             : #endif
     114             : 
     115             : #ifndef __INTMAX_C
     116             : #define __INTMAX_C(x)   x
     117             : #endif
     118             : 
     119             : #ifndef INTMAX_C
     120           0 : #define INTMAX_C(x)     __INTMAX_C(x)
     121             : #endif
     122             : 
     123             : #ifndef __UINTMAX_C
     124             : #define __UINTMAX_C(x)  x ## ULL
     125             : #endif
     126             : 
     127             : #ifndef UINTMAX_C
     128           0 : #define UINTMAX_C(x)    __UINTMAX_C(x)
     129             : #endif
     130             : 
     131             : #ifndef __COUNTER__
     132             : /* XCC (GCC-based compiler) doesn't support __COUNTER__
     133             :  * but this should be good enough
     134             :  */
     135             : #define __COUNTER__ __LINE__
     136             : #endif
     137             : 
     138             : #ifndef __GCC_LINKER_CMD__
     139             : #include <xtensa/config/core.h>
     140             : 
     141             : /*
     142             :  * XCC does not define the following macros with the expected names, but the
     143             :  * HAL defines similar ones. Thus we include it and define the missing macros
     144             :  * ourselves.
     145             :  */
     146             : #if XCHAL_MEMORY_ORDER == XTHAL_BIGENDIAN
     147             : #define __BYTE_ORDER__          __ORDER_BIG_ENDIAN__
     148             : #elif XCHAL_MEMORY_ORDER == XTHAL_LITTLEENDIAN
     149             : #define __BYTE_ORDER__          __ORDER_LITTLE_ENDIAN__
     150             : #else
     151             : #error "Cannot determine __BYTE_ORDER__"
     152             : #endif
     153             : 
     154             : #endif /* __GCC_LINKER_CMD__ */
     155             : 
     156             : #define __builtin_unreachable() __builtin_trap()
     157             : 
     158             : /* Not a full barrier, just a SW barrier */
     159             : #define __sync_synchronize() do { __asm__ __volatile__ ("" ::: "memory"); } \
     160             :         while (false)
     161             : 
     162             : #endif

Generated by: LCOV version 1.14