]> git.sur5r.net Git - cc65/blob - test/val/trampoline.c
Add test case
[cc65] / test / val / trampoline.c
1 /*
2   !!DESCRIPTION!! trampoline pragma
3   !!ORIGIN!!      cc65 regression tests
4   !!LICENCE!!     Public Domain
5   !!AUTHOR!!      Lauri Kasanen
6 */
7
8 static unsigned char flag;
9
10 static void trampoline_set() {
11         asm("ldy tmp4");
12         asm("sty %v", flag);
13         asm("jsr callptr4");
14 }
15
16 void trampoline_inc() {
17         asm("inc %v", flag);
18         asm("jsr callptr4");
19 }
20
21 void func3() {
22
23 }
24
25 unsigned char array[30];
26 #pragma trampoline(push, array, 0)
27 #pragma trampoline(pop)
28
29 #pragma trampoline(push, trampoline_inc, 0)
30
31 void func2() {
32         func3();
33 }
34
35 #pragma trampoline(push, trampoline_set, 4)
36
37 void func1(void);
38
39 #pragma trampoline(pop)
40 #pragma trampoline(pop)
41
42 void func1() {
43         func2();
44 }
45
46 int main(void)
47 {
48         flag = 0;
49
50         func1();
51
52         return flag == 5 ? 0 : 1;
53 }