LCOV - code coverage report
Current view: top level - zephyr/toolchain - xcc.h Coverage Total Hit
Test: new.info Lines: 0.0 % 11 0
Test Date: 2025-09-05 16:43:28

            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              : #ifndef __deprecated
      19              : #define __deprecated
      20              : #endif
      21              : 
      22              : #define __in_section_unique(seg) \
      23              :         __attribute__((section("." STRINGIFY(seg) "." STRINGIFY(__COUNTER__))))
      24              : 
      25              : #define __in_section_unique_named(seg, name) \
      26              :         __attribute__((section("." STRINGIFY(seg) \
      27              :                                "." STRINGIFY(__COUNTER__) \
      28              :                                "." STRINGIFY(name))))
      29              : 
      30              : /* toolchain/gcc.h errors out if __BYTE_ORDER__ cannot be determined
      31              :  * there. However, __BYTE_ORDER__ is actually being defined later in
      32              :  * this file. So define __BYTE_ORDER__ to skip the check in gcc.h
      33              :  * and undefine after including gcc.h.
      34              :  *
      35              :  * Clang has it defined so there is no need to work around.
      36              :  */
      37              : #ifndef __clang__
      38              : #define __BYTE_ORDER__
      39              : #endif
      40              : 
      41              : #ifdef __clang__
      42              : #include <zephyr/toolchain/llvm.h>
      43              : #else
      44              : #include <zephyr/toolchain/gcc.h>
      45              : #endif
      46              : 
      47              : #ifdef __clang__
      48              : /* For some reasons, xt-clang does not like "%hhd" or "%hd" (for example)
      49              :  * being fed int data (same goes for unsigned ones) and will always complain
      50              :  * about mismatched types. GCC and newer LLVM/Clang do not complain.
      51              :  * This could be due to xt-clang being based on older LLVM/Clang.
      52              :  * So skip the check.
      53              :  */
      54              : #ifdef __printf_like
      55              : #undef __printf_like
      56              : #define __printf_like(f, a)
      57              : #endif
      58              : #endif
      59              : 
      60              : #ifndef __clang__
      61              : #undef __BYTE_ORDER__
      62              : #endif
      63              : 
      64              : #include <stdbool.h>
      65              : 
      66              : #ifndef __INT8_C
      67              : #define __INT8_C(x)     x
      68              : #endif
      69              : 
      70              : #ifndef INT8_C
      71            0 : #define INT8_C(x)       __INT8_C(x)
      72              : #endif
      73              : 
      74              : #ifndef __UINT8_C
      75              : #define __UINT8_C(x)    x ## U
      76              : #endif
      77              : 
      78              : #ifndef UINT8_C
      79            0 : #define UINT8_C(x)      __UINT8_C(x)
      80              : #endif
      81              : 
      82              : #ifndef __INT16_C
      83              : #define __INT16_C(x)    x
      84              : #endif
      85              : 
      86              : #ifndef INT16_C
      87            0 : #define INT16_C(x)      __INT16_C(x)
      88              : #endif
      89              : 
      90              : #ifndef __UINT16_C
      91              : #define __UINT16_C(x)   x ## U
      92              : #endif
      93              : 
      94              : #ifndef UINT16_C
      95            0 : #define UINT16_C(x)     __UINT16_C(x)
      96              : #endif
      97              : 
      98              : #ifndef __INT32_C
      99              : #define __INT32_C(x)    x
     100              : #endif
     101              : 
     102              : #ifndef INT32_C
     103            0 : #define INT32_C(x)      __INT32_C(x)
     104              : #endif
     105              : 
     106              : #ifndef __UINT32_C
     107              : #define __UINT32_C(x)   x ## U
     108              : #endif
     109              : 
     110              : #ifndef UINT32_C
     111            0 : #define UINT32_C(x)     __UINT32_C(x)
     112              : #endif
     113              : 
     114              : #ifndef __INT64_C
     115              : #define __INT64_C(x)    x
     116              : #endif
     117              : 
     118              : #ifndef INT64_C
     119            0 : #define INT64_C(x)      __INT64_C(x)
     120              : #endif
     121              : 
     122              : #ifndef __UINT64_C
     123              : #define __UINT64_C(x)   x ## ULL
     124              : #endif
     125              : 
     126              : #ifndef UINT64_C
     127            0 : #define UINT64_C(x)     __UINT64_C(x)
     128              : #endif
     129              : 
     130              : #ifndef __INTMAX_C
     131              : #define __INTMAX_C(x)   x
     132              : #endif
     133              : 
     134              : #ifndef INTMAX_C
     135            0 : #define INTMAX_C(x)     __INTMAX_C(x)
     136              : #endif
     137              : 
     138              : #ifndef __UINTMAX_C
     139              : #define __UINTMAX_C(x)  x ## ULL
     140              : #endif
     141              : 
     142              : #ifndef UINTMAX_C
     143            0 : #define UINTMAX_C(x)    __UINTMAX_C(x)
     144              : #endif
     145              : 
     146              : #ifndef __COUNTER__
     147              : /* XCC (GCC-based compiler) doesn't support __COUNTER__
     148              :  * but this should be good enough
     149              :  */
     150              : #define __COUNTER__ __LINE__
     151              : #endif
     152              : 
     153              : #ifndef __GCC_LINKER_CMD__
     154              : #include <xtensa/config/core.h>
     155              : 
     156              : /*
     157              :  * XCC does not define the following macros with the expected names, but the
     158              :  * HAL defines similar ones. Thus we include it and define the missing macros
     159              :  * ourselves.
     160              :  */
     161              : #if XCHAL_MEMORY_ORDER == XTHAL_BIGENDIAN
     162              : #define __BYTE_ORDER__          __ORDER_BIG_ENDIAN__
     163              : #elif XCHAL_MEMORY_ORDER == XTHAL_LITTLEENDIAN
     164              : #define __BYTE_ORDER__          __ORDER_LITTLE_ENDIAN__
     165              : #else
     166              : #error "Cannot determine __BYTE_ORDER__"
     167              : #endif
     168              : 
     169              : #endif /* __GCC_LINKER_CMD__ */
     170              : 
     171              : #define __builtin_unreachable() __builtin_trap()
     172              : 
     173              : /* Not a full barrier, just a SW barrier */
     174              : #define __sync_synchronize() do { __asm__ __volatile__ ("" ::: "memory"); } \
     175              :         while (false)
     176              : 
     177              : #endif
        

Generated by: LCOV version 2.0-1