comparison 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
comparison
equal deleted inserted replaced
75:41bf073c0c32 76:435cced73e2f
91 # sgpr 26,sp # == K0 91 # sgpr 26,sp # == K0
92 # sgpr 27,sp # == K1 92 # sgpr 27,sp # == K1
93 # sgpr 29,sp # == SP 93 # sgpr 29,sp # == SP
94 sgpr 30,sp # == FP 94 sgpr 30,sp # == FP
95 sgpr 31,sp # == RA 95 sgpr 31,sp # == RA
96 sgpr 31,sp # == PC (to help with debugging) 96 spc $31,sp # == PC (to help with debugging)
97 .set at 97 .set at
98 98
99 #ifndef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM 99 #ifndef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
100 100
101 mflo t0 # save LO and HI regs 101 mflo t0 # save LO and HI regs
219 #define CYGARC_JMP_BUF_R30 10 219 #define CYGARC_JMP_BUF_R30 10
220 #define CYGARC_JMP_BUF_R31 11 220 #define CYGARC_JMP_BUF_R31 11
221 221
222 #define CYGARC_JMP_BUF_SIZE 12 222 #define CYGARC_JMP_BUF_SIZE 12
223 223
224 // FIXME: The follwing restricts us to using only 32 bit registers
225 // in jump buffers. If/when we move to a full 64 bit architecture,
226 // this will need to change, as will the instructions that we use to
227 // save and restore them.
228
229 #define jmpbuf_regsize 4
230
224 .globl hal_setjmp 231 .globl hal_setjmp
225 .ent hal_setjmp 232 .ent hal_setjmp
226 hal_setjmp: 233 hal_setjmp:
227 sw $31,CYGARC_JMP_BUF_R31*mips_regsize(a0) # ra (link) 234 sw $31,CYGARC_JMP_BUF_R31*jmpbuf_regsize(a0) # ra (link)
228 sw $30,CYGARC_JMP_BUF_R30*mips_regsize(a0) 235 sw $30,CYGARC_JMP_BUF_R30*jmpbuf_regsize(a0)
229 sw $28,CYGARC_JMP_BUF_R28*mips_regsize(a0) # gp, optimize out? 236 sw $28,CYGARC_JMP_BUF_R28*jmpbuf_regsize(a0) # gp, optimize out?
230 sw $23,CYGARC_JMP_BUF_R23*mips_regsize(a0) 237 sw $23,CYGARC_JMP_BUF_R23*jmpbuf_regsize(a0)
231 sw $22,CYGARC_JMP_BUF_R22*mips_regsize(a0) 238 sw $22,CYGARC_JMP_BUF_R22*jmpbuf_regsize(a0)
232 sw $21,CYGARC_JMP_BUF_R21*mips_regsize(a0) 239 sw $21,CYGARC_JMP_BUF_R21*jmpbuf_regsize(a0)
233 sw $20,CYGARC_JMP_BUF_R20*mips_regsize(a0) 240 sw $20,CYGARC_JMP_BUF_R20*jmpbuf_regsize(a0)
234 sw $19,CYGARC_JMP_BUF_R19*mips_regsize(a0) 241 sw $19,CYGARC_JMP_BUF_R19*jmpbuf_regsize(a0)
235 sw $18,CYGARC_JMP_BUF_R18*mips_regsize(a0) 242 sw $18,CYGARC_JMP_BUF_R18*jmpbuf_regsize(a0)
236 sw $17,CYGARC_JMP_BUF_R17*mips_regsize(a0) 243 sw $17,CYGARC_JMP_BUF_R17*jmpbuf_regsize(a0)
237 sw $16,CYGARC_JMP_BUF_R16*mips_regsize(a0) 244 sw $16,CYGARC_JMP_BUF_R16*jmpbuf_regsize(a0)
238 sw sp,CYGARC_JMP_BUF_SP*mips_regsize(a0) # $29 245 sw sp,CYGARC_JMP_BUF_SP*jmpbuf_regsize(a0) # $29
239 li v0,0 246 li v0,0
240 jr ra 247 jr ra
241 nop # delay slot 248 nop # delay slot
242 .end hal_setjmp 249 .end hal_setjmp
243 250
244 .globl hal_longjmp 251 .globl hal_longjmp
245 .ent hal_longjmp 252 .ent hal_longjmp
246 hal_longjmp: 253 hal_longjmp:
247 lw $31,CYGARC_JMP_BUF_R31*mips_regsize(a0) # ra (link) 254 lw $31,CYGARC_JMP_BUF_R31*jmpbuf_regsize(a0) # ra (link)
248 lw $30,CYGARC_JMP_BUF_R30*mips_regsize(a0) 255 lw $30,CYGARC_JMP_BUF_R30*jmpbuf_regsize(a0)
249 lw $28,CYGARC_JMP_BUF_R28*mips_regsize(a0) # gp, optimize out? 256 lw $28,CYGARC_JMP_BUF_R28*jmpbuf_regsize(a0) # gp, optimize out?
250 lw $23,CYGARC_JMP_BUF_R23*mips_regsize(a0) 257 lw $23,CYGARC_JMP_BUF_R23*jmpbuf_regsize(a0)
251 lw $22,CYGARC_JMP_BUF_R22*mips_regsize(a0) 258 lw $22,CYGARC_JMP_BUF_R22*jmpbuf_regsize(a0)
252 lw $21,CYGARC_JMP_BUF_R21*mips_regsize(a0) 259 lw $21,CYGARC_JMP_BUF_R21*jmpbuf_regsize(a0)
253 lw $20,CYGARC_JMP_BUF_R20*mips_regsize(a0) 260 lw $20,CYGARC_JMP_BUF_R20*jmpbuf_regsize(a0)
254 lw $19,CYGARC_JMP_BUF_R19*mips_regsize(a0) 261 lw $19,CYGARC_JMP_BUF_R19*jmpbuf_regsize(a0)
255 lw $18,CYGARC_JMP_BUF_R18*mips_regsize(a0) 262 lw $18,CYGARC_JMP_BUF_R18*jmpbuf_regsize(a0)
256 lw $17,CYGARC_JMP_BUF_R17*mips_regsize(a0) 263 lw $17,CYGARC_JMP_BUF_R17*jmpbuf_regsize(a0)
257 lw $16,CYGARC_JMP_BUF_R16*mips_regsize(a0) 264 lw $16,CYGARC_JMP_BUF_R16*jmpbuf_regsize(a0)
258 lw sp,CYGARC_JMP_BUF_SP*mips_regsize(a0) # $29 265 lw sp,CYGARC_JMP_BUF_SP*jmpbuf_regsize(a0) # $29
259 move v0,a1 266 move v0,a1
260 jr ra 267 jr ra
261 nop # delay slot 268 nop # delay slot
262 .end hal_longjmp 269 .end hal_longjmp
263 270