MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxCsslAssembly.h
1/*--------------------------------------------------------------------------*/
2/* Copyright 2024-2025 NXP */
3/* */
4/* NXP Confidential and Proprietary. This software is owned or controlled */
5/* by NXP and may only be used strictly in accordance with the applicable */
6/* license terms. By expressly accepting such terms or by downloading, */
7/* installing, activating and/or otherwise using the software, you are */
8/* agreeing that you have read, and that you agree to comply with and are */
9/* bound by, such license terms. If you do not agree to be bound by the */
10/* applicable license terms, then you may not retain, install, activate or */
11/* otherwise use the software. */
12/*--------------------------------------------------------------------------*/
13
14#ifndef MCUX_CSSL_ASSEMBLY_H_
15#define MCUX_CSSL_ASSEMBLY_H_
16
18
19/* for armclang */
20#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
21#define MCUX_CSSL_ASM_LABEL(name) \
22 name:
23
24#define MCUX_CSSL_ASM_FILE_START() \
25 .syntax unified
26
27#define MCUX_CSSL_ASM_FILE_END()
28
29#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
30 .align 2
31
32#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
33 .section MCUX_CSSL_CPP_CAT(.text.,name)
34
35#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
36 .type name,"function"
37
38#define MCUX_CSSL_ASM_FUNC_START(name) \
39 MCUX_CSSL_ASM_LABEL(name)
40
41#define MCUX_CSSL_ASM_FUNC_END(name)
42
43
44/* for llvm */
45#elif defined ( __clang__ )
46#define MCUX_CSSL_ASM_LABEL(name) \
47 name:
48
49#define MCUX_CSSL_ASM_FILE_START() \
50 .syntax unified
51
52#define MCUX_CSSL_ASM_FILE_END()
53
54#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
55 .align 2
56
57#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
58 .section MCUX_CSSL_CPP_CAT(.text.,name)
59
60#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
61 .type name,"function"
62
63#define MCUX_CSSL_ASM_FUNC_START(name) \
64 MCUX_CSSL_ASM_LABEL(name)
65
66#define MCUX_CSSL_ASM_FUNC_END(name)
67
68/* using the gcc toolchain file for both gcc and armgcc */
69#elif defined ( __GNUC__ )
70#define MCUX_CSSL_ASM_LABEL(name) \
71 name:
72
73#define MCUX_CSSL_ASM_FILE_START() \
74 .syntax unified
75
76#define MCUX_CSSL_ASM_FILE_END()
77
78#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
79 .align 2
80
81#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
82 .section MCUX_CSSL_CPP_CAT(.text.,name)
83
84#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
85 .type name,"function"
86
87#define MCUX_CSSL_ASM_FUNC_START(name) \
88 MCUX_CSSL_ASM_LABEL(name)
89
90#define MCUX_CSSL_ASM_FUNC_END(name)
91
92/* for armcc compiler */
93#elif defined ( __CC_ARM )
94#define MCUX_CSSL_ASM_FILE_START()
95
96#define MCUX_CSSL_ASM_FILE_END() \
97 MCUX_CSSL_CPP_EMPTY() END
98
99#define MCUX_CSSL_ASM_LABEL(name) \
100 name
101
102#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
103 MCUX_CSSL_CPP_EMPTY() AREA MCUX_CSSL_CPP_CAT3(|i.,name,|), CODE, ALIGN=4
104
105#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
106 MCUX_CSSL_CPP_EMPTY() ALIGN
107
108#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
109 MCUX_CSSL_CPP_EMPTY() EXPORT name
110
111#define MCUX_CSSL_ASM_FUNC_START(name) \
112 MCUX_CSSL_ASM_LABEL(name) FUNCTION
113
114#define MCUX_CSSL_ASM_FUNC_END(name) \
115 MCUX_CSSL_CPP_EMPTY() ENDFUNC
116
117/* for ghs compiler */
118#elif defined ( __ghs__ )
119#define MCUX_CSSL_ASM_LABEL(name) \
120 name:
121
122#define MCUX_CSSL_ASM_FILE_START()
123
124#define MCUX_CSSL_ASM_FILE_END()
125
126#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
127 .align 2
128
129#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
130 .section MCUX_CSSL_CPP_CAT(.text.,name), "ax"
131
132#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
133 .type name, $function
134
135#define MCUX_CSSL_ASM_FUNC_START(name) \
136 name::
137
138#define MCUX_CSSL_ASM_FUNC_END(name)
139
140/* for iar compiler */
141#elif defined ( __ICCARM__ ) || defined ( __IASMARM__ )
142#define MCUX_CSSL_ASM_LABEL(name) \
143 name:
144
145#define MCUX_CSSL_ASM_FILE_START() \
146
147
148#define MCUX_CSSL_ASM_FILE_END() \
149 MCUX_CSSL_CPP_EMPTY() END
150
151#define MCUX_CSSL_ASM_FUNC_ALIGNMENT() \
152 MCUX_CSSL_CPP_EMPTY() THUMB
153
154#define MCUX_CSSL_ASM_FUNC_SECTION(name) \
155 MCUX_CSSL_CPP_EMPTY() SECTION .text:CODE(2)
156
157#define MCUX_CSSL_ASM_FUNC_SYMBOL(name) \
158 MCUX_CSSL_CPP_EMPTY() PUBLIC name
159
160#define MCUX_CSSL_ASM_FUNC_START(name) \
161 MCUX_CSSL_ASM_LABEL(name)
162
163#define MCUX_CSSL_ASM_FUNC_END(name)
164
165#else
166#error Unsupported assembler
167#endif
168
169#endif /* MCUX_CSSL_ASSEMBLY_H_ */
The default implementation is based on standard C preprocessor functionality.