summaryrefslogtreecommitdiffstats
path: root/jmp.S
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-06-19 04:24:18 +0200
committerKaz Kylheku <kaz@kylheku.com>2020-06-19 04:24:18 +0200
commitf063fb64a24be163903ec0560eaba9af05cab25c (patch)
tree7a47ad657f209b24a4ae119be246f56d78d851d6 /jmp.S
parenta7cfa5717c91b7c144cb2ec3aecc5cda9509a355 (diff)
downloadtxr-f063fb64a24be163903ec0560eaba9af05cab25c.tar.gz
txr-f063fb64a24be163903ec0560eaba9af05cab25c.tar.bz2
txr-f063fb64a24be163903ec0560eaba9af05cab25c.zip
Support MIPS64.
* jmp.S (jmp_save, jmp_restore): Defined for MIPS64. * unwind.h (struct_jmp): Provide same definition for 32 and 64 by #ifdef-ing on just __mips__.
Diffstat (limited to 'jmp.S')
-rw-r--r--jmp.S35
1 files changed, 35 insertions, 0 deletions
diff --git a/jmp.S b/jmp.S
index 6dfc30ae..671a793b 100644
--- a/jmp.S
+++ b/jmp.S
@@ -365,6 +365,41 @@ DEFUN(jmp_restore)
jr $ra
move $2, $5
+#elif _MIPS_SZPTR == 64
+
+ .set noreorder
+
+DEFUN(jmp_save)
+ sd $16, 0($4)
+ sd $17, 8($4)
+ sd $18, 16($4)
+ sd $19, 24($4)
+ sd $20, 32($4)
+ sd $21, 40($4)
+ sd $22, 48($4)
+ sd $23, 56($4)
+ sd $28, 64($4)
+ sd $29, 72($4)
+ sd $30, 80($4)
+ sd $ra, 88($4)
+ jr $ra
+ li $2, 0
+
+DEFUN(jmp_restore)
+ ld $16, 0($4)
+ ld $17, 8($4)
+ ld $18, 16($4)
+ ld $19, 24($4)
+ ld $20, 32($4)
+ ld $21, 40($4)
+ ld $22, 48($4)
+ ld $23, 56($4)
+ ld $28, 64($4)
+ ld $29, 72($4)
+ ld $ra, 80($4)
+ ld $30, 88($4)
+ jr $ra
+ move $2, $5
#else
#error port me!
#endif