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