diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-06-19 02:17:32 +0200 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-06-19 02:17:32 +0200 |
commit | 1d7fae3c4b23c7ddcb15a66fd6c4c72eff7c9168 (patch) | |
tree | 5afad6c45e1e10f3d382bff0fc989a21d91a9466 | |
parent | 03db12abdf39b9c26ae28b28faaea933eb36aa2e (diff) | |
download | txr-1d7fae3c4b23c7ddcb15a66fd6c4c72eff7c9168.tar.gz txr-1d7fae3c4b23c7ddcb15a66fd6c4c72eff7c9168.tar.bz2 txr-1d7fae3c4b23c7ddcb15a66fd6c4c72eff7c9168.zip |
First cut at MIPS port.
* jmp.S (jmp_save, jmp_restore): Implement for 32 bit MIPS.
* unwind.h (struct jmp): 32 bit MIPS definition added.
-rw-r--r-- | jmp.S | 34 | ||||
-rw-r--r-- | unwind.h | 17 |
2 files changed, 51 insertions, 0 deletions
@@ -329,6 +329,40 @@ DEFUN(jmp_restore) mov w0, w1 br x30 +#elif _MIPS_SZPTR == 32 + +DEFUN(jmp_save) + sw $16, 0($4) + sw $17, 4($4) + sw $18, 8($4) + sw $19, 12($4) + sw $20, 16($4) + sw $21, 20($4) + sw $22, 24($4) + sw $23, 28($4) + sw $28, 32($4) + sw $29, 36($4) + sw $30, 40($4) + sw $ra, 44($4) + jr $ra + li $2, 0 + +DEFUN(jmp_restore) + lw $16, 0($4) + lw $17, 4($4) + lw $18, 8($4) + lw $19, 12($4) + lw $20, 16($4) + lw $21, 20($4) + lw $22, 24($4) + lw $23, 28($4) + lw $28, 32($4) + lw $29, 36($4) + lw $ra, 44($4) + lw $30, 40($4) + jr $ra + move $2, $5 + #else #error port me! #endif @@ -141,6 +141,23 @@ struct jmp { x19-x28, x29(fp), x30(lr), (x31)sp, d8-d15. Other registers are not saved. */ +#elif _MIPS_SZPTR == 32 + +struct jmp { + unsigned long s0; /* $16 */ + unsigned long s1; /* ... */ + unsigned long s2; + unsigned long s3; + unsigned long s4; + unsigned long s5; + unsigned long s6; /* ... */ + unsigned long s8; /* $23 */ + unsigned long gp; /* $28 */ + unsigned long sp; /* $29 */ + unsigned long fp; /* $30 */ + unsigned long ra; /* $31 */ +}; + #else #error port me! #endif |