123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*
- * Copyright (c) 2020 Synopsys.
- * Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #ifndef ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_
- #define ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_
- #ifndef _LINKER
- #if defined(_ASMLANGUAGE)
- #include <toolchain/common.h>
- #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 <toolchain/gcc.h>
- /* Metaware toolchain has _Static_assert. However it not able to calculate
- * conditional expression in build time for some realy complex cases. ARC GNU
- * toolchain works fine in this cases, so it looks like MWDT bug. So, disable
- * BUILD_ASSERT macro until we fix that issue in MWDT toolchain.
- */
- #undef BUILD_ASSERT
- #define BUILD_ASSERT(EXPR, MSG...)
- #define __builtin_arc_nop() _nop()
- #endif /* _ASMLANGUAGE */
- #endif /* !_LINKER */
- #endif /* ZEPHYR_INCLUDE_TOOLCHAIN_MWDT_H_ */
|