xref: /optee_os/lib/libutils/ext/include/asm.S (revision af432c48741cd34f059aebb9d2ba9a24823e9255)
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
7*af432c48SRuchika Gupta#if defined(__aarch64__) && ((defined(__KERNEL__) && defined(CFG_CORE_BTI)) || \
8*af432c48SRuchika Gupta			     (!defined(__KERNEL__) && defined(CFG_TA_BTI)))
9*af432c48SRuchika Gupta#define BTI(...) __VA_ARGS__
10*af432c48SRuchika Gupta#else
11*af432c48SRuchika Gupta#define BTI(...)
12*af432c48SRuchika Gupta#endif
13*af432c48SRuchika 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
20762a5553SJens Wiklander	.macro FUNC name colon section=default align=4
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*af432c48SRuchika GuptaBTI(	bti	c)
32a0fdab65SJens Wiklander	.endm
33a0fdab65SJens Wiklander
34762a5553SJens Wiklander	.macro LOCAL_FUNC name colon section=default align=4
350095acfcSJens Wiklander	.ifc	\section\(),default
368473540dSJens Wiklander	.section .text.\name
370095acfcSJens Wiklander	.else
380095acfcSJens Wiklander	.section \section , "ax" , %progbits
390095acfcSJens Wiklander	.endif
40a0fdab65SJens Wiklander	.type \name , %function
41762a5553SJens Wiklander	.balign \align
42a0fdab65SJens Wiklander	\name \colon
433513f961SJerome ForissierUNWIND(	.fnstart)
44*af432c48SRuchika GuptaBTI(	bti	c)
45a0fdab65SJens Wiklander	.endm
46a0fdab65SJens Wiklander
4744a8a0cfSJerome Forissier	.macro WEAK_FUNC name colon section=default align=4
4844a8a0cfSJerome Forissier	.ifc	\section\(),default
4944a8a0cfSJerome Forissier	.section .text.\name
5044a8a0cfSJerome Forissier	.else
5144a8a0cfSJerome Forissier	.section \section , "ax" , %progbits
5244a8a0cfSJerome Forissier	.endif
5344a8a0cfSJerome Forissier	.weak \name
5444a8a0cfSJerome Forissier	.type \name , %function
5544a8a0cfSJerome Forissier	.balign \align
5644a8a0cfSJerome Forissier	\name \colon
5744a8a0cfSJerome ForissierUNWIND(	.fnstart)
58*af432c48SRuchika GuptaBTI(	bti	c)
5944a8a0cfSJerome Forissier	.endm
6044a8a0cfSJerome Forissier
61914103c1SJerome Forissier	.macro END_FUNC name
62914103c1SJerome ForissierUNWIND(	.fnend)
63914103c1SJerome Forissier	.size \name , .-\name
64914103c1SJerome Forissier	.endm
65914103c1SJerome Forissier
66914103c1SJerome Forissier	.macro DATA name colon
67914103c1SJerome Forissier	.global \name
68914103c1SJerome Forissier	.type \name , %object
69914103c1SJerome Forissier	\name \colon
70914103c1SJerome Forissier	.endm
71914103c1SJerome Forissier
72a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
73a0fdab65SJens Wiklander	.type \name , %object
74a0fdab65SJens Wiklander	\name \colon
75a0fdab65SJens Wiklander	.endm
76a0fdab65SJens Wiklander
77a0fdab65SJens Wiklander	.macro END_DATA name
78a0fdab65SJens Wiklander	.size \name , .-\name
79a0fdab65SJens Wiklander	.endm
80