14#ifndef MCUX_CSSL_ASSEMBLY_H_
15#define MCUX_CSSL_ASSEMBLY_H_
20#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
21#define MCUX_CSSL_ASM_LABEL(name) \
24#define MCUX_CSSL_ASM_FILE_START() \
27#define MCUX_CSSL_ASM_FILE_END()
29#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
32#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
33 .section MCUX_CSSL_CPP_CAT(.text.,name)
35#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
38#define MCUX_CSSL_ASM_FUNC_START(name) \
39 MCUX_CSSL_ASM_LABEL(name)
41#define MCUX_CSSL_ASM_FUNC_END(name)
45#elif defined ( __clang__ )
46#define MCUX_CSSL_ASM_LABEL(name) \
49#define MCUX_CSSL_ASM_FILE_START() \
52#define MCUX_CSSL_ASM_FILE_END()
54#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
57#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
58 .section MCUX_CSSL_CPP_CAT(.text.,name)
60#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
63#define MCUX_CSSL_ASM_FUNC_START(name) \
64 MCUX_CSSL_ASM_LABEL(name)
66#define MCUX_CSSL_ASM_FUNC_END(name)
69#elif defined ( __GNUC__ )
70#define MCUX_CSSL_ASM_LABEL(name) \
73#define MCUX_CSSL_ASM_FILE_START() \
76#define MCUX_CSSL_ASM_FILE_END()
78#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
81#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
82 .section MCUX_CSSL_CPP_CAT(.text.,name)
84#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
87#define MCUX_CSSL_ASM_FUNC_START(name) \
88 MCUX_CSSL_ASM_LABEL(name)
90#define MCUX_CSSL_ASM_FUNC_END(name)
93#elif defined ( __CC_ARM )
94#define MCUX_CSSL_ASM_FILE_START()
96#define MCUX_CSSL_ASM_FILE_END() \
97 MCUX_CSSL_CPP_EMPTY() END
99#define MCUX_CSSL_ASM_LABEL(name) \
102#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
103 MCUX_CSSL_CPP_EMPTY() AREA MCUX_CSSL_CPP_CAT3(|i.,name,|), CODE, ALIGN=4
105#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
106 MCUX_CSSL_CPP_EMPTY() ALIGN
108#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
109 MCUX_CSSL_CPP_EMPTY() EXPORT name
111#define MCUX_CSSL_ASM_FUNC_START(name) \
112 MCUX_CSSL_ASM_LABEL(name) FUNCTION
114#define MCUX_CSSL_ASM_FUNC_END(name) \
115 MCUX_CSSL_CPP_EMPTY() ENDFUNC
118#elif defined ( __ghs__ )
119#define MCUX_CSSL_ASM_LABEL(name) \
122#define MCUX_CSSL_ASM_FILE_START()
124#define MCUX_CSSL_ASM_FILE_END()
126#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
129#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
130 .section MCUX_CSSL_CPP_CAT(.text.,name), "ax"
132#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
133 .type name, $function
135#define MCUX_CSSL_ASM_FUNC_START(name) \
138#define MCUX_CSSL_ASM_FUNC_END(name)
141#elif defined ( __ICCARM__ ) || defined ( __IASMARM__ )
142#define MCUX_CSSL_ASM_LABEL(name) \
145#define MCUX_CSSL_ASM_FILE_START() \
148#define MCUX_CSSL_ASM_FILE_END() \
149 MCUX_CSSL_CPP_EMPTY() END
151#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
152 MCUX_CSSL_CPP_EMPTY() THUMB
154#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
155 MCUX_CSSL_CPP_EMPTY() SECTION .text:CODE(2)
157#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
158 MCUX_CSSL_CPP_EMPTY() PUBLIC name
160#define MCUX_CSSL_ASM_FUNC_START(name) \
161 MCUX_CSSL_ASM_LABEL(name)
163#define MCUX_CSSL_ASM_FUNC_END(name)
166#error Unsupported assembler
The default implementation is based on standard C preprocessor functionality.