RealView
DebuggerState must be set to ARM on ARM architecture version 3 and below, and on non-T variants of ARM architecture version 4. No instructions exist in these architectures that can switch between ARM and Thumb states.
On T variants of ARM architecture 4 and above, State can be either ARM or Thumb.
On non-T variants of ARM architecture version 5 and above, State can be either ARM or Thumb, but instructions that switch between ARM and Thumb states only function correctly as long as the program remains in ARM state. If the program attempts to switch to Thumb state, the first instruction that is executed after the attempted switch causes an undefined instruction exception. Entry into that exception then switches back to ARM state. The exception handler can detect that this was the cause of the exception from the fact that the T bit of SPSR_und is set.