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