1e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <stdio.h> 2e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <sys/time.h> 3e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 4e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectextern void icache_test(long count, long step); 5e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectextern void icache_test2(long count); 6e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 7e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectint main() 8e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{ 9e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("[bytes]\t[us]\n"); 10e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 11e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project struct timeval now, tm; 12e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project long long t; 13e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project long MBs; 14e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project long i; 15e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project long step = 32; 16e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project for (i=0 ; step<=2048 ; i++, step+=32) 17e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project { 18e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project long value; 19e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project gettimeofday(&now, 0); 20e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project icache_test(0x800000L, step); 21e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project gettimeofday(&tm, 0); 22e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project t = (tm.tv_sec*1000000LL+tm.tv_usec) - (now.tv_sec*1000000LL+now.tv_usec); 23e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("%6ld\t%lld\n", step*32, t); 24e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 25e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 26e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project gettimeofday(&now, 0); 27e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project icache_test2(0x800000L / 2048); 28e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project gettimeofday(&tm, 0); 29e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project t = (tm.tv_sec*1000000LL+tm.tv_usec) - (now.tv_sec*1000000LL+now.tv_usec); 30e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project MBs = (8388608LL*32*1000000) / (t * (1024*1024)); 31e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("\n%6lld us\t%ld MB/s\n", t, MBs); 32e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 33e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project return 0; 34e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project} 35