1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) 4 */ 5 6 #ifndef __ASM_LINKAGE_H 7 #define __ASM_LINKAGE_H 8 9 #include <asm/dwarf.h> 10 11 #ifdef __ASSEMBLY__ 12 13 .macro ST2 e, o, off 14 #ifdef CONFIG_ARC_HAS_LL64 15 std \e, [sp, \off] 16 #else 17 st \e, [sp, \off] 18 st \o, [sp, \off+4] 19 #endif 20 .endm 21 22 .macro LD2 e, o, off 23 #ifdef CONFIG_ARC_HAS_LL64 24 ldd \e, [sp, \off] 25 #else 26 ld \e, [sp, \off] 27 ld \o, [sp, \off+4] 28 #endif 29 .endm 30 31 #define ASM_NL ` /* use '`' to mark new line in macro */ 32 33 /* annotation for data we want in DCCM - if enabled in .config */ 34 .macro ARCFP_DATA nm 35 #ifdef CONFIG_ARC_HAS_DCCM 36 .section .data.arcfp 37 #else 38 .section .data 39 #endif 40 .global \nm 41 .endm 42 43 /* annotation for data we want in DCCM - if enabled in .config */ 44 .macro ARCFP_CODE 45 #ifdef CONFIG_ARC_HAS_ICCM 46 .section .text.arcfp, "ax",@progbits 47 #else 48 .section .text, "ax",@progbits 49 #endif 50 .endm 51 52 #define ENTRY_CFI(name) \ 53 .globl name ASM_NL \ 54 ALIGN ASM_NL \ 55 name: ASM_NL \ 56 CFI_STARTPROC ASM_NL 57 58 #define END_CFI(name) \ 59 CFI_ENDPROC ASM_NL \ 60 .size name, .-name 61 62 #else /* !__ASSEMBLY__ */ 63 64 #ifdef CONFIG_ARC_HAS_ICCM 65 #define __arcfp_code __attribute__((__section__(".text.arcfp"))) 66 #else 67 #define __arcfp_code __attribute__((__section__(".text"))) 68 #endif 69 70 #ifdef CONFIG_ARC_HAS_DCCM 71 #define __arcfp_data __attribute__((__section__(".data.arcfp"))) 72 #else 73 #define __arcfp_data __attribute__((__section__(".data"))) 74 #endif 75 76 #endif /* __ASSEMBLY__ */ 77 78 #endif 79