/* * Copyright (c) 2020 Synopsys. * Author: Eugeniy Paltsev * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_ #define ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_ #ifndef _LINKER #if defined(_ASMLANGUAGE) #include #define FUNC_CODE() #define FUNC_INSTR(a) .macro section_var_mwdt, section, symbol .section .\§ion\&.\&symbol, "aw" symbol : .endm .macro section_func_mwdt, section, symbol .section .\§ion\&.\&symbol, "ax" FUNC_CODE() PERFOPT_ALIGN symbol : FUNC_INSTR(symbol) .endm .macro section_subsec_func_mwdt, section, subsection, symbol .section .\§ion\&.\&subsection, "ax" PERFOPT_ALIGN symbol : .endm #define SECTION_VAR(sect, sym) section_var_mwdt sect, sym #define SECTION_FUNC(sect, sym) section_func_mwdt sect, sym #define SECTION_SUBSEC_FUNC(sect, subsec, sym) \ section_subsec_func_mwdt sect, subsec, sym .macro glbl_text_mwdt, symbol .globl symbol .type symbol, @function .endm .macro glbl_data_mwdt, symbol .globl symbol .type symbol, @object .endm .macro weak_data_mwdt, symbol .weak symbol .type symbol, @object .endm #define GTEXT(sym) glbl_text_mwdt sym #define GDATA(sym) glbl_data_mwdt sym #define WDATA(sym) weak_data_mwdt sym #else /* defined(_ASMLANGUAGE) */ /* MWDT toolchain misses ssize_t definition which is used by Zephyr */ #ifndef _SSIZE_T_DEFINED #define _SSIZE_T_DEFINED #ifdef CONFIG_64BIT typedef long ssize_t; #else typedef int ssize_t; #endif #endif /* _SSIZE_T_DEFINED */ #ifdef CONFIG_NEWLIB_LIBC #error "ARC MWDT doesn't support building with CONFIG_NEWLIB_LIBC as it doesn't have newlib" #endif /* CONFIG_NEWLIB_LIBC */ #ifdef CONFIG_NATIVE_APPLICATION #error "ARC MWDT doesn't support building Zephyr as an native application" #endif /* CONFIG_NATIVE_APPLICATION */ #define __no_optimization __attribute__((optnone)) #include #undef BUILD_ASSERT #ifdef __cplusplus #define BUILD_ASSERT(EXPR, MSG...) static_assert(EXPR, "" MSG) #else #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG) #endif #define __builtin_arc_nop() _nop() #endif /* _ASMLANGUAGE */ #endif /* !_LINKER */ #endif /* ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_ */