xref: /optee_os/lib/libutils/ext/include/asm.S (revision 3f050aedbb8d7897bebb2bb07d58c660d85c3473)
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
7181f8492SRuchika Gupta#if defined(__aarch64__)
8181f8492SRuchika Gupta#include <arm64_bti.S>
997a70d28SAlvin Chang#elif defined(__riscv)
1097a70d28SAlvin Chang#include <riscv.S>
11181f8492SRuchika Gupta#endif
12181f8492SRuchika Gupta
13*3f050aedSJens Wiklander#if defined(__aarch64__) && \
14*3f050aedSJens Wiklander    (((defined(__KERNEL__) || defined(__LDELF__)) && defined(CFG_CORE_BTI)) || \
15*3f050aedSJens Wiklander     (!(defined(__KERNEL__) || defined(__LDELF__)) && defined(CFG_TA_BTI)))
16af432c48SRuchika Gupta#define BTI(...) __VA_ARGS__
17af432c48SRuchika Gupta#else
18af432c48SRuchika Gupta#define BTI(...)
19af432c48SRuchika Gupta#endif
20af432c48SRuchika Gupta
213513f961SJerome Forissier#if defined(CFG_UNWIND) && defined(__arm__)
22827be46cSJerome Forissier#define UNWIND(...) __VA_ARGS__
23827be46cSJerome Forissier#else
24827be46cSJerome Forissier#define UNWIND(...)
25827be46cSJerome Forissier#endif
26827be46cSJerome Forissier
2703bada66SRuchika Gupta	.macro FUNC name colon section=default align=4 _bti=default
280095acfcSJens Wiklander	.ifc	\section\(),default
298473540dSJens Wiklander	.section .text.\name
300095acfcSJens Wiklander	.else
310095acfcSJens Wiklander	.section \section , "ax" , %progbits
320095acfcSJens Wiklander	.endif
33a0fdab65SJens Wiklander	.global \name
34a0fdab65SJens Wiklander	.type \name , %function
35762a5553SJens Wiklander	.balign \align
36a0fdab65SJens Wiklander	\name \colon
373513f961SJerome ForissierUNWIND(	.fnstart)
3803bada66SRuchika Gupta	.ifc	\_bti\(),default
39af432c48SRuchika GuptaBTI(	bti	c)
4003bada66SRuchika Gupta	.endif
41a0fdab65SJens Wiklander	.endm
42a0fdab65SJens Wiklander
4303bada66SRuchika Gupta	.macro LOCAL_FUNC name colon section=default align=4 _bti=default
440095acfcSJens Wiklander	.ifc	\section\(),default
458473540dSJens Wiklander	.section .text.\name
460095acfcSJens Wiklander	.else
470095acfcSJens Wiklander	.section \section , "ax" , %progbits
480095acfcSJens Wiklander	.endif
49a0fdab65SJens Wiklander	.type \name , %function
50762a5553SJens Wiklander	.balign \align
51a0fdab65SJens Wiklander	\name \colon
523513f961SJerome ForissierUNWIND(	.fnstart)
5303bada66SRuchika Gupta	.ifc	\_bti\(),default
54af432c48SRuchika GuptaBTI(	bti	c)
5503bada66SRuchika Gupta	.endif
56a0fdab65SJens Wiklander	.endm
57a0fdab65SJens Wiklander
5803bada66SRuchika Gupta	.macro WEAK_FUNC name colon section=default align=4 _bti=default
5944a8a0cfSJerome Forissier	.ifc	\section\(),default
6044a8a0cfSJerome Forissier	.section .text.\name
6144a8a0cfSJerome Forissier	.else
6244a8a0cfSJerome Forissier	.section \section , "ax" , %progbits
6344a8a0cfSJerome Forissier	.endif
6444a8a0cfSJerome Forissier	.weak \name
6544a8a0cfSJerome Forissier	.type \name , %function
6644a8a0cfSJerome Forissier	.balign \align
6744a8a0cfSJerome Forissier	\name \colon
6844a8a0cfSJerome ForissierUNWIND(	.fnstart)
6903bada66SRuchika Gupta	.ifc	\_bti\(),default
70af432c48SRuchika GuptaBTI(	bti	c)
7103bada66SRuchika Gupta	.endif
7244a8a0cfSJerome Forissier	.endm
7344a8a0cfSJerome Forissier
74914103c1SJerome Forissier	.macro END_FUNC name
75914103c1SJerome ForissierUNWIND(	.fnend)
76914103c1SJerome Forissier	.size \name , .-\name
77914103c1SJerome Forissier	.endm
78914103c1SJerome Forissier
79914103c1SJerome Forissier	.macro DATA name colon
80914103c1SJerome Forissier	.global \name
81914103c1SJerome Forissier	.type \name , %object
82914103c1SJerome Forissier	\name \colon
83914103c1SJerome Forissier	.endm
84914103c1SJerome Forissier
85a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
86a0fdab65SJens Wiklander	.type \name , %object
87a0fdab65SJens Wiklander	\name \colon
88a0fdab65SJens Wiklander	.endm
89a0fdab65SJens Wiklander
90a0fdab65SJens Wiklander	.macro END_DATA name
91a0fdab65SJens Wiklander	.size \name , .-\name
92a0fdab65SJens Wiklander	.endm
93