rt: fix some bugs for MIPS target

This commit is contained in:
Jyun-Yan You 2013-01-30 23:42:48 +08:00 committed by Brian Anderson
parent c2a61d7df3
commit 314605f948
4 changed files with 23 additions and 2 deletions

View File

@ -78,4 +78,5 @@ swap_registers:
lw $31, 31 * 4($5)
jr $31
nop
.end swap_registers

View File

@ -8,5 +8,22 @@
__morestack:
.set noreorder
.set nomacro
move $7, $29
move $29, $6
sw $7, 0($29)
sw $31, -4($29)
addiu $29, $29, -24
move $25, $5
jalr $25
nop
addiu $29, $29, 24
lw $31, -4($29)
lw $7, 0($29)
move $29, $7
jr $31
nop
.end __morestack

View File

@ -21,10 +21,10 @@ public:
uintptr_t r24, r25, r26, r27, r28, r29, r30, r31;
inline uintptr_t get_fp() { return r30; }
inline uintptr_t get_ip() { return r0; }
inline uintptr_t get_ip() { return r31; }
inline void set_fp(uintptr_t new_fp) { r30 = new_fp; }
inline void set_ip(uintptr_t new_ip) { r0 = new_ip; }
inline void set_ip(uintptr_t new_ip) { r31 = new_ip; }
void load();
};

View File

@ -14,6 +14,7 @@ record_sp_limit:
addiu $3, $3, -0x7008
sw $4, 4($3)
jr $31
nop
.end record_sp_limit
.globl get_sp_limit
@ -30,6 +31,7 @@ get_sp_limit:
addiu $3, $3, -0x7008
lw $2, 4($3)
jr $31
nop
.end get_sp_limit
.globl get_sp
@ -41,4 +43,5 @@ get_sp:
.set nomacro
move $2, $29
jr $31
nop
.end get_sp