xref: /optee_os/lib/libutils/ext/include/asm.S (revision 914103c122c1ab0abd702c0ec99d9863c9ca9c7a)
11bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */
2a0fdab65SJens Wiklander/*
3a0fdab65SJens Wiklander * Copyright (c) 2014, STMicroelectronics International N.V.
4762a5553SJens 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
13762a5553SJens 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
21762a5553SJens Wiklander	.balign \align
22a0fdab65SJens Wiklander	\name \colon
233513f961SJerome ForissierUNWIND(	.fnstart)
24a0fdab65SJens Wiklander	.endm
25a0fdab65SJens Wiklander
26762a5553SJens Wiklander	.macro LOCAL_FUNC name colon section=default align=4
270095acfcSJens Wiklander	.ifc	\section\(),default
288473540dSJens Wiklander	.section .text.\name
290095acfcSJens Wiklander	.else
300095acfcSJens Wiklander	.section \section , "ax" , %progbits
310095acfcSJens Wiklander	.endif
32a0fdab65SJens Wiklander	.type \name , %function
33762a5553SJens Wiklander	.balign \align
34a0fdab65SJens Wiklander	\name \colon
353513f961SJerome ForissierUNWIND(	.fnstart)
36a0fdab65SJens Wiklander	.endm
37a0fdab65SJens Wiklander
38*914103c1SJerome Forissier	.macro END_FUNC name
39*914103c1SJerome ForissierUNWIND(	.fnend)
40*914103c1SJerome Forissier	.size \name , .-\name
41*914103c1SJerome Forissier	.endm
42*914103c1SJerome Forissier
43*914103c1SJerome Forissier	.macro DATA name colon
44*914103c1SJerome Forissier	.global \name
45*914103c1SJerome Forissier	.type \name , %object
46*914103c1SJerome Forissier	\name \colon
47*914103c1SJerome Forissier	.endm
48*914103c1SJerome Forissier
49a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
50a0fdab65SJens Wiklander	.type \name , %object
51a0fdab65SJens Wiklander	\name \colon
52a0fdab65SJens Wiklander	.endm
53a0fdab65SJens Wiklander
54a0fdab65SJens Wiklander	.macro END_DATA name
55a0fdab65SJens Wiklander	.size \name , .-\name
56a0fdab65SJens Wiklander	.endm
57