xref: /openbmc/linux/arch/arc/include/asm/linkage.h (revision 2ef5a7f1)
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