Contents of /trunk/mkinitrd-magellan/klibc/usr/klibc/arch/arm/setjmp.S
Parent Directory | Revision Log
Revision 1297 -
(show annotations)
(download)
Fri May 27 15:12:11 2011 UTC (12 years, 11 months ago) by niro
File size: 1355 byte(s)
Fri May 27 15:12:11 2011 UTC (12 years, 11 months ago) by niro
File size: 1355 byte(s)
-updated to klibc-1.5.22 with mntproc definitions patch included
1 | # |
2 | # arch/arm/setjmp.S |
3 | # |
4 | # setjmp/longjmp for the ARM architecture |
5 | # |
6 | |
7 | #include <klibc/asmmacros.h> |
8 | |
9 | #ifndef __thumb__ |
10 | |
11 | # |
12 | # "Pure ARM" version |
13 | # |
14 | # The jmp_buf is assumed to contain the following, in order: |
15 | # r4 |
16 | # r5 |
17 | # r6 |
18 | # r7 |
19 | # r8 |
20 | # r9 |
21 | # r10 |
22 | # fp |
23 | # sp |
24 | # lr |
25 | # |
26 | |
27 | .text |
28 | .balign 4 |
29 | .globl setjmp |
30 | .type setjmp, #function |
31 | setjmp: |
32 | stmia r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr} |
33 | mov r0, #0 |
34 | BX(lr) |
35 | .size setjmp,.-setjmp |
36 | |
37 | .text |
38 | .balign 4 |
39 | .globl longjmp |
40 | .type longjmp, #function |
41 | longjmp: |
42 | ldmia r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr} |
43 | mov r0, r1 |
44 | BX(lr) |
45 | .size longjmp,.-longjmp |
46 | |
47 | #else /* __thumb__ */ |
48 | |
49 | # |
50 | # Thumb version |
51 | # |
52 | # The jmp_buf is assumed to contain the following, in order: |
53 | # lr |
54 | # r4 |
55 | # r5 |
56 | # r6 |
57 | # r7 |
58 | # r8 |
59 | # r9 |
60 | # r10 |
61 | # fp |
62 | # sp |
63 | # |
64 | |
65 | .text |
66 | .balign 4 |
67 | .globl setjmp |
68 | .type setjmp, #function |
69 | .thumb_func |
70 | setjmp: |
71 | mov r3, lr |
72 | stmia r0!, {r3, r4, r5, r6, r7} |
73 | mov r3, r8 |
74 | mov r4, r9 |
75 | mov r5, r10 |
76 | mov r6, fp |
77 | mov r7, sp |
78 | stmia r0!, {r3, r4, r5, r6, r7} |
79 | mov r0, #0 |
80 | BX(lr) |
81 | .size setjmp,.-setjmp |
82 | |
83 | .text |
84 | .balign 4 |
85 | .globl longjmp |
86 | .type longjmp, #function |
87 | .thumb_func |
88 | longjmp: |
89 | mov r2, r0 |
90 | add r0, #5*4 |
91 | ldmia r0!, {r3, r4, r5, r6, r7} |
92 | mov r8, r3 |
93 | mov r9, r4 |
94 | mov r10, r5 |
95 | mov fp, r6 |
96 | mov sp, r7 |
97 | ldmia r2!, {r3, r4, r5, r6, r7} |
98 | mov r0, r1 |
99 | bne 1f |
100 | mov r0, #1 |
101 | 1: BX(r3) |
102 | .size longjmp,.-longjmp |
103 | |
104 | #endif /* __thumb__ */ |