ARMv7 Generic Timers: Difference between revisions

m
mark stub
[unchecked revision][unchecked revision]
m (Virtual counter stream events)
m (mark stub)
 
(7 intermediate revisions by 2 users not shown)
Line 1:
This page is current with the description of the ARM Generic Timer behaviour specified in the ARMv7 manual. There may have been differences introduced in ARMv8 and AArch64. This page does not take such differences, if they exist, into account.
 
This page is meant to be a quick reference and refresher on the way the ARMv7 generic timers work.
 
= Overview =
Line 80 ⟶ 82:
There is no statement about whether or not it can be accessed from PL3 monitors.
 
== Virtual counter Event Streams ==
 
Events can be triggered by the virtcounter through the use of the CNTKCTL register. You would set the bit position whose transition from 0=>1 or 1=>0 will trigger an event, and then enable the event. The design of this feature obviously means that virtcounter events can only be triggered on power-of-2 counter-values.
Line 89 ⟶ 91:
* The timers can operate in either physical or virtual time.
* The timers output signals can be configured as level-sensitive PPI IRQ signals to the GICC.
 
*
== Security Extentions not implemented ==
* Physical timer and virtual timer.
 
The virtual timer should be used by PL1 kernels. The physical timer should ideally be left alone.
 
== Security extensions implemented, no Hypervisor extensions implemented ==
* '''non-secure''' physical timer.
* '''Secure''' physical timer.
* Virtual timer.
 
The virtual timer should be used by non-secure PL1 kernels.
The secure physical timer should be used by PL3 monitors and '''secure''' PL1 kernels.
The non-secure physical timer should be ideally left alone, and seems to exist solely for the sake of supporting non-secure PL1 kernels which insist on using the physcounter and physical registers instead of the virtcounter and virtual registers.
 
== Security extensions and hypervisor extensions implemented ==
* '''Non-secure''' PL1 physical timer.
* '''Secure''' PL1 physical timer.
* '''Non-secure''' PL2 physical timer.
* Virtual timer.
 
The virtual timer should be used by non-secure PL1 kernels.
The secure PL1 physical timer should be used by '''secure''' PL1 kernels.
The '''non-secure''' PL2 physical timer should be used by PL2 hypervisors.
The '''non-secure''' PL1 physical timer should be left alone, ideally and seems to exist solely for the sake of supporting non-secure PL1 kernels that insist on using the physcounter and physical registers instead of the virtcounter and virtual registers.
 
== Registers ==
{{stub|section=y}}
 
 
== CNTFREQ ==
{{stub|section=y}}
 
[[Category:ARM]]
[[Category:Timers]]