8#ifndef ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_
9#define ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_
11#ifndef ZEPHYR_INCLUDE_TOOLCHAIN_H_
12#error Please do not include toolchain-specific headers directly, use <zephyr/toolchain.h> instead
16#if defined(_ASMLANGUAGE)
23#ifdef __MW_ASM_RV_MACRO__
24.macro section_var_mwdt, section, symbol
25 .section \section().\symbol,
"aw"
29.macro section_func_mwdt, section, symbol
30 .section \section().\symbol,
"ax"
37.macro section_subsec_func_mwdt, section, subsection, symbol
38 .section \section().\subsection, "ax"
43.macro section_var_mwdt, section, symbol
44 .section .\§ion\&.\&symbol,
"aw"
48.macro section_func_mwdt, section, symbol
49 .section .\§ion\&.\&symbol,
"ax"
56.macro section_subsec_func_mwdt, section, subsection, symbol
57 .section .\§ion\&.\&subsection, "ax"
63#define SECTION_VAR(sect, sym) section_var_mwdt sect, sym
64#define SECTION_FUNC(sect, sym) section_func_mwdt sect, sym
65#define SECTION_SUBSEC_FUNC(sect, subsec, sym) \
66 section_subsec_func_mwdt sect, subsec, sym
68#ifdef __MW_ASM_RV_MACRO__
69.macro glbl_text_mwdt, symbol
71 .type \symbol, @function
74.macro glbl_data_mwdt, symbol
76 .type \symbol, @
object
79.macro weak_data_mwdt, symbol
81 .type \symbol, @
object
84.macro weak_text_mwdt, symbol
86 .type \symbol, @function
89.macro glbl_text_mwdt, symbol
91 .type symbol, @function
94.macro glbl_data_mwdt, symbol
99.macro weak_data_mwdt, symbol
101 .type symbol, @
object
104.macro weak_text_mwdt, symbol
106 .type symbol, @function
110#define GTEXT(sym) glbl_text_mwdt sym
111#define GDATA(sym) glbl_data_mwdt sym
112#define WDATA(sym) weak_data_mwdt sym
113#define WTEXT(sym) weak_text_mwdt sym
117#ifdef CONFIG_NEWLIB_LIBC
118 #error "ARC MWDT doesn't support building with CONFIG_NEWLIB_LIBC as it doesn't have newlib"
121#ifdef CONFIG_NATIVE_APPLICATION
122 #error "ARC MWDT doesn't support building Zephyr as an native application"
126#define __no_optimization __attribute__((optnone))
127#define __fallthrough __attribute__((fallthrough))
129#define TOOLCHAIN_HAS_C_GENERIC 1
130#define TOOLCHAIN_HAS_C_AUTO_TYPE 1
135#if defined(__cplusplus) && (__cplusplus >= 201103L)
136#define BUILD_ASSERT(EXPR, MSG...) static_assert(EXPR, "" MSG)
137#elif defined(__cplusplus)
139#define BUILD_ASSERT(EXPR, MSG...)
141#define BUILD_ASSERT(EXPR, MSG...) _Static_assert((EXPR), "" MSG)
144#define __builtin_arc_nop() _nop()
GCC toolchain abstraction.