ID_AA64DFR1_EL1, AArch64 Debug Feature Register 1

The ID_AA64DFR1_EL1 characteristics are:

Purpose

Provides top level information about the debug system in AArch64.

Configuration

There are no configuration notes.

Attributes

ID_AA64DFR1_EL1 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
ABL_CMPsDPFZSEBEPITEABLEPMICNTRSPMU
CTX_CMPsWRPsBRPsSYSPMUID

ABL_CMPs, bits [63:56]
When FEAT_ABLE is implemented:

Number of breakpoints that support address linking, minus 1. Defined values are:

ABL_CMPsMeaning
0x00..0x3F

Number of breakpoints that support address linking minus 1.

All other values are reserved.

The number of breakpoints that support address linking is never more than either the number of breakpoints or the number of watchpoints.


Otherwise:

Reserved, RES0.

DPFZS, bits [55:52]

Behavior of the cycle counter when event counting is frozen by a Statistical Profiling management event. Defined values are:

DPFZSMeaning
0b0000

The cycle counter PMCCNTR_EL0 is never affected by PMCR_EL0.FZS.

0b0001

The cycle counter PMCCNTR_EL0 does not count when PMCR_EL0.DP is 1 and counting by event counters accessible to EL1 is frozen by the PMCR_EL0.FZS mechanism.

FEAT_SPE_DPFZS implements the functionality identified by the value 0b0001.

If FEAT_PMUv3p7 is not implemented or FEAT_SPEv1p2 is not implemented, the only permitted value is 0b0000.

If FEAT_PMUv3p9 is implemented and FEAT_SPEv1p4 are implemented, the only permitted value is 0b0001.

EBEP, bits [51:48]

Exception-based event profiling. Defined values are:

EBEPMeaning
0b0000

Exception-based event profiling not implemented.

0b0001

Exception-based event profiling implemented.

All other values are reserved.

FEAT_EBEP implements the functionality identified by the value 0b0001.

ITE, bits [47:44]

Instrumentation Trace Extension. Defined values are:

ITEMeaning
0b0000

Instrumentation Trace Extension not implemented.

0b0001

Instrumentation Trace Extension implemented.

All other values are reserved.

FEAT_ITE implements the functionality identified by the value 0b0001.

ABLE, bits [43:40]

Address Breakpoint Linking Extension. Defined values are:

ABLEMeaning
0b0000

Address Breakpoint Linking Extension not implemented.

0b0001

Address Breakpoint Linking Extension implemented.

All other values are reserved.

FEAT_BWE implements the address range breakpoints and mismatch breakpoints part of the functionality identified by the value 0b0001.

FEAT_ABLE implements the functionality identified by the value 0b0001.

PMICNTR, bits [39:36]

PMU fixed-function instruction counter. Defined values are:

PMICNTRMeaning
0b0000

PMU fixed-function instruction counter not implemented.

0b0001

PMU fixed-function instruction counter implemented.

All other values are reserved.

FEAT_PMUv3_ICNTR implements the functionality identified by the value 0b0001.

If FEAT_PMUv3 is not implemented, then the only permitted value is 0b0000.

SPMU, bits [35:32]

System PMU extension. Defined values are:

SPMUMeaning
0b0000

System PMU extension not implemented.

0b0001

System PMU extension implemented.

All other values are reserved.

FEAT_SPMU implements the functionality identified by the value 0b0001.

CTX_CMPs, bits [31:24]

Context-aware breakpoints. Defined values are:

CTX_CMPsMeaning
0x00

ID_AA64DFR0_EL1.CTX_CMPs is the number of context-aware breakpoints, minus 1.

0x01..0x3F

Number of context-aware breakpoints minus 1.

All other values are reserved.

The value of this field is never greater than ID_AA64DFR1_EL1.BRPs.

WRPs, bits [23:16]

Watchpoints. Defined values are:

WRPsMeaning
0x00

ID_AA64DFR0_EL1.WRPs is the number of watchpoints, minus 1.

0x01..0x3F

Number of watchpoints minus 1.

All other values are reserved.

BRPs, bits [15:8]

Breakpoints. Defined values are:

BRPsMeaning
0x00

ID_AA64DFR0_EL1.BRPs is the number of breakpoints, minus 1.

0x01..0x3F

Number of breakpoints minus 1.

All other values are reserved.

SYSPMUID, bits [7:0]
When FEAT_SPMU is implemented:

System PMU ID. Indicates the largest value that can be written to SPMSELR_EL0.SYSPMUSEL. Defined values are:

SYSPMUIDMeaning
0x00..0x1F

The largest supported value that can be written to SPMSELR_EL0.SYSPMUSEL.

All other values are reserved.

Since System PMUs might not be contiguously accessible, this field does not necessarily indicate the total number of accessible System PMUs.


Otherwise:

Reserved, RES0.

Accessing ID_AA64DFR1_EL1

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, ID_AA64DFR1_EL1

op0op1CRnCRmop2
0b110b0000b00000b01010b001

if PSTATE.EL == EL0 then if IsFeatureImplemented(FEAT_IDST) then if EL2Enabled() && HCR_EL2.TGE == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.SystemAccessTrap(EL1, 0x18); else UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TID3 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else X[t, 64] = ID_AA64DFR1_EL1; elsif PSTATE.EL == EL2 then X[t, 64] = ID_AA64DFR1_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = ID_AA64DFR1_EL1;


04/07/2023 11:24; 1b994cb0b8c6d1ae5a9a15edbc8bd6ce3b5c7d68

Copyright © 2010-2023 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.