From 9c86c03a96e9885ac7aedd62b099ba43526aef4f Mon Sep 17 00:00:00 2001 From: Lauri Kasanen Date: Tue, 2 May 2017 18:48:31 +0300 Subject: [PATCH] Add test case --- test/val/trampoline.c | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 test/val/trampoline.c 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; +} -- 2.39.5