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