<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE register_page SYSTEM "registers.dtd">
<!-- Copyright (c) 2010-2026 Arm Limited or its affiliates. All rights reserved. -->
<!-- This document is Non-Confidential. This document may only be used and distributed in accordance with the terms of the agreement entered into by Arm and the party that Arm delivered this document to. -->
<!--The data contained in this document is preliminary and subject to change or correction following further review. -->
<?xml-stylesheet href="one_register.xsl" type="text/xsl" ?>







<register_page>
  <registers>
  
    <register is_register="True" is_internal="False" is_stub_entry="False">
      <reg_short_name>CNTV_CTL</reg_short_name>
        
        <reg_long_name>Counter-timer Virtual Timer Control</reg_long_name>

        <power_domain_text>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether CNTV_CTL is implemented in the Core power domain or in the Debug power domain</power_domain_text>


      
      

    
  <reg_address
      external_access="False"
    mem_map_access="True"
      power_domain="None"
  >
    <reg_component>Timer</reg_component>
    <reg_frame>CNTBaseN</reg_frame>
    <reg_offset><hexnumber>0x03C</hexnumber></reg_offset>
    <reg_instance>CNTV_CTL</reg_instance>
    <reg_access>
      
        
      <reg_access_state>
          <reg_access_type>RW</reg_access_type>
      </reg_access_state>
    </reg_access>
</reg_address>
    
  <reg_address
      external_access="False"
    mem_map_access="True"
      power_domain="None"
  >
    <reg_component>Timer</reg_component>
    <reg_frame>CNTEL0BaseN</reg_frame>
    <reg_offset><hexnumber>0x03C</hexnumber></reg_offset>
    <reg_instance>CNTV_CTL</reg_instance>
    <reg_access>
      
        
      <reg_access_state>
          <reg_access_type>RW</reg_access_type>
      </reg_access_state>
    </reg_access>
</reg_address>



          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        




      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>Control register for the virtual timer.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
          <reg_group>Timer</reg_group>
      </reg_groups>
      <reg_configuration>
        
    
      <configuration_text>
        <para>For more information, see <xref linkend="#CEGHAIAF">'Power and reset domains for the system level implementation of the Generic Timer'</xref>.</para>
      </configuration_text>

      </reg_configuration>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>CNTV_CTL is a 32-bit register.</para>
      </attributes_text>

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="32">
  <text_before_fields/>
  <field id="fieldset_0-31_3" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>31</field_msb>
    <field_lsb>3</field_lsb>
    <rel_range>31:3</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_0-2_2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>ISTATUS</field_name>
    <field_msb>2</field_msb>
    <field_lsb>2</field_lsb>
    <rel_range>2</rel_range>
    <field_description order="before">
      <para>The status of the timer. This bit indicates whether the timer condition is met:</para>
    </field_description>
    <field_description order="after"><para>When the value of the ENABLE bit is 1, ISTATUS indicates whether the timer condition is met. ISTATUS takes no account of the value of the IMASK bit. If the value of ISTATUS is 1 and the value of IMASK is 0, then the timer interrupt is asserted.</para>
<para>When the value of the ENABLE bit is 0, the ISTATUS field is <arm-defined-word>UNKNOWN</arm-defined-word>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Timer condition is not met.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Timer condition is met.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Timer">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_0-1_1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>IMASK</field_name>
    <field_msb>1</field_msb>
    <field_lsb>1</field_lsb>
    <rel_range>1</rel_range>
    <field_description order="before">
      <para>Timer interrupt mask bit. Permitted values are:</para>
    </field_description>
    <field_description order="after">
      <para>For more information, see the description of the ISTATUS bit.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Timer interrupt is not masked by the IMASK bit.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Timer interrupt is masked by the IMASK bit.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Timer">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-0_0" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>ENABLE</field_name>
    <field_msb>0</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Enables the timer. Permitted values are:</para>
    </field_description>
    <field_description order="after"><para>Setting this bit to 0 disables the timer output signal, but the timer value accessible from <register_link state="ext" id="ext-cntv_tval.xml">CNTV_TVAL</register_link> continues to count down.</para>
<note><para>Disabling the output signal might be a power-saving option.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Timer disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Timer enabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Timer">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <text_after_fields/>
</fields>




<reg_fieldset length="32">
  <fieldat id="fieldset_0-31_3" msb="31" lsb="3"/>
  <fieldat id="fieldset_0-2_2" msb="2" lsb="2"/>
  <fieldat id="fieldset_0-1_1" msb="1" lsb="1"/>
  <fieldat id="fieldset_0-0_0" msb="0" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>

      <access_mechanisms>
          


  
    
      <access_permission_text>
        <para>CNTV_CTL can be implemented in any implemented CNTBaseN frame that has virtual timer capability, and in the corresponding CNTEL0BaseN frame.</para>

      </access_permission_text>
      <access_permission_text>
        <para><xref linkend="#CEGDFJAG">'CNTCTLBase status and control fields for the CNTBaseN and CNTEL0BaseN frames'</xref> describes the status fields that identify whether a CNTBaseN frame is implemented, and for an implemented frame:</para>

      </access_permission_text>
      <access_permission_text>
        <list type="unordered">
<listitem><content>Whether the CNTBaseN frame has virtual timer capability.</content>
</listitem><listitem><content>Whether the corresponding CNTEL0BaseN frame is implemented.</content>
</listitem><listitem><content>For an implementation that supports the Realm Management Extension, whether the CNTBaseN frame, and any corresponding CNTEL0BaseN frame, is accessible by Root and Realm accesses.</content>
</listitem><listitem><content>For an implementation that recognizes two Security states, whether the CNTBaseN frame, and any corresponding CNTEL0BaseN frame, is accessible by Non-secure accesses. The CNTBaseN frame is always accessible by Secure accesses.</content>
</listitem></list>

      </access_permission_text>
      <access_permission_text>
        <para>For an implemented CNTBaseN frame that has virtual timer capability:</para>

      </access_permission_text>
      <access_permission_text>
        <list type="unordered">
<listitem><content>CNTV_CTL is accessible in that frame if the value of <register_link state="ext" id="ext-cntacrn.xml">CNTACR&lt;n&gt;</register_link>.RWVT is 1.</content>
</listitem><listitem><content>Otherwise, the CNTV_CTL address in that frame is RAZ/WI.</content>
</listitem></list>

      </access_permission_text>
      <access_permission_text>
        <para>For an implemented CNTEL0BaseN frame:</para>

      </access_permission_text>
      <access_permission_text>
        <list type="unordered">
<listitem><content>CNTV_CTL is accessible in that frame if both:<list type="unordered">
<listitem><content>CNTV_CTL is accessible in the corresponding CNTBaseN frame:</content>
</listitem><listitem><content>The value of <register_link state="ext" id="ext-cntel0acr.xml">CNTEL0ACR</register_link>.EL0VTEN is 1.</content>
</listitem></list>
</content>
</listitem><listitem><content>Otherwise, the CNTV_CTL address in that frame is RAZ/WI.</content>
</listitem></list>
      </access_permission_text>





    
    

      </access_mechanisms>

      <arch_variants>
      </arch_variants>
  </register>
</registers>
<timestamp>2026-03-26 20:27:25</timestamp>
<commit_id>2026-03_rel</commit_id>
</register_page>