MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxCsslAssembly.h
1/*--------------------------------------------------------------------------*/
2/* Copyright 2024-2025 NXP */
3/* */
4/* SPDX-License-Identifier: BSD-3-Clause */
5/* */
6/* Redistribution and use in source and binary forms, with or without */
7/* modification, are permitted provided that the following conditions are */
8/* met: */
9/* */
10/* 1. Redistributions of source code must retain the above copyright */
11/* notice, this list of conditions and the following disclaimer. */
12/* */
13/* 2. Redistributions in binary form must reproduce the above copyright */
14/* notice, this list of conditions and the following disclaimer in the */
15/* documentation and/or other materials provided with the distribution. */
16/* */
17/* 3. Neither the name of the copyright holder nor the names of its */
18/* contributors may be used to endorse or promote products derived from */
19/* this software without specific prior written permission. */
20/* */
21/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS */
22/* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
23/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
24/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
25/* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
26/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
27/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR */
28/* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
29/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
30/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
31/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
32/*--------------------------------------------------------------------------*/
33
34#ifndef MCUX_CSSL_ASSEMBLY_H_
35#define MCUX_CSSL_ASSEMBLY_H_
36
38
39/* for armclang */
40#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
41#define MCUX_CSSL_ASM_LABEL(name) \
42 name:
43
44#define MCUX_CSSL_ASM_FILE_START() \
45 .syntax unified
46
47#define MCUX_CSSL_ASM_FILE_END()
48
49#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
50 .align 2
51
52#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
53 .section MCUX_CSSL_CPP_CAT(.text.,name)
54
55#define MCUX_CSSL_ASM_FUNC_SYMBOL_GLOBAL(name) \
56 .global name
57
58#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
59 .type name,"function"
60
61#define MCUX_CSSL_ASM_FUNC_START(name) \
62 MCUX_CSSL_ASM_LABEL(name)
63
64#define MCUX_CSSL_ASM_FUNC_END(name)
65
66
67/* for llvm */
68#elif defined ( __clang__ )
69#define MCUX_CSSL_ASM_LABEL(name) \
70 name:
71
72#define MCUX_CSSL_ASM_FILE_START() \
73 .syntax unified
74
75#define MCUX_CSSL_ASM_FILE_END()
76
77#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
78 .align 2
79
80#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
81 .section MCUX_CSSL_CPP_CAT(.text.,name)
82
83#define MCUX_CSSL_ASM_FUNC_SYMBOL_GLOBAL(name) \
84 .global name
85
86#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
87 .type name,"function"
88
89#define MCUX_CSSL_ASM_FUNC_START(name) \
90 MCUX_CSSL_ASM_LABEL(name)
91
92#define MCUX_CSSL_ASM_FUNC_END(name)
93
94/* using the gcc toolchain file for both gcc and armgcc */
95#elif defined ( __GNUC__ )
96#define MCUX_CSSL_ASM_LABEL(name) \
97 name:
98
99#define MCUX_CSSL_ASM_FILE_START() \
100 .syntax unified
101
102#define MCUX_CSSL_ASM_FILE_END()
103
104#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
105 .align 2
106
107#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
108 .section MCUX_CSSL_CPP_CAT(.text.,name)
109
110#define MCUX_CSSL_ASM_FUNC_SYMBOL_GLOBAL(name) \
111 .global name
112
113#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
114 .type name,"function"
115
116#define MCUX_CSSL_ASM_FUNC_START(name) \
117 MCUX_CSSL_ASM_LABEL(name)
118
119#define MCUX_CSSL_ASM_FUNC_END(name)
120
121/* for armcc compiler */
122#elif defined ( __CC_ARM )
123#define MCUX_CSSL_ASM_FILE_START()
124
125#define MCUX_CSSL_ASM_FILE_END() \
126 MCUX_CSSL_CPP_EMPTY() END
127
128#define MCUX_CSSL_ASM_LABEL(name) \
129 name
130
131#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
132 MCUX_CSSL_CPP_EMPTY() AREA MCUX_CSSL_CPP_CAT3(|i.,name,|), CODE, ALIGN=4
133
134#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
135 MCUX_CSSL_CPP_EMPTY() ALIGN
136
137#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
138 MCUX_CSSL_CPP_EMPTY() EXPORT name
139
140#define MCUX_CSSL_ASM_FUNC_START(name) \
141 MCUX_CSSL_ASM_LABEL(name) FUNCTION
142
143#define MCUX_CSSL_ASM_FUNC_END(name) \
144 MCUX_CSSL_CPP_EMPTY() ENDFUNC
145
146/* for ghs compiler */
147#elif defined ( __ghs__ )
148#define MCUX_CSSL_ASM_LABEL(name) \
149 name:
150
151#define MCUX_CSSL_ASM_FILE_START()
152
153#define MCUX_CSSL_ASM_FILE_END()
154
155#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
156 .align 2
157
158#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
159 .section MCUX_CSSL_CPP_CAT(.text.,name), "ax"
160
161#define MCUX_CSSL_ASM_FUNC_SYMBOL_GLOBAL(name) \
162 .global name
163
164#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
165 .type name, $function
166
167#define MCUX_CSSL_ASM_FUNC_START(name) \
168 name::
169
170#define MCUX_CSSL_ASM_FUNC_END(name)
171
172/* for iar compiler */
173#elif defined ( __ICCARM__ ) || defined ( __IASMARM__ )
174#define MCUX_CSSL_ASM_LABEL(name) \
175 name:
176
177#define MCUX_CSSL_ASM_FILE_START() \
178
179
180#define MCUX_CSSL_ASM_FILE_END() \
181 MCUX_CSSL_CPP_EMPTY() END
182
183#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
184 MCUX_CSSL_CPP_EMPTY() THUMB
185
186#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
187 MCUX_CSSL_CPP_EMPTY() SECTION .text:CODE(2)
188
189#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
190 MCUX_CSSL_CPP_EMPTY() PUBLIC name
191
192#define MCUX_CSSL_ASM_FUNC_START(name) \
193 MCUX_CSSL_ASM_LABEL(name)
194
195#define MCUX_CSSL_ASM_FUNC_END(name)
196
197#define MCUX_CSSL_ASM_FUNC_SYMBOL_GLOBAL(name)
198
199#else
200#error Unsupported assembler
201#endif
202
203#endif /* MCUX_CSSL_ASSEMBLY_H_ */
The default implementation is based on standard C preprocessor functionality.