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