Mercurial > ecos-v3_0-branch
diff packages/hal/mips/arch/current/src/context.S @ 76:435cced73e2f ecos-v1_3_1-release
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
| author | jlarmour |
|---|---|
| date | Tue, 28 Mar 2000 14:10:45 +0000 |
| parents | bf00f99aec69 |
| children | 02ea4320376c |
line wrap: on
line diff
--- a/packages/hal/mips/arch/current/src/context.S +++ b/packages/hal/mips/arch/current/src/context.S @@ -93,7 +93,7 @@ hal_thread_switch_context: # sgpr 29,sp # == SP sgpr 30,sp # == FP sgpr 31,sp # == RA - sgpr 31,sp # == PC (to help with debugging) + spc $31,sp # == PC (to help with debugging) .set at #ifndef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM @@ -221,21 +221,28 @@ hal_thread_load_context: #define CYGARC_JMP_BUF_SIZE 12 +// FIXME: The follwing restricts us to using only 32 bit registers +// in jump buffers. If/when we move to a full 64 bit architecture, +// this will need to change, as will the instructions that we use to +// save and restore them. + +#define jmpbuf_regsize 4 + .globl hal_setjmp .ent hal_setjmp hal_setjmp: - sw $31,CYGARC_JMP_BUF_R31*mips_regsize(a0) # ra (link) - sw $30,CYGARC_JMP_BUF_R30*mips_regsize(a0) - sw $28,CYGARC_JMP_BUF_R28*mips_regsize(a0) # gp, optimize out? - sw $23,CYGARC_JMP_BUF_R23*mips_regsize(a0) - sw $22,CYGARC_JMP_BUF_R22*mips_regsize(a0) - sw $21,CYGARC_JMP_BUF_R21*mips_regsize(a0) - sw $20,CYGARC_JMP_BUF_R20*mips_regsize(a0) - sw $19,CYGARC_JMP_BUF_R19*mips_regsize(a0) - sw $18,CYGARC_JMP_BUF_R18*mips_regsize(a0) - sw $17,CYGARC_JMP_BUF_R17*mips_regsize(a0) - sw $16,CYGARC_JMP_BUF_R16*mips_regsize(a0) - sw sp,CYGARC_JMP_BUF_SP*mips_regsize(a0) # $29 + sw $31,CYGARC_JMP_BUF_R31*jmpbuf_regsize(a0) # ra (link) + sw $30,CYGARC_JMP_BUF_R30*jmpbuf_regsize(a0) + sw $28,CYGARC_JMP_BUF_R28*jmpbuf_regsize(a0) # gp, optimize out? + sw $23,CYGARC_JMP_BUF_R23*jmpbuf_regsize(a0) + sw $22,CYGARC_JMP_BUF_R22*jmpbuf_regsize(a0) + sw $21,CYGARC_JMP_BUF_R21*jmpbuf_regsize(a0) + sw $20,CYGARC_JMP_BUF_R20*jmpbuf_regsize(a0) + sw $19,CYGARC_JMP_BUF_R19*jmpbuf_regsize(a0) + sw $18,CYGARC_JMP_BUF_R18*jmpbuf_regsize(a0) + sw $17,CYGARC_JMP_BUF_R17*jmpbuf_regsize(a0) + sw $16,CYGARC_JMP_BUF_R16*jmpbuf_regsize(a0) + sw sp,CYGARC_JMP_BUF_SP*jmpbuf_regsize(a0) # $29 li v0,0 jr ra nop # delay slot @@ -244,18 +251,18 @@ hal_setjmp: .globl hal_longjmp .ent hal_longjmp hal_longjmp: - lw $31,CYGARC_JMP_BUF_R31*mips_regsize(a0) # ra (link) - lw $30,CYGARC_JMP_BUF_R30*mips_regsize(a0) - lw $28,CYGARC_JMP_BUF_R28*mips_regsize(a0) # gp, optimize out? - lw $23,CYGARC_JMP_BUF_R23*mips_regsize(a0) - lw $22,CYGARC_JMP_BUF_R22*mips_regsize(a0) - lw $21,CYGARC_JMP_BUF_R21*mips_regsize(a0) - lw $20,CYGARC_JMP_BUF_R20*mips_regsize(a0) - lw $19,CYGARC_JMP_BUF_R19*mips_regsize(a0) - lw $18,CYGARC_JMP_BUF_R18*mips_regsize(a0) - lw $17,CYGARC_JMP_BUF_R17*mips_regsize(a0) - lw $16,CYGARC_JMP_BUF_R16*mips_regsize(a0) - lw sp,CYGARC_JMP_BUF_SP*mips_regsize(a0) # $29 + lw $31,CYGARC_JMP_BUF_R31*jmpbuf_regsize(a0) # ra (link) + lw $30,CYGARC_JMP_BUF_R30*jmpbuf_regsize(a0) + lw $28,CYGARC_JMP_BUF_R28*jmpbuf_regsize(a0) # gp, optimize out? + lw $23,CYGARC_JMP_BUF_R23*jmpbuf_regsize(a0) + lw $22,CYGARC_JMP_BUF_R22*jmpbuf_regsize(a0) + lw $21,CYGARC_JMP_BUF_R21*jmpbuf_regsize(a0) + lw $20,CYGARC_JMP_BUF_R20*jmpbuf_regsize(a0) + lw $19,CYGARC_JMP_BUF_R19*jmpbuf_regsize(a0) + lw $18,CYGARC_JMP_BUF_R18*jmpbuf_regsize(a0) + lw $17,CYGARC_JMP_BUF_R17*jmpbuf_regsize(a0) + lw $16,CYGARC_JMP_BUF_R16*jmpbuf_regsize(a0) + lw sp,CYGARC_JMP_BUF_SP*jmpbuf_regsize(a0) # $29 move v0,a1 jr ra nop # delay slot
