xref: /optee_os/lib/libutils/ext/include/asm.S (revision 762a555345c148742d9e586e426884566e6b3f70)
11bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */
2a0fdab65SJens Wiklander/*
3a0fdab65SJens Wiklander * Copyright (c) 2014, STMicroelectronics International N.V.
4*762a5553SJens Wiklander * Copyright (c) 2020, Linaro Limited
5a0fdab65SJens Wiklander */
6a0fdab65SJens Wiklander
73513f961SJerome Forissier#if defined(CFG_UNWIND) && defined(__arm__)
8827be46cSJerome Forissier#define UNWIND(...) __VA_ARGS__
9827be46cSJerome Forissier#else
10827be46cSJerome Forissier#define UNWIND(...)
11827be46cSJerome Forissier#endif
12827be46cSJerome Forissier
13*762a5553SJens Wiklander	.macro FUNC name colon section=default align=4
140095acfcSJens Wiklander	.ifc	\section\(),default
158473540dSJens Wiklander	.section .text.\name
160095acfcSJens Wiklander	.else
170095acfcSJens Wiklander	.section \section , "ax" , %progbits
180095acfcSJens Wiklander	.endif
19a0fdab65SJens Wiklander	.global \name
20a0fdab65SJens Wiklander	.type \name , %function
21*762a5553SJens Wiklander	.balign \align
22a0fdab65SJens Wiklander	\name \colon
233513f961SJerome ForissierUNWIND(	.fnstart)
24a0fdab65SJens Wiklander	.endm
25a0fdab65SJens Wiklander
26a0fdab65SJens Wiklander	.macro DATA name colon
27a0fdab65SJens Wiklander	.global \name
28a0fdab65SJens Wiklander	.type \name , %object
29a0fdab65SJens Wiklander	\name \colon
30a0fdab65SJens Wiklander	.endm
31a0fdab65SJens Wiklander
32*762a5553SJens Wiklander	.macro LOCAL_FUNC name colon section=default align=4
330095acfcSJens Wiklander	.ifc	\section\(),default
348473540dSJens Wiklander	.section .text.\name
350095acfcSJens Wiklander	.else
360095acfcSJens Wiklander	.section \section , "ax" , %progbits
370095acfcSJens Wiklander	.endif
38a0fdab65SJens Wiklander	.type \name , %function
39*762a5553SJens Wiklander	.balign \align
40a0fdab65SJens Wiklander	\name \colon
413513f961SJerome ForissierUNWIND(	.fnstart)
42a0fdab65SJens Wiklander	.endm
43a0fdab65SJens Wiklander
44a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
45a0fdab65SJens Wiklander	.type \name , %object
46a0fdab65SJens Wiklander	\name \colon
47a0fdab65SJens Wiklander	.endm
48a0fdab65SJens Wiklander
49a0fdab65SJens Wiklander	.macro END_DATA name
50a0fdab65SJens Wiklander	.size \name , .-\name
51a0fdab65SJens Wiklander	.endm
52a0fdab65SJens Wiklander
53a0fdab65SJens Wiklander	.macro END_FUNC name
543513f961SJerome ForissierUNWIND(	.fnend)
55a0fdab65SJens Wiklander	.size \name , .-\name
56a0fdab65SJens Wiklander	.endm
57