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