1 /* 2 * Copyright 2010 Tilera Corporation. All Rights Reserved. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation, version 2. 7 * 8 * This program is distributed in the hope that it will be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or 11 * NON INFRINGEMENT. See the GNU General Public License for 12 * more details. 13 */ 14 15 #ifndef _ASM_TILE_LINKAGE_H 16 #define _ASM_TILE_LINKAGE_H 17 18 #include <feedback.h> 19 20 #define __ALIGN .align 8 21 22 /* 23 * The STD_ENTRY and STD_ENDPROC macros put the function in a 24 * self-named .text.foo section, and if linker feedback collection 25 * is enabled, add a suitable call to the feedback collection code. 26 * STD_ENTRY_SECTION lets you specify a non-standard section name. 27 */ 28 29 #define STD_ENTRY(name) \ 30 .pushsection .text.##name, "ax"; \ 31 ENTRY(name); \ 32 FEEDBACK_ENTER(name) 33 34 #define STD_ENTRY_SECTION(name, section) \ 35 .pushsection section, "ax"; \ 36 ENTRY(name); \ 37 FEEDBACK_ENTER_EXPLICIT(name, section, .Lend_##name - name) 38 39 #define STD_ENDPROC(name) \ 40 ENDPROC(name); \ 41 .Lend_##name:; \ 42 .popsection 43 44 /* Create a file-static function entry set up for feedback gathering. */ 45 #define STD_ENTRY_LOCAL(name) \ 46 .pushsection .text.##name, "ax"; \ 47 ALIGN; \ 48 name:; \ 49 FEEDBACK_ENTER(name) 50 51 #endif /* _ASM_TILE_LINKAGE_H */ 52