source: trunk/libs/newlib/src/newlib/libc/machine/mt/setjmp.S @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.4 KB
Line 
1# setjmp/longjmp for mt.
2#
3# The jmpbuf looks like this:
4#       
5# Register      jmpbuf offset
6# R0            ---             --
7# R1            0x4              4
8# R2            0x8              8
9# R3            0xc             12
10# R4            0x10            16
11# R5            0x14            20
12# R6            0x18            24
13# R7            0x1c            28
14# R8            0x20            32
15# R9            ----            --
16# R10           ----            --
17# R11           0x2c            44
18# R12           0x30            48
19# R13           0x34            52
20# R14           0x38            56
21# R15           0x3c            60
22#
23# R1 contains the pointer to jmpbuf
24        .text
25        .global setjmp
26        .type   setjmp ,@function
27setjmp:
28
29        stw     r1, r1, #4
30        or      r0, r0, r0
31        stw     r2, r1, #8
32        or      r0, r0, r0
33        stw     r3, r1, #12
34        or      r0, r0, r0
35        stw     r4, r1, #16
36        or      r0, r0, r0
37        stw     r5, r1, #20
38        or      r0, r0, r0
39        stw     r6, r1, #24
40        or      r0, r0, r0
41        stw     r7, r1, #28
42        or      r0, r0, r0
43        stw     r8, r1, #32
44        or      r0, r0, r0
45        stw     r11, r1, #44
46        or      r0, r0, r0
47        stw     r12, r1, #48
48        or      r0, r0, r0
49        stw     r13, r1, #52
50        or      r0, r0, r0
51        stw     r14, r1, #56
52        or      r0, r0, r0
53        stw     r15, r1, #60
54
55        jal     r0, r14
56        addi    r11, r0, #0
57.Lend1:
58        .size   setjmp,.Lend1-setjmp
59
60        .global longjmp
61        .type   longjmp,@function
62longjmp:
63        or      r9, r1, r1
64        or      r11, r2, r2
65        ldw     r1, r1, #4
66        or      r0, r0, r0
67        ldw     r2, r1, #8
68        or      r0, r0, r0
69        ldw     r3, r1, #12
70        or      r0, r0, r0
71        ldw     r4, r1, #16
72        or      r0, r0, r0
73        ldw     r5, r1, #20
74        or      r0, r0, r0
75        ldw     r6, r1, #24
76        or      r0, r0, r0
77        ldw     r7, r1, #28
78        or      r0, r0, r0
79        ldw     r8, r1, #32
80        or      r0, r0, r0
81
82
83        ldw     r12, r1, #48
84        or      r0, r0, r0
85        ldw     r13, r1, #52
86        or      r0, r0, r0
87        ldw     r14, r1, #56
88        or      r0, r0, r0
89        ldw     r15, r1, #60
90
91        brne    r0, r11, .L01
92        or      r0, r0, r0
93
94        addi    r11, r0, #1
95.L01:
96        jal     r0, r14
97        or      r0, r0, r0
98.Lend2:
99        .size   longjmp,.Lend2-longjmp2
Note: See TracBrowser for help on using the repository browser.