10 #include <l4/util/rdtsc.h>
11 #include <l4/sys/kip.h>
12 #include <l4/re/env.h>
13 #include <l4/util/util.h>
17 #define WORKSET_SIZE (12*1024*1024)
18 #define ALL_WORKSETS_BENCH
25 struct s array[0x2100000/sizeof(struct s)];
26 #define REPEATS (0x20000000)
28 static __inline__ uint64_t rdtsc(void)
32 asm volatile("rdtsc" : "=a" (a), "=d" (d));
34 return (((uint64_t)a) | (((uint64_t)d) << 32));
37 int main(int argc, char *argv[])
42 #ifdef ALL_WORKSETS_BENCH
43 for (size = 1024; size <= sizeof(array); size *= 2)
44 #else //!ALL_WORKSETS_BENCH
49 uint8_t repeat_times = 70;
50 while (repeat_times--){
53 for (i=0; i < size / sizeof(array[0]); i++)
54 array[i].ptr = &array[i+1];
55 array[ size / sizeof(array[0]) - 1].ptr = &array[0];
58 volatile struct s *p = &array[0];
66 printf("%d %llu\n", size, (tac - tic) / REPEATS);
69 printf("10 sec wait and do again.\n");