1*86d7f5d3SJohn Marino /* 2*86d7f5d3SJohn Marino * call3.c 3*86d7f5d3SJohn Marino * 4*86d7f5d3SJohn Marino * Test a standard function call to a function which does nothing much. 5*86d7f5d3SJohn Marino * 6*86d7f5d3SJohn Marino * $DragonFly: src/test/sysperf/call3.c,v 1.3 2005/08/02 17:11:04 hmp Exp $ 7*86d7f5d3SJohn Marino */ 8*86d7f5d3SJohn Marino 9*86d7f5d3SJohn Marino #include "blib.h" 10*86d7f5d3SJohn Marino 11*86d7f5d3SJohn Marino #define LOOP 500000000 12*86d7f5d3SJohn Marino 13*86d7f5d3SJohn Marino __asm(".p2align 6"); xnop1(void)14*86d7f5d3SJohn Marinostatic void xnop1(void) { } 15*86d7f5d3SJohn Marino __asm(".p2align 6"); xnop2(void)16*86d7f5d3SJohn Marinostatic void xnop2(void) { } 17*86d7f5d3SJohn Marino __asm(".p2align 6"); xnop(void (* func)(void))18*86d7f5d3SJohn Marinostatic void xnop(void (*func)(void)) { func(); } 19*86d7f5d3SJohn Marino 20*86d7f5d3SJohn Marino int main(int ac,char ** av)21*86d7f5d3SJohn Marinomain(int ac, char **av) 22*86d7f5d3SJohn Marino { 23*86d7f5d3SJohn Marino int i; 24*86d7f5d3SJohn Marino 25*86d7f5d3SJohn Marino printf("call nop() function through function pointer in loop\n"); 26*86d7f5d3SJohn Marino start_timing(); 27*86d7f5d3SJohn Marino for (i = 0; i < LOOP; ++i) { 28*86d7f5d3SJohn Marino xnop(xnop1); 29*86d7f5d3SJohn Marino xnop(xnop1); 30*86d7f5d3SJohn Marino } 31*86d7f5d3SJohn Marino stop_timing(LOOP * 2, "call3/nop1-1"); 32*86d7f5d3SJohn Marino start_timing(); 33*86d7f5d3SJohn Marino for (i = 0; i < LOOP; ++i) { 34*86d7f5d3SJohn Marino xnop(xnop1); 35*86d7f5d3SJohn Marino xnop(xnop2); 36*86d7f5d3SJohn Marino } 37*86d7f5d3SJohn Marino stop_timing(LOOP * 2, "call3/nop1-2"); 38*86d7f5d3SJohn Marino start_timing(); 39*86d7f5d3SJohn Marino for (i = 0; i < LOOP; ++i) { 40*86d7f5d3SJohn Marino xnop(xnop2); 41*86d7f5d3SJohn Marino xnop(xnop2); 42*86d7f5d3SJohn Marino } 43*86d7f5d3SJohn Marino stop_timing(LOOP * 2, "call3/nop2-2"); 44*86d7f5d3SJohn Marino return(0); 45*86d7f5d3SJohn Marino } 46*86d7f5d3SJohn Marino 47