summaryrefslogtreecommitdiff
path: root/arch/arc/include/asm/linkage.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2019-05-15 15:36:46 -0700
committerVineet Gupta <vgupta@synopsys.com>2019-07-01 11:02:22 -0700
commita4880801a72ecc2dcdfa432f81a754f3e7438567 (patch)
tree09598d292ca0afc987c785919f26354591d19761 /arch/arc/include/asm/linkage.h
parentab854bfcd310b5872fe12eb8d3f2c30fe427f8f7 (diff)
ARCv2: entry: rewrite to enable use of double load/stores LDD/STD
- the motivation was to be remove blatent copy-paste due to hasty support of CONFIG_ARC_IRQ_NO_AUTOSAVE support - but with refactoring we could use LDD/STD to greatly optimize the code Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include/asm/linkage.h')
-rw-r--r--arch/arc/include/asm/linkage.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arc/include/asm/linkage.h b/arch/arc/include/asm/linkage.h
index 54f5ec5c1759..a0eeb9f8f0a9 100644
--- a/arch/arc/include/asm/linkage.h
+++ b/arch/arc/include/asm/linkage.h
@@ -10,6 +10,24 @@
#ifdef __ASSEMBLY__
+.macro ST2 e, o, off
+#ifdef CONFIG_ARC_HAS_LL64
+ std \e, [sp, \off]
+#else
+ st \e, [sp, \off]
+ st \o, [sp, \off+4]
+#endif
+.endm
+
+.macro LD2 e, o, off
+#ifdef CONFIG_ARC_HAS_LL64
+ ldd \e, [sp, \off]
+#else
+ ld \e, [sp, \off]
+ ld \o, [sp, \off+4]
+#endif
+.endm
+
#define ASM_NL ` /* use '`' to mark new line in macro */
/* annotation for data we want in DCCM - if enabled in .config */