oprofile and ARM A9 hardware counter
a.p.zijlstra at chello.nl
Thu Feb 16 11:19:43 EST 2012
On Fri, 2012-02-17 at 00:12 +0800, Ming Lei wrote:
> is triggered: u64 delta = 100 - 1000000 = 18446744073708551716.
on x86 we do:
int shift = 64 - x86_pmu.cntval_bits;
delta = (new_raw_count << shift) - (prev_raw_count << shift);
delta >>= shift;
This deals with short overflows (on x86 the registers are typically 40
or 48 bits wide). If the arm register is 32 you can of course also get
there with some u32 casts.
More information about the linux-arm-kernel