summaryrefslogtreecommitdiff
path: root/contrib/gcc/config/mips/crtn.asm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/config/mips/crtn.asm')
-rw-r--r--contrib/gcc/config/mips/crtn.asm29
1 files changed, 29 insertions, 0 deletions
diff --git a/contrib/gcc/config/mips/crtn.asm b/contrib/gcc/config/mips/crtn.asm
new file mode 100644
index 0000000000000..5d41d3d7ecb84
--- /dev/null
+++ b/contrib/gcc/config/mips/crtn.asm
@@ -0,0 +1,29 @@
+/* 4 slots for argument spill area. 1 for cpreturn, 1 for stack.
+ Return spill offset of 40 and 20. Aligned to 16 bytes for n32. */
+
+#ifdef __mips16
+#define RA $7
+#else
+#define RA $31
+#endif
+
+ .section .init,"ax",@progbits
+#ifdef __mips64
+ ld RA,40($sp)
+ daddu $sp,$sp,48
+#else
+ lw RA,20($sp)
+ addu $sp,$sp,32
+#endif
+ j RA
+
+ .section .fini,"ax",@progbits
+#ifdef __mips64
+ ld RA,40($sp)
+ daddu $sp,$sp,48
+#else
+ lw RA,20($sp)
+ addu $sp,$sp,32
+#endif
+ j RA
+