1 ;-------------------------------------------------------------------------------
4 ; (c) Texas Instruments 2012, All rights reserved.
11 ;-------------------------------------------------------------------------------
13 ; Note: It will reset all counters
21 ; set control register
22 mrc p15, #0, r0, c9, c12, #0
23 orr r0, r0, #(1 << 4) + 6 + 1
24 mcr p15, #0, r0, c9, c12, #0
27 mcr p15, #0, r0, c9, c12, #3
28 ; select counter 0 event
29 mcr p15, #0, r0, c9, c12, #5 ; select counter
31 mcr p15, #0, r0, c9, c13, #1 ; select event
32 ; select counter 1 event
34 mcr p15, #0, r0, c9, c12, #5 ; select counter
36 mcr p15, #0, r0, c9, c13, #1 ; select event
37 ; select counter 2 event
39 mcr p15, #0, r0, c9, c12, #5 ; select counter
41 mcr p15, #0, r0, c9, c13, #1 ; select event
48 ;-------------------------------------------------------------------------------
49 ; Enable Counters Global [Cycle, Event [0..2]]
50 ; Note: It will reset all counters
52 .def _pmuEnableCountersGlobal_
55 _pmuEnableCountersGlobal_
58 mrc p15, #0, r0, c9, c12, #0
60 mcr p15, #0, r0, c9, c12, #0
66 ;-------------------------------------------------------------------------------
67 ; Disable Counters Global [Cycle, Event [0..2]]
69 .def _pmuDisableCountersGlobal_
72 _pmuDisableCountersGlobal_
75 mrc p15, #0, r0, c9, c12, #0
77 mcr p15, #0, r0, c9, c12, #0
83 ;-------------------------------------------------------------------------------
86 .def _pmuResetCycleCounter_
89 _pmuResetCycleCounter_
92 mrc p15, #0, r0, c9, c12, #0
94 mcr p15, #0, r0, c9, c12, #0
100 ;-------------------------------------------------------------------------------
101 ; Reset Event Counters [0..2]
103 .def _pmuResetEventCounters_
106 _pmuResetEventCounters_
109 mrc p15, #0, r0, c9, c12, #0
111 mcr p15, #0, r0, c9, c12, #0
117 ;-------------------------------------------------------------------------------
118 ; Reset Cycle Counter abd Event Counters [0..2]
120 .def _pmuResetCounters_
126 mrc p15, #0, r0, c9, c12, #0
128 mcr p15, #0, r0, c9, c12, #0
134 ;-------------------------------------------------------------------------------
135 ; Start Counters [Cycle, 0..2]
137 .def _pmuStartCounters_
142 mcr p15, #0, r0, c9, c12, #1
147 ;-------------------------------------------------------------------------------
148 ; Stop Counters [Cycle, 0..2]
150 .def _pmuStopCounters_
155 mcr p15, #0, r0, c9, c12, #2
160 ;-------------------------------------------------------------------------------
163 .def _pmuSetCountEvent_
169 mcr p15, #0, r0, c9, c12, #5 ; select counter
170 mcr p15, #0, r1, c9, c13, #1 ; select event
175 ;-------------------------------------------------------------------------------
178 .def _pmuGetCycleCount_
183 mrc p15, #0, r0, c9, c13, #0
188 ;-------------------------------------------------------------------------------
189 ; Get Event Counter Count Value
191 .def _pmuGetEventCount_
197 mcr p15, #0, r0, c9, c12, #5 ; select counter
198 mrc p15, #0, r0, c9, c13, #2 ; read event counter
203 ;-------------------------------------------------------------------------------
206 .def _pmuGetOverflow_
211 mrc p15, #0, r0, c9, c12, #3 ; read overflow
213 mcr p15, #0, r1, c9, c12, #3 ; clear flags
220 ;-------------------------------------------------------------------------------