title: Profling on arm Cortex_A8
body: <p>I want to do profiling for my application on ARM processor. I found the oprofile doesn't work. Someone used the following code to test a few years ago. the cyclic counter 
  does work, the performance monitor counter still doesn't work. I tested it again, it is same. For following code, I got cycle count: 2109, performance monitor count: 0. I have searched by google, so far, I have not found a solution. Has someone fixed this issue?</p>
  
  <pre><code>    uint32_t value = 0
      uint32_t count = 0;
      struct timeval tv;
      struct timezone tz;
  
      // enable all counters
      __asm__ __volatile__ ("mcr p15, 0, %0, c9, c12, 1" ::"r" (0x8000000f));
  
      // select counter 0,
      __asm__ __volatile__("mcr p15, 0, %0, c9, c12, 5" ::"r" (0x0));
      // select event
      __asm__ __volatile__ ("mcr p15, 0, %0, c9, c13, 1" ::"r"(0x57));
  
      // reset all counters to ero and enable all counters
      __asm__ __volatile__ ("mrc p15, 0, %0, c9, c12, 0" : "=r" (value));
      value |= 0xF;
      __asm__ __volatile__ ("mcr p15, 0, %0, c9, c12, 0" :: "r" (value));
  
      gettimeofday(&amp;tv, &amp;tz);
  
      __asm__ __volatile__("mrc p15, 0, %0, c9, c13, 0" : "=r" (count));
      printf("cycle count: %d", count);
  
      __asm__ __volatile__ ("mrc P15, 0, %0, c9, c13, 2": "=r" (count));
      printf("performance monitor count: %d", count);
  </code></pre>