From: Lauri Kasanen Date: Tue, 2 May 2017 15:48:31 +0000 (+0300) Subject: Add test case X-Git-Tag: V2.17~142^2~8 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9c86c03a96e9885ac7aedd62b099ba43526aef4f;p=cc65 Add test case --- diff --git a/test/val/trampoline.c b/test/val/trampoline.c new file mode 100644 index 000000000..b5df1a22b --- /dev/null +++ b/test/val/trampoline.c @@ -0,0 +1,53 @@ +/* + !!DESCRIPTION!! trampoline pragma + !!ORIGIN!! cc65 regression tests + !!LICENCE!! Public Domain + !!AUTHOR!! Lauri Kasanen +*/ + +static unsigned char flag; + +static void trampoline_set() { + asm("ldy tmp4"); + asm("sty %v", flag); + asm("jsr callptr4"); +} + +void trampoline_inc() { + asm("inc %v", flag); + asm("jsr callptr4"); +} + +void func3() { + +} + +unsigned char array[30]; +#pragma trampoline(push, array, 0) +#pragma trampoline(pop) + +#pragma trampoline(push, trampoline_inc, 0) + +void func2() { + func3(); +} + +#pragma trampoline(push, trampoline_set, 4) + +void func1(void); + +#pragma trampoline(pop) +#pragma trampoline(pop) + +void func1() { + func2(); +} + +int main(void) +{ + flag = 0; + + func1(); + + return flag == 5 ? 0 : 1; +}