xref: /optee_os/lib/libutils/ext/include/asm.S (revision 3513f961cda064f90d10f7de72af6330427a2013)
11bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */
2a0fdab65SJens Wiklander/*
3a0fdab65SJens Wiklander * Copyright (c) 2014, STMicroelectronics International N.V.
4a0fdab65SJens Wiklander */
5a0fdab65SJens Wiklander
6*3513f961SJerome Forissier#if defined(CFG_UNWIND) && defined(__arm__)
7827be46cSJerome Forissier#define UNWIND(...) __VA_ARGS__
8827be46cSJerome Forissier#else
9827be46cSJerome Forissier#define UNWIND(...)
10827be46cSJerome Forissier#endif
11827be46cSJerome Forissier
120095acfcSJens Wiklander	.macro FUNC name colon section=default
130095acfcSJens Wiklander	.ifc	\section\(),default
148473540dSJens Wiklander	.section .text.\name
150095acfcSJens Wiklander	.else
160095acfcSJens Wiklander	.section \section , "ax" , %progbits
170095acfcSJens Wiklander	.endif
18a0fdab65SJens Wiklander	.global \name
19a0fdab65SJens Wiklander	.type \name , %function
20ff7c2da6SJerome Forissier	.balign 4
21a0fdab65SJens Wiklander	\name \colon
22*3513f961SJerome ForissierUNWIND(	.fnstart)
23a0fdab65SJens Wiklander	.endm
24a0fdab65SJens Wiklander
25a0fdab65SJens Wiklander	.macro DATA name colon
26a0fdab65SJens Wiklander	.global \name
27a0fdab65SJens Wiklander	.type \name , %object
28a0fdab65SJens Wiklander	\name \colon
29a0fdab65SJens Wiklander	.endm
30a0fdab65SJens Wiklander
310095acfcSJens Wiklander	.macro LOCAL_FUNC name colon section=default
320095acfcSJens Wiklander	.ifc	\section\(),default
338473540dSJens Wiklander	.section .text.\name
340095acfcSJens Wiklander	.else
350095acfcSJens Wiklander	.section \section , "ax" , %progbits
360095acfcSJens Wiklander	.endif
37a0fdab65SJens Wiklander	.type \name , %function
38ff7c2da6SJerome Forissier	.balign 4
39a0fdab65SJens Wiklander	\name \colon
40*3513f961SJerome ForissierUNWIND(	.fnstart)
41a0fdab65SJens Wiklander	.endm
42a0fdab65SJens Wiklander
43a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
44a0fdab65SJens Wiklander	.type \name , %object
45a0fdab65SJens Wiklander	\name \colon
46a0fdab65SJens Wiklander	.endm
47a0fdab65SJens Wiklander
48a0fdab65SJens Wiklander	.macro END_DATA name
49a0fdab65SJens Wiklander	.size \name , .-\name
50a0fdab65SJens Wiklander	.endm
51a0fdab65SJens Wiklander
52a0fdab65SJens Wiklander	.macro END_FUNC name
53*3513f961SJerome ForissierUNWIND(	.fnend)
54a0fdab65SJens Wiklander	.size \name , .-\name
55a0fdab65SJens Wiklander	.endm
56