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 #define ASM_NL ` /* use '`' to mark new line in macro */ 12 #define __ALIGN .align 4 13 #define __ALIGN_STR __stringify(__ALIGN) 14 15 #ifdef __ASSEMBLY__ 16 17 .macro ST2 e, o, off 18 #ifdef CONFIG_ARC_HAS_LL64 19 std \e, [sp, \off] 20 #else 21 st \e, [sp, \off] 22 st \o, [sp, \off+4] 23 #endif 24 .endm 25 26 .macro LD2 e, o, off 27 #ifdef CONFIG_ARC_HAS_LL64 28 ldd \e, [sp, \off] 29 #else 30 ld \e, [sp, \off] 31 ld \o, [sp, \off+4] 32 #endif 33 .endm 34 35 /* annotation for data we want in DCCM - if enabled in .config */ 36 .macro ARCFP_DATA nm 37 #ifdef CONFIG_ARC_HAS_DCCM 38 .section .data.arcfp 39 #else 40 .section .data 41 #endif 42 .global \nm 43 .endm 44 45 /* annotation for data we want in DCCM - if enabled in .config */ 46 .macro ARCFP_CODE 47 #ifdef CONFIG_ARC_HAS_ICCM 48 .section .text.arcfp, "ax",@progbits 49 #else 50 .section .text, "ax",@progbits 51 #endif 52 .endm 53 54 #define ENTRY_CFI(name) \ 55 .globl name ASM_NL \ 56 ALIGN ASM_NL \ 57 name: ASM_NL \ 58 CFI_STARTPROC ASM_NL 59 60 #define END_CFI(name) \ 61 CFI_ENDPROC ASM_NL \ 62 .size name, .-name 63 64 #else /* !__ASSEMBLY__ */ 65 66 #ifdef CONFIG_ARC_HAS_ICCM 67 #define __arcfp_code __section(".text.arcfp") 68 #else 69 #define __arcfp_code __section(".text") 70 #endif 71 72 #ifdef CONFIG_ARC_HAS_DCCM 73 #define __arcfp_data __section(".data.arcfp") 74 #else 75 #define __arcfp_data __section(".data") 76 #endif 77 78 #endif /* __ASSEMBLY__ */ 79 80 #endif 81