<?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 execution_state="AArch64" is_register="True" is_internal="True" is_stub_entry="False">
      <reg_short_name>DBGWVR&lt;n&gt;_EL1</reg_short_name>
        
        <reg_long_name>Debug Watchpoint Value Registers</reg_long_name>



      
            <reg_condition otherwise="UNDEFINED">when FEAT_AA64 is implemented</reg_condition>
          <reg_array>
              <reg_array_start>0</reg_array_start>
              <reg_array_end>63</reg_array_end>
         </reg_array>
      




          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        



    
      
      <reg_mapping>
        
  

    

  

    <mapped_name filename="AArch32-dbgwvrn.xml">DBGWVR&lt;n&gt;</mapped_name>
  <mapped_type>Architectural</mapped_type>
      <mapped_execution_state>AArch32</mapped_execution_state>
    <mapped_from_startbit>31</mapped_from_startbit>
    <mapped_from_endbit>0</mapped_from_endbit>
    <mapped_to_startbit>31</mapped_to_startbit>
    <mapped_to_endbit>0</mapped_to_endbit>
    <mapped_from_rangeset output="31:0">
      <range>
        <msb>31</msb>
        <lsb>0</lsb>
      </range>
    </mapped_from_rangeset>
    <mapped_to_rangeset output="31:0">
      <range>
        <msb>31</msb>
        <lsb>0</lsb>
      </range>
    </mapped_to_rangeset>

      </reg_mapping>
    
      
      <reg_mapping>
        
  

    

  

    <mapped_name filename="ext-dbgwvrn_el1.xml">DBGWVR&lt;n&gt;_EL1</mapped_name>
  <mapped_type>Architectural</mapped_type>
      <mapped_execution_state>External</mapped_execution_state>
    <mapped_from_startbit>63</mapped_from_startbit>
    <mapped_from_endbit>0</mapped_from_endbit>
    <mapped_to_startbit>63</mapped_to_startbit>
    <mapped_to_endbit>0</mapped_to_endbit>
    <mapped_from_rangeset output="63:0">
      <range>
        <msb>63</msb>
        <lsb>0</lsb>
      </range>
    </mapped_from_rangeset>
    <mapped_to_rangeset output="63:0">
      <range>
        <msb>63</msb>
        <lsb>0</lsb>
      </range>
    </mapped_to_rangeset>

      </reg_mapping>

      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>Holds a data address value for use in watchpoint matching. Forms watchpoint n together with control register <register_link state="AArch64" id="AArch64-dbgwcrn_el1.xml">DBGWCR&lt;n&gt;_EL1</register_link>.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
          <reg_group>Debug</reg_group>
      </reg_groups>
      <reg_configuration>
        
    
      <configuration_text>
        <para>If watchpoint n is not implemented then accesses to this register are <arm-defined-word>UNDEFINED</arm-defined-word>.</para>
      </configuration_text>

      </reg_configuration>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>DBGWVR&lt;n&gt;_EL1 is a 64-bit register.</para>
      </attributes_text>

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="64">
  <text_before_fields/>
  <field id="fieldset_0-63_57" 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>RESS[14:8]</field_name>
    <field_msb>63</field_msb>
    <field_lsb>57</field_lsb>
    <rel_range>63:57</rel_range>
    <field_description order="before"><para>Reserved, Sign extended. Software must set all bits in this field to the same value as the most significant bit of the VA field. If all bits in this field are not the same value as the most significant bit of the VA field, then all of the following apply:</para>
<list type="unordered">
<listitem><content>It is <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word> whether the PE ignores this field when comparing an address.</content>
</listitem><listitem><content>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the value read back in each bit of this field is a copy of the most significant bit of the VA field or the value written.</content>
</listitem></list></field_description>
  </field>
  <field id="fieldset_0-56_53-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="True" reserved_type="RES0">
    <field_name>VA[56:53]</field_name>
    <field_msb>56</field_msb>
    <field_lsb>53</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para>Extension to VA[48:2]. For more information, see VA[48:2].</para>
    </field_description>
    <field_resets>
      <field_reset reset_type="Cold">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_LVA3 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-56_53-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="True" reserved_type="RES0">
    <field_name>RESS[7:4]</field_name>
    <field_msb>56</field_msb>
    <field_lsb>53</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para>Extension to RESS[14:8]. For more information, see RESS[14:8].</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-52_49-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="True" reserved_type="RES0">
    <field_name>VA[52:49]</field_name>
    <field_msb>52</field_msb>
    <field_lsb>49</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para>Extension to VA[48:2]. For more information, see VA[48:2].</para>
    </field_description>
    <field_resets>
      <field_reset reset_type="Cold">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_LVA is implemented</fields_condition>
  </field>
  <field id="fieldset_0-52_49-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="True" reserved_type="RES0">
    <field_name>RESS[3:0]</field_name>
    <field_msb>52</field_msb>
    <field_lsb>49</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para>Extension to RESS[14:8]. For more information, see RESS[14:8].</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-48_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>VA[48:2]</field_name>
    <field_msb>48</field_msb>
    <field_lsb>2</field_lsb>
    <rel_range>48:2</rel_range>
    <field_description order="before"><para>Bits[48:2] of the address value for comparison.</para>
<para>When <xref linkend="#FEAT_LVA3">FEAT_LVA3</xref> is implemented, (VA[56:53]:VA[52:49]) forms the upper part of the address value. If FEAT_LVA3 is not implemented, bits VA[56:53] are part of the RESS field.</para>
<para>When <xref linkend="#FEAT_LVA">FEAT_LVA</xref> is implemented, VA[52:49] forms the upper part of the address value. If FEAT_LVA is not implemented, bits [52:49] are part of the RESS field.</para>
<para>Arm deprecates setting DBGWVR&lt;n&gt;_EL1[2] == 1.</para></field_description>
    <field_resets>
      <field_reset reset_type="Cold">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-1_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" rwtype="RES0">
    <field_msb>1</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>1:0</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <text_after_fields/>
</fields>




<reg_fieldset length="64">
  <fieldat id="fieldset_0-63_57" msb="63" lsb="57"/>
  <fieldat id="fieldset_0-56_53-1" label="Bits[56:53]" msb="56" lsb="53"/>
  <fieldat id="fieldset_0-52_49-1" label="Bits[52:49]" msb="52" lsb="49"/>
  <fieldat id="fieldset_0-48_2" msb="48" lsb="2"/>
  <fieldat id="fieldset_0-1_0" msb="1" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>
        <reg_variables>
              <reg_variable variable="n" max="63"/>
        </reg_variables>

      <access_mechanisms>
          


  
    
      <access_permission_text>
        <para>When <xref linkend="#FEAT_Debugv8p9">FEAT_Debugv8p9</xref> is implemented, a PE is permitted to support up to 64 implemented watchpoints.</para>
      </access_permission_text>





    
        
        <access_mechanism accessor="MRS DBGWVR&lt;m&gt;_EL1" type="SystemAccessor">
            <encoding>
                
                <acc_array var="m">
                    <acc_array_range>0-15</acc_array_range>
                </acc_array>
            <access_instruction>MRS &lt;Xt&gt;, DBGWVR&lt;m&gt;_EL1</access_instruction>
                
                <enc n="op0" v="0b10"/>
                
                <enc n="op1" v="0b000"/>
                
                <enc n="CRn" v="0b0000"/>
                
                <enc n="CRm" v="m[3:0]"/>
                
                <enc n="op2" v="0b110"/>
            </encoding>
            <access_permission>
                <ps name="MRS" sections="1" secttype="access_permission">
                <pstext>
let m:integer = UInt(CRm[3:0]);

if !IsFeatureImplemented(FEAT_AA64) then
    Undefined();
elsif (!IsFeatureImplemented(FEAT_Debugv8p9) &amp;&amp; m &gt;= NUM_WATCHPOINTS) || (IsFeatureImplemented(FEAT_Debugv8p9) &amp;&amp; m + (UInt(MDSELR_EL1().BANK) * 16) &gt;= NUM_WATCHPOINTS) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if HaveEL(EL3) &amp;&amp; EL3SDDUndefPriority() &amp;&amp; MDCR_EL3().TDA == '1' then
        Undefined();
    elsif EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_FGT) &amp;&amp; (!HaveEL(EL3) || SCR_EL3().FGTEn == '1') &amp;&amp; HDFGRTR_EL2().DBGWVRn_EL1 == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif EL2Enabled() &amp;&amp; MDCR_EL2().[TDE,TDA] != '00' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif HaveEL(EL3) &amp;&amp; MDCR_EL3().TDA == '1' then
        if EL3SDDUndef() then
            Undefined();
        else
            AArch64_SystemAccessTrap(EL3, 0x18);
        end;
    elsif OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR().TDA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        if IsFeatureImplemented(FEAT_Debugv8p9) then
            X{64}(t) = DBGWVR_EL1(m + (UInt(EffectiveMDSELR_EL1_BANK()) * 16));
        else
            X{64}(t) = DBGWVR_EL1(m);
        end;
    end;
elsif PSTATE.EL == EL2 then
    if HaveEL(EL3) &amp;&amp; EL3SDDUndefPriority() &amp;&amp; MDCR_EL3().TDA == '1' then
        Undefined();
    elsif HaveEL(EL3) &amp;&amp; MDCR_EL3().TDA == '1' then
        if EL3SDDUndef() then
            Undefined();
        else
            AArch64_SystemAccessTrap(EL3, 0x18);
        end;
    elsif OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR().TDA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        if IsFeatureImplemented(FEAT_Debugv8p9) then
            X{64}(t) = DBGWVR_EL1(m + (UInt(EffectiveMDSELR_EL1_BANK()) * 16));
        else
            X{64}(t) = DBGWVR_EL1(m);
        end;
    end;
elsif PSTATE.EL == EL3 then
    if OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR().TDA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        if IsFeatureImplemented(FEAT_Debugv8p9) then
            X{64}(t) = DBGWVR_EL1(m + (UInt(EffectiveMDSELR_EL1_BANK()) * 16));
        else
            X{64}(t) = DBGWVR_EL1(m);
        end;
    end;
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MSRregister DBGWVR&lt;m&gt;_EL1" type="SystemAccessor">
            <encoding>
                
                <acc_array var="m">
                    <acc_array_range>0-15</acc_array_range>
                </acc_array>
            <access_instruction>MSR DBGWVR&lt;m&gt;_EL1, &lt;Xt&gt;</access_instruction>
                
                <enc n="op0" v="0b10"/>
                
                <enc n="op1" v="0b000"/>
                
                <enc n="CRn" v="0b0000"/>
                
                <enc n="CRm" v="m[3:0]"/>
                
                <enc n="op2" v="0b110"/>
            </encoding>
            <access_permission>
                <ps name="MSRregister" sections="1" secttype="access_permission">
                <pstext>
let m:integer = UInt(CRm[3:0]);

if !IsFeatureImplemented(FEAT_AA64) then
    Undefined();
elsif (!IsFeatureImplemented(FEAT_Debugv8p9) &amp;&amp; m &gt;= NUM_WATCHPOINTS) || (IsFeatureImplemented(FEAT_Debugv8p9) &amp;&amp; m + (UInt(MDSELR_EL1().BANK) * 16) &gt;= NUM_WATCHPOINTS) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if HaveEL(EL3) &amp;&amp; EL3SDDUndefPriority() &amp;&amp; MDCR_EL3().TDA == '1' then
        Undefined();
    elsif EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_FGT) &amp;&amp; (!HaveEL(EL3) || SCR_EL3().FGTEn == '1') &amp;&amp; HDFGWTR_EL2().DBGWVRn_EL1 == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif EL2Enabled() &amp;&amp; MDCR_EL2().[TDE,TDA] != '00' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif HaveEL(EL3) &amp;&amp; MDCR_EL3().TDA == '1' then
        if EL3SDDUndef() then
            Undefined();
        else
            AArch64_SystemAccessTrap(EL3, 0x18);
        end;
    elsif OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR().TDA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        if IsFeatureImplemented(FEAT_Debugv8p9) then
            DBGWVR_EL1(m + (UInt(EffectiveMDSELR_EL1_BANK()) * 16)) = X{64}(t);
        else
            DBGWVR_EL1(m) = X{64}(t);
        end;
    end;
elsif PSTATE.EL == EL2 then
    if HaveEL(EL3) &amp;&amp; EL3SDDUndefPriority() &amp;&amp; MDCR_EL3().TDA == '1' then
        Undefined();
    elsif HaveEL(EL3) &amp;&amp; MDCR_EL3().TDA == '1' then
        if EL3SDDUndef() then
            Undefined();
        else
            AArch64_SystemAccessTrap(EL3, 0x18);
        end;
    elsif OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR().TDA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        if IsFeatureImplemented(FEAT_Debugv8p9) then
            DBGWVR_EL1(m + (UInt(EffectiveMDSELR_EL1_BANK()) * 16)) = X{64}(t);
        else
            DBGWVR_EL1(m) = X{64}(t);
        end;
    end;
elsif PSTATE.EL == EL3 then
    if OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR().TDA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        if IsFeatureImplemented(FEAT_Debugv8p9) then
            DBGWVR_EL1(m + (UInt(EffectiveMDSELR_EL1_BANK()) * 16)) = X{64}(t);
        else
            DBGWVR_EL1(m) = X{64}(t);
        end;
    end;
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>

      </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>