I am using the RM48L952.
Upon reviewing the HALCoGen PMU initialization driver I noticed that the Count Enable Set Register (PMCNTENSET) is written with 0x11 for each of the three counters. PMCNTENSET[0] is the counter 0 enable bit. However, PMCNTENSET[4] is a reserved bit. Why is it being written? See the register definition here:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0363g/Bgbejcgj.html
And the function here:
;------------------------------------------------------------------------------- ; Initialize Pmu ; Note: It will reset all counters ; SourceId : PMU_SourceId_001 ; DesignId : PMU_DesignId_001 ; Requirements : HL_SR484 export _pmuInit_ _pmuInit_ stmfd sp!, {r0} ; set control register mrc p15, #0, r0, c9, c12, #0 orr r0, r0, #(1 << 4) + 6 + 1 mcr p15, #0, r0, c9, c12, #0 ; clear flags mov r0, #0 sub r0, r0, #1 mcr p15, #0, r0, c9, c12, #3 ; select counter 0 event mcr p15, #0, r0, c9, c12, #5 ; select counter mov r0, #0x11 mcr p15, #0, r0, c9, c13, #1 ; select event ; select counter 1 event mov r0, #1 mcr p15, #0, r0, c9, c12, #5 ; select counter mov r0, #0x11 mcr p15, #0, r0, c9, c13, #1 ; select event ; select counter 2 event mov r0, #2 mcr p15, #0, r0, c9, c12, #5 ; select counter mov r0, #0x11 mcr p15, #0, r0, c9, c13, #1 ; select event ldmfd sp!, {r0} bx lr