Commit | Line | Data |
---|---|---|
7ed4c4c5 NC |
1 | # Test generation of unwind tables |
2 | .text | |
3 | foo: @ Simple function | |
4 | .fnstart | |
5 | .save {r4, lr} | |
6 | mov r0, #0 | |
7 | .fnend | |
8 | foo1: @ Typical frame pointer prologue | |
9 | .fnstart | |
10 | .movsp ip | |
11 | @mov ip, sp | |
12 | .pad #4 | |
13 | .save {fp, ip, lr} | |
14 | @stmfd sp!, {fp, ip, lr, pc} | |
15 | .setfp fp, ip, #4 | |
16 | @sub fp, ip, #4 | |
17 | mov r0, #1 | |
18 | .fnend | |
19 | foo2: @ Custom personality routine | |
20 | .fnstart | |
21 | .save {r1, r4, r6, lr} | |
22 | @stmfd {r1, r4, r6, lr} | |
23 | mov r0, #2 | |
24 | .personality foo | |
25 | .handlerdata | |
26 | .word 42 | |
27 | .fnend | |
28 | foo3: @ Saving iwmmxt registers | |
29 | .fnstart | |
87a1fd79 JM |
30 | .save {wr12} |
31 | .save {wr13} | |
7ed4c4c5 NC |
32 | .save {wr11} |
33 | .save {wr10} | |
34 | .save {wr10, wr11} | |
35 | .save {wr0} | |
36 | mov r0, #3 | |
37 | .fnend | |
38 | .code 16 | |
39 | foo4: @ Thumb frame pointer | |
40 | .fnstart | |
41 | .save {r7, lr} | |
42 | @push {r7, lr} | |
43 | .setfp r7, sp | |
44 | @mov r7, sp | |
45 | .pad #8 | |
46 | @sub sp, sp, #8 | |
47 | mov r0, #4 | |
48 | .fnend | |
01ae4198 DJ |
49 | foo5: @ Save r0-r3 only. |
50 | .fnstart | |
51 | .save {r0, r1, r2, r3} | |
52 | mov r0, #5 | |
53 | .fnend | |
4fa3602b PB |
54 | .code 32 |
55 | foo6: @ Nested function with frame pointer | |
56 | .fnstart | |
57 | .pad #4 | |
58 | @push {ip} | |
59 | .movsp ip, #4 | |
60 | @mov ip, sp | |
61 | .pad #4 | |
62 | .save {fp, ip, lr} | |
63 | @stmfd sp!, {fp, ip, lr, pc} | |
64 | .setfp fp, ip, #-8 | |
65 | @sub fp, ip, #8 | |
66 | mov r0, #6 | |
67 | .fnend |