xref: /optee_os/lib/libutils/ext/include/asm.S (revision 181f84921804f9b8e2d24027eca1d916d6e15a44)
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*181f8492SRuchika Gupta#if defined(__aarch64__)
8*181f8492SRuchika Gupta#include <arm64_bti.S>
9*181f8492SRuchika Gupta#endif
10*181f8492SRuchika Gupta
11af432c48SRuchika Gupta#if defined(__aarch64__) && ((defined(__KERNEL__) && defined(CFG_CORE_BTI)) || \
12af432c48SRuchika Gupta			     (!defined(__KERNEL__) && defined(CFG_TA_BTI)))
13af432c48SRuchika Gupta#define BTI(...) __VA_ARGS__
14af432c48SRuchika Gupta#else
15af432c48SRuchika Gupta#define BTI(...)
16af432c48SRuchika Gupta#endif
17af432c48SRuchika Gupta
183513f961SJerome Forissier#if defined(CFG_UNWIND) && defined(__arm__)
19827be46cSJerome Forissier#define UNWIND(...) __VA_ARGS__
20827be46cSJerome Forissier#else
21827be46cSJerome Forissier#define UNWIND(...)
22827be46cSJerome Forissier#endif
23827be46cSJerome Forissier
2403bada66SRuchika Gupta	.macro FUNC name colon section=default align=4 _bti=default
250095acfcSJens Wiklander	.ifc	\section\(),default
268473540dSJens Wiklander	.section .text.\name
270095acfcSJens Wiklander	.else
280095acfcSJens Wiklander	.section \section , "ax" , %progbits
290095acfcSJens Wiklander	.endif
30a0fdab65SJens Wiklander	.global \name
31a0fdab65SJens Wiklander	.type \name , %function
32762a5553SJens Wiklander	.balign \align
33a0fdab65SJens Wiklander	\name \colon
343513f961SJerome ForissierUNWIND(	.fnstart)
3503bada66SRuchika Gupta	.ifc	\_bti\(),default
36af432c48SRuchika GuptaBTI(	bti	c)
3703bada66SRuchika Gupta	.endif
38a0fdab65SJens Wiklander	.endm
39a0fdab65SJens Wiklander
4003bada66SRuchika Gupta	.macro LOCAL_FUNC name colon section=default align=4 _bti=default
410095acfcSJens Wiklander	.ifc	\section\(),default
428473540dSJens Wiklander	.section .text.\name
430095acfcSJens Wiklander	.else
440095acfcSJens Wiklander	.section \section , "ax" , %progbits
450095acfcSJens Wiklander	.endif
46a0fdab65SJens Wiklander	.type \name , %function
47762a5553SJens Wiklander	.balign \align
48a0fdab65SJens Wiklander	\name \colon
493513f961SJerome ForissierUNWIND(	.fnstart)
5003bada66SRuchika Gupta	.ifc	\_bti\(),default
51af432c48SRuchika GuptaBTI(	bti	c)
5203bada66SRuchika Gupta	.endif
53a0fdab65SJens Wiklander	.endm
54a0fdab65SJens Wiklander
5503bada66SRuchika Gupta	.macro WEAK_FUNC name colon section=default align=4 _bti=default
5644a8a0cfSJerome Forissier	.ifc	\section\(),default
5744a8a0cfSJerome Forissier	.section .text.\name
5844a8a0cfSJerome Forissier	.else
5944a8a0cfSJerome Forissier	.section \section , "ax" , %progbits
6044a8a0cfSJerome Forissier	.endif
6144a8a0cfSJerome Forissier	.weak \name
6244a8a0cfSJerome Forissier	.type \name , %function
6344a8a0cfSJerome Forissier	.balign \align
6444a8a0cfSJerome Forissier	\name \colon
6544a8a0cfSJerome ForissierUNWIND(	.fnstart)
6603bada66SRuchika Gupta	.ifc	\_bti\(),default
67af432c48SRuchika GuptaBTI(	bti	c)
6803bada66SRuchika Gupta	.endif
6944a8a0cfSJerome Forissier	.endm
7044a8a0cfSJerome Forissier
71914103c1SJerome Forissier	.macro END_FUNC name
72914103c1SJerome ForissierUNWIND(	.fnend)
73914103c1SJerome Forissier	.size \name , .-\name
74914103c1SJerome Forissier	.endm
75914103c1SJerome Forissier
76914103c1SJerome Forissier	.macro DATA name colon
77914103c1SJerome Forissier	.global \name
78914103c1SJerome Forissier	.type \name , %object
79914103c1SJerome Forissier	\name \colon
80914103c1SJerome Forissier	.endm
81914103c1SJerome Forissier
82a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
83a0fdab65SJens Wiklander	.type \name , %object
84a0fdab65SJens Wiklander	\name \colon
85a0fdab65SJens Wiklander	.endm
86a0fdab65SJens Wiklander
87a0fdab65SJens Wiklander	.macro END_DATA name
88a0fdab65SJens Wiklander	.size \name , .-\name
89a0fdab65SJens Wiklander	.endm
90