From f063fb64a24be163903ec0560eaba9af05cab25c Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 19 Jun 2020 04:24:18 +0200 Subject: 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__. --- jmp.S | 35 +++++++++++++++++++++++++++++++++++ unwind.h | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) 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 diff --git a/unwind.h b/unwind.h index a9f8d60c..074d6169 100644 --- a/unwind.h +++ b/unwind.h @@ -141,7 +141,7 @@ struct jmp { x19-x28, x29(fp), x30(lr), (x31)sp, d8-d15. Other registers are not saved. */ -#elif _MIPS_SZPTR == 32 +#elif __mips__ struct jmp { unsigned long s0; /* $16 */ -- cgit v1.2.3