13.3.3. CP14 c1, Debug Status and Control Register (DSCR)

The Debug Status and Control Register contains status and configuration information about the state of the debug system. Figure 13.3 shows the format of the Debug Status and Control Register.

Figure 13.3. Debug Status and Control Register format


Table 13.4 lists the bit field definitions for the Debug Status and Control Register.

Table 13.4. Debug Status and Control Register bit field definitions

BitsCore viewExternal viewReset valueDescription
[31]UNP/SBZPUNP/SBZP-Reserved.
[30]RR0

The rDTRfull flag:

0 = rDTR empty

1 = rDTR full.

This flag is automatically set on writes by the DBGTAP debugger to the rDTR and is cleared on reads by the core of the same register. No writes to the rDTR are enabled if the rDTRfull flag is set.

[29]RR0

The wDTRfull flag:

0 = wDTR empty

1 = wDTR full.

This flag is automatically cleared on reads by the DBGTAP debugger of the wDTR and is set on writes by the core to the same register.

[28:20]UNP/SBZPUNP/SBZP-Reserved.
[19]RR0Imprecise Data Aborts Ignored. This read-only bit is set by the core in Debug state following a Data Memory Barrier operation, and cleared on exit from Debug state. When set, the core does not act on imprecise data aborts. However, the sticky imprecise data abort bit is set if an imprecise data abort occurs when in Debug state.
[18]RR0Non-secure World Status bit 0 = The processor is in Secure state. NS bit = 0 or Secure Monitor mode.1 = The processor is in Non-secure state. NS bit = 1 and not Secure Monitor mode.
[17]RRn/aNot Secure Privilege Non-Invasive Debug Enable, SPNIDEN, input pin.0 = SPNIDEN input pin is HIGH.1 = SPNIDEN input pin is LOW.
[16]RRn/aNot Secure Privilege Invasive Debug Enable, SPIDEN, input pin.0 = SPIDEN input pin is HIGH.1 = SPIDEN input pin is LOW.
[15]RWR0

The Monitor debug-mode enable bit:

0 = Monitor debug-mode disabled

1 = Monitor debug-mode enabled.

For the core to take a debug exception, Monitor debug-mode has to be both selected and enabled, bit 14 clear and bit 15 set.

[14]RRW0

Mode select bit:

0 = Monitor debug-mode selected

1 = Halting debug-mode selected and enabled.

[13]RRW0

Execute ARM instruction enable bit:

0 = Disabled

1 = Enabled.

If this bit is set, the core can be forced to execute ARM instructions in Debug state using the Debug Test Access Port. If this bit is set when the core is not in Debug state, the behavior of the processor is architecturally Unpredictable. For ARM1176JZ-S processors it has no effect.

[12]RWR0

User mode access to comms channel control bit:

0 = User mode access to comms channel enabled

1 = User mode access to comms channel disabled.

If this bit is set and a User mode process tries to access the DIDR, DSCR, or the DTR, the Undefined instruction exception is taken. Because accessing the rest of CP14 debug registers is never possible in User mode, see Executing CP14 debug instructions, setting this bit means that a User mode process cannot access any CP14 debug register.

[11]RRW0

Interrupts bit:

0 = Interrupts enabled

1 = Interrupts disabled.

If this bit is set, the IRQ and FIQ input signals are inhibited.[a]

[10]RRW0

DbgAck bit.

If this bit is set, the DBGACK output signal (see External signals) is forced HIGH, regardless of the processor state.a

[9]RRW0

Powerdown disable:

0 = DBGNOPWRDWN is LOW

1 = DBGNOPWRDWN is HIGH.

See External signals.

[8]RRC0

Sticky Undefined flag:

0 = No Undefined exception trap occurred in Debug state since the last time this bit was cleared.

1 = An undefined exception occurred while in Debug state since the last time this bit was cleared.

This bit is cleared on reads of a DBGTAP debugger to the DSCR. The Sticky Undefined bit does not prevent additional instructions from being issued.

The Sticky Undefined bit is not set by Undefined exceptions occurring when not in Debug state.

[7]RRC0

Sticky imprecise Data Aborts flag:

0 = No imprecise Data Aborts occurred since the last time this bit was cleared

1 = An imprecise Data Abort has occurred since the last time this bit was cleared.

It is cleared on reads of a DBGTAP debugger to the DSCR.

The sticky imprecise data abort bit is only set by imprecise data aborts occurring when in Debug state.

Note

In previous versions of the debug architecture, the sticky imprecise data abort was set when the processor took an imprecise data abort. In version 6.1, it is set when an imprecise data abort is detected.

[6]RRC0

Sticky precise Data Abort flag:

0 = No precise Data Abort occurred since the last time this bit was cleared

1 = A precise Data Abort has occurred since the last time this bit was cleared.

This flag is meant to detect Data Aborts generated by instructions issued to the processor using the Debug Test Access Port. Therefore, if the DSCR[13] execute ARM instruction enable bit is a 0, the value of the sticky precise Data Abort bit is architecturally Unpredictable. For ARM1176JZ-S processors the sticky precise Data Abort bit is set regardless of DSCR[13]. It is cleared on reads of a DBGTAP debugger to the DSCR.

The sticky precise data abort bit is only set by precise data aborts occurring when in Debug state.

[5:2]RWRb0000

Method of debug entry bits:

b0000 = a Halt DBGTAP instruction occurred

b0001 = a breakpoint occurred

b0010 = a watchpoint occurred

b0011 = a BKPT instruction occurred

b0100 = an EDBGRQ signal activation occurred

b0101 = a vector catch occurred

b0110 = reserved

b0111 = reserved

b1xxx = reserved.

These bits are set to indicate any of:

  • the cause of a Debug Exception

  • the cause for entering Debug state

A Prefetch Abort or Data Abort handler must first check the IFSR or DFSR register to determine a debug exception has occurred before checking the DSCR to find the cause. These bits are not set on any events in Debug state.

[1]RR1

Core restarted bit:

0 = the processor is exiting Debug state

1 = the processor has exited Debug state.

The DBGTAP debugger can poll this bit to determine when the processor has exited Debug state. See Debug state for a definition of Debug state.

[0]RR0

Core halted bit:

0 = the processor is in normal state

1 = the processor is in Debug state.

The DBGTAP debugger can poll this bit to determine when the processor has entered Debug state. See Debug state for a definition of Debug state.

[a] Bits DSCR[11:10] can be controlled by a DBGTAP debugger to execute code in normal state as part of the debugging process. For example, if the DBGTAP debugger has to execute an OS service to bring a page from disk into memory, and then return to the application to see the effect this change of state produces, it is undesirable that interrupts are serviced during execution of this routine.


Bits [5:2] are set to indicate:

A prefetch abort or data abort handler determines if it must jump to the debug monitor target by examining the IFSR or DFSR respectively. A DBGTAP debugger or debug monitor target can determine the specific debug event that caused the Debug state or debug exception entry by examining DSCR[5:2].

Copyright © 2004-2009 ARM Limited. All rights reserved.ARM DDI 0333H
Non-Confidential