xref: /optee_os/lib/libutils/ext/include/asm.S (revision 97a70d2878391ffa1631597cc2ba7cfbe504555b)
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>
9*97a70d28SAlvin Chang#elif defined(__riscv)
10*97a70d28SAlvin Chang#include <riscv.S>
11181f8492SRuchika Gupta#endif
12181f8492SRuchika Gupta
13af432c48SRuchika Gupta#if defined(__aarch64__) && ((defined(__KERNEL__) && defined(CFG_CORE_BTI)) || \
14af432c48SRuchika Gupta			     (!defined(__KERNEL__) && defined(CFG_TA_BTI)))
15af432c48SRuchika Gupta#define BTI(...) __VA_ARGS__
16af432c48SRuchika Gupta#else
17af432c48SRuchika Gupta#define BTI(...)
18af432c48SRuchika Gupta#endif
19af432c48SRuchika Gupta
203513f961SJerome Forissier#if defined(CFG_UNWIND) && defined(__arm__)
21827be46cSJerome Forissier#define UNWIND(...) __VA_ARGS__
22827be46cSJerome Forissier#else
23827be46cSJerome Forissier#define UNWIND(...)
24827be46cSJerome Forissier#endif
25827be46cSJerome Forissier
2603bada66SRuchika Gupta	.macro FUNC name colon section=default align=4 _bti=default
270095acfcSJens Wiklander	.ifc	\section\(),default
288473540dSJens Wiklander	.section .text.\name
290095acfcSJens Wiklander	.else
300095acfcSJens Wiklander	.section \section , "ax" , %progbits
310095acfcSJens Wiklander	.endif
32a0fdab65SJens Wiklander	.global \name
33a0fdab65SJens Wiklander	.type \name , %function
34762a5553SJens Wiklander	.balign \align
35a0fdab65SJens Wiklander	\name \colon
363513f961SJerome ForissierUNWIND(	.fnstart)
3703bada66SRuchika Gupta	.ifc	\_bti\(),default
38af432c48SRuchika GuptaBTI(	bti	c)
3903bada66SRuchika Gupta	.endif
40a0fdab65SJens Wiklander	.endm
41a0fdab65SJens Wiklander
4203bada66SRuchika Gupta	.macro LOCAL_FUNC name colon section=default align=4 _bti=default
430095acfcSJens Wiklander	.ifc	\section\(),default
448473540dSJens Wiklander	.section .text.\name
450095acfcSJens Wiklander	.else
460095acfcSJens Wiklander	.section \section , "ax" , %progbits
470095acfcSJens Wiklander	.endif
48a0fdab65SJens Wiklander	.type \name , %function
49762a5553SJens Wiklander	.balign \align
50a0fdab65SJens Wiklander	\name \colon
513513f961SJerome ForissierUNWIND(	.fnstart)
5203bada66SRuchika Gupta	.ifc	\_bti\(),default
53af432c48SRuchika GuptaBTI(	bti	c)
5403bada66SRuchika Gupta	.endif
55a0fdab65SJens Wiklander	.endm
56a0fdab65SJens Wiklander
5703bada66SRuchika Gupta	.macro WEAK_FUNC name colon section=default align=4 _bti=default
5844a8a0cfSJerome Forissier	.ifc	\section\(),default
5944a8a0cfSJerome Forissier	.section .text.\name
6044a8a0cfSJerome Forissier	.else
6144a8a0cfSJerome Forissier	.section \section , "ax" , %progbits
6244a8a0cfSJerome Forissier	.endif
6344a8a0cfSJerome Forissier	.weak \name
6444a8a0cfSJerome Forissier	.type \name , %function
6544a8a0cfSJerome Forissier	.balign \align
6644a8a0cfSJerome Forissier	\name \colon
6744a8a0cfSJerome ForissierUNWIND(	.fnstart)
6803bada66SRuchika Gupta	.ifc	\_bti\(),default
69af432c48SRuchika GuptaBTI(	bti	c)
7003bada66SRuchika Gupta	.endif
7144a8a0cfSJerome Forissier	.endm
7244a8a0cfSJerome Forissier
73914103c1SJerome Forissier	.macro END_FUNC name
74914103c1SJerome ForissierUNWIND(	.fnend)
75914103c1SJerome Forissier	.size \name , .-\name
76914103c1SJerome Forissier	.endm
77914103c1SJerome Forissier
78914103c1SJerome Forissier	.macro DATA name colon
79914103c1SJerome Forissier	.global \name
80914103c1SJerome Forissier	.type \name , %object
81914103c1SJerome Forissier	\name \colon
82914103c1SJerome Forissier	.endm
83914103c1SJerome Forissier
84a0fdab65SJens Wiklander	.macro LOCAL_DATA name colon
85a0fdab65SJens Wiklander	.type \name , %object
86a0fdab65SJens Wiklander	\name \colon
87a0fdab65SJens Wiklander	.endm
88a0fdab65SJens Wiklander
89a0fdab65SJens Wiklander	.macro END_DATA name
90a0fdab65SJens Wiklander	.size \name , .-\name
91a0fdab65SJens Wiklander	.endm
92