xref: /optee_os/lib/libutils/ext/include/asm.S (revision 03bada660698e0f3c65a6a19136bfa32eb9bee36)
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
7af432c48SRuchika Gupta#if defined(__aarch64__) && ((defined(__KERNEL__) && defined(CFG_CORE_BTI)) || \
8af432c48SRuchika Gupta			     (!defined(__KERNEL__) && defined(CFG_TA_BTI)))
9af432c48SRuchika Gupta#define BTI(...) __VA_ARGS__
10af432c48SRuchika Gupta#else
11af432c48SRuchika Gupta#define BTI(...)
12af432c48SRuchika Gupta#endif
13af432c48SRuchika Gupta
143513f961SJerome Forissier#if defined(CFG_UNWIND) && defined(__arm__)
15827be46cSJerome Forissier#define UNWIND(...) __VA_ARGS__
16827be46cSJerome Forissier#else
17827be46cSJerome Forissier#define UNWIND(...)
18827be46cSJerome Forissier#endif
19827be46cSJerome Forissier
20*03bada66SRuchika Gupta	.macro FUNC name colon section=default align=4 _bti=default
210095acfcSJens Wiklander	.ifc	\section\(),default
228473540dSJens Wiklander	.section .text.\name
230095acfcSJens Wiklander	.else
240095acfcSJens Wiklander	.section \section , "ax" , %progbits
250095acfcSJens Wiklander	.endif
26a0fdab65SJens Wiklander	.global \name
27a0fdab65SJens Wiklander	.type \name , %function
28762a5553SJens Wiklander	.balign \align
29a0fdab65SJens Wiklander	\name \colon
303513f961SJerome ForissierUNWIND(	.fnstart)
31*03bada66SRuchika Gupta	.ifc	\_bti\(),default
32af432c48SRuchika GuptaBTI(	bti	c)
33*03bada66SRuchika Gupta	.endif
34a0fdab65SJens Wiklander	.endm
35a0fdab65SJens Wiklander
36*03bada66SRuchika Gupta	.macro LOCAL_FUNC name colon section=default align=4 _bti=default
370095acfcSJens Wiklander	.ifc	\section\(),default
388473540dSJens Wiklander	.section .text.\name
390095acfcSJens Wiklander	.else
400095acfcSJens Wiklander	.section \section , "ax" , %progbits
410095acfcSJens Wiklander	.endif
42a0fdab65SJens Wiklander	.type \name , %function
43762a5553SJens Wiklander	.balign \align
44a0fdab65SJens Wiklander	\name \colon
453513f961SJerome ForissierUNWIND(	.fnstart)
46*03bada66SRuchika Gupta	.ifc	\_bti\(),default
47af432c48SRuchika GuptaBTI(	bti	c)
48*03bada66SRuchika Gupta	.endif
49a0fdab65SJens Wiklander	.endm
50a0fdab65SJens Wiklander
51*03bada66SRuchika Gupta	.macro WEAK_FUNC name colon section=default align=4 _bti=default
5244a8a0cfSJerome Forissier	.ifc	\section\(),default
5344a8a0cfSJerome Forissier	.section .text.\name
5444a8a0cfSJerome Forissier	.else
5544a8a0cfSJerome Forissier	.section \section , "ax" , %progbits
5644a8a0cfSJerome Forissier	.endif
5744a8a0cfSJerome Forissier	.weak \name
5844a8a0cfSJerome Forissier	.type \name , %function
5944a8a0cfSJerome Forissier	.balign \align
6044a8a0cfSJerome Forissier	\name \colon
6144a8a0cfSJerome ForissierUNWIND(	.fnstart)
62*03bada66SRuchika Gupta	.ifc	\_bti\(),default
63af432c48SRuchika GuptaBTI(	bti	c)
64*03bada66SRuchika Gupta	.endif
6544a8a0cfSJerome Forissier	.endm
6644a8a0cfSJerome Forissier
67914103c1SJerome Forissier	.macro END_FUNC name
68914103c1SJerome ForissierUNWIND(	.fnend)
69914103c1SJerome Forissier	.size \name , .-\name
70914103c1SJerome Forissier	.endm
71914103c1SJerome Forissier
72914103c1SJerome Forissier	.macro DATA name colon
73914103c1SJerome Forissier	.global \name
74914103c1SJerome Forissier	.type \name , %object
75914103c1SJerome Forissier	\name \colon
76914103c1SJerome Forissier	.endm
77914103c1SJerome Forissier
78a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
79a0fdab65SJens Wiklander	.type \name , %object
80a0fdab65SJens Wiklander	\name \colon
81a0fdab65SJens Wiklander	.endm
82a0fdab65SJens Wiklander
83a0fdab65SJens Wiklander	.macro END_DATA name
84a0fdab65SJens Wiklander	.size \name , .-\name
85a0fdab65SJens Wiklander	.endm
86