1 /* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7 #pragma once 8 9 /* This file contains useful macros for assembly code. */ 10 11 #ifdef __ASSEMBLER__ 12 13 /* 14 * Use BEGIN_FUNC(), END_FUNC() around assembly functions to annotate them 15 * correctly to the assembler. 16 */ 17 #define BEGIN_FUNC(_name) \ 18 .global _name ; \ 19 .type _name, %function ; \ 20 _name: 21 22 #define END_FUNC(_name) \ 23 .size _name, .-_name 24 25 /* 26 * BEGIN_FUNC_STATIC() and END_FUNC_STATIC() do as above, but without making a 27 * global declaration. (c.f. static functions in C). 28 */ 29 #define BEGIN_FUNC_STATIC(_name) \ 30 .type _name, %function ; \ 31 _name: 32 33 #define END_FUNC_STATIC(_name) \ 34 .size _name, .-_name 35 36 #else /* !__ASSEMBLER__ */ 37 #warning "Including assembly-specific header in C code" 38 #endif 39 40 41 42