202 lines
2.5 KiB
C
202 lines
2.5 KiB
C
#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;
|
|
}
|