osproject_time.c 2.5 KB
#include <stdio.h>
/*
static void dummy()
{
}
*/
int dummy1(int a)
{
int i = a;
return i;
}
int dummy2(int a, int b)
{
int i = b;
return i;
}
int dummy3(int a, int b, int c)
{
int i = c;
return i;
}
int dummy4(int a, int b, int c, int d)
{
int i = d;
return i;
}
int dummy5(int a, int b, int c, int d, int e)
{
int i = e;
return i;
}
int dummy6(int a, int b, int c, int d, int e, int f)
{
int i = f;
return i;
}
int dummy7(int a, int b, int c, int d, int e, int f, int g)
{
int i = g;
return i;
}
int main()
{
unsigned int regr;
unsigned int a, b;
unsigned int c1, c2, c3, c4, c5, c6, c7;
int d;
printf("CSE237A: Hello world.\n");
asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r" (regr));
printf("regr: %x\n", regr);
/*
for (i = 0; i < 10; i++) {
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("c[%u]: %u\n", i, b - a);
}
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
dummy();
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead: %u\n", b - a);
*/
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy1(1);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with one arg: %u\n", b - a);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy2(c1, 2);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with 2 args: %u\n", b - a);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy3(c1, c2, 3);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with 3 args: %u\n", b - a);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy4(c1, c2, c3, 4);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with 4 args: %u\n", b - a);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy5(c1, c2, c3, c4, 5);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with 5 args: %u\n", b - a);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy6(c1, c2, c3, c4, c5, 6);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with 6 args: %u\n", b - a);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
d = dummy7(c1, c2, c3, c4, c5, c6, 7);
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Procedure call overhead with 7 args: %u\n", b - a);
printf("d: %d\n", d);
return 0;
}