1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#
# arch/mips/setjmp.S
#
# setjmp/longjmp for the MIPS architecture
#
# The jmp_buf is assumed to contain the following, in order:
# s0..s7
# gp
# sp
# s8
# ra
#
#include <machine/asm.h>
LEAF(setjmp)
sw s0, 0(a0)
sw s1, 4(a0)
sw s2, 8(a0)
sw s3, 12(a0)
sw s4, 16(a0)
sw s5, 20(a0)
sw s6, 24(a0)
sw s7, 28(a0)
sw gp, 32(a0)
sw sp, 36(a0)
sw s8, 40(a0)
sw ra, 44(a0)
move v0,zero
jr ra
END(setjmp)
LEAF(longjmp)
lw s0, 0(a0)
lw s1, 4(a0)
lw s2, 8(a0)
lw s3, 12(a0)
lw s4, 16(a0)
lw s5, 20(a0)
lw s6, 24(a0)
lw s7, 28(a0)
lw gp, 32(a0)
lw sp, 36(a0)
lw s8, 40(a0)
lw ra, 44(a0)
move v0,a1
jr ra
END(longjmp)
|