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