diff options
Diffstat (limited to 'emulator/qtools/tests/gtrace/test.c')
-rw-r--r-- | emulator/qtools/tests/gtrace/test.c | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/emulator/qtools/tests/gtrace/test.c b/emulator/qtools/tests/gtrace/test.c new file mode 100644 index 0000000..e56a0f1 --- /dev/null +++ b/emulator/qtools/tests/gtrace/test.c @@ -0,0 +1,201 @@ +#include "../macros.h" + +int foo1(); +int foo2(); +void bar(); +int child1(); +int child2(); +int child3(); +int child4(); +int child5(); + +int global; + +void start() +{ + // Set the stack pointer + asm(" mov r13,#0x200000"); + PRINT_STR("hello\n"); + TRACE_INIT_NAME(701, "proc_foo"); + TRACE_INIT_NAME(702, "proc_bar"); + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + TRACE_SWITCH(702); + if (global++ > 0) + global++; + bar(); + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo2(); + TRACE_SWITCH(703); + if (global++ > 0) + global++; + foo1(); + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(704); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(705); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(706); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(707); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(708); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(709); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(701); + if (global++ > 0) + global++; + foo1(); + + TRACE_SWITCH(710); + if (global++ > 0) + global++; + foo1(); + + TRACE_STOP_EMU(); +} + +int foo1() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 3; ++ii) { + a += child1(); + a += child2(); + a += child3(); + } + return a; +} + +int foo2() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 2; ++ii) { + a += child3(); + a += child4(); + a += child5(); + } + return a; +} + +#define kStride 64 +void bar() +{ + int a = 0; + + static char mem[1000 * kStride]; + + int ii, jj; + + for (ii = 0; ii < 4; ++ii) { + for (jj = 0; jj < 10; ++jj) + a += mem[jj * kStride]; + foo1(); + foo2(); + } +} + +int child1() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 2; ++ii) + a += ii; + return a; +} + +int child2() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 4; ++ii) + a += ii; + return a; +} + +int child3() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 6; ++ii) + a += ii; + return a; +} + +int child4() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 8; ++ii) + a += ii; + return a; +} + +int child5() +{ + int a = 0; + + int ii; + for (ii = 0; ii < 10; ++ii) + a += ii; + return a; +} |