aboutsummaryrefslogtreecommitdiffstats
path: root/emulator/qtools/tests/gtrace/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'emulator/qtools/tests/gtrace/test.c')
-rw-r--r--emulator/qtools/tests/gtrace/test.c201
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;
+}