About address spaces
An address space is a region of memory that is defined by specific attributes. For example, a memory region can be Secure or Non-Secure.
You can refer to different address spaces in Arm® Debugger using address space prefixes. These can be used for various debugging activities, such as:
- Setting a breakpoint in a specific memory space.
- Reading or writing memory.
- Loading symbols associated with a specific memory space.
NoteSee Address space prefixes for information on how to use an address space prefix with the debug commands.
Arm Debugger also uses these prefixes when reporting the current memory space where the execution stopped, for example:
For address spaces in Armv7-based processors:
Execution stopped in SVC mode at S:0x80000000
Execution stopped in SYS mode at breakpoint 1: S:0x80000BA8.
For address spaces in Armv8-based processors:
Execution stopped in EL3h mode at: EL3:0x0000000080001500
Execution stopped in EL1h mode at breakpoint 2.2: EL1N:0x0000000080000F6C
If the core is stopped in exception level EL3, the debugger cannot reliably determine whether the translation regime at EL1/EL0 is configured for Secure or Non-secure access. This is because the Secure Monitor can change this at run-time when switching between Secure and Non-secure Worlds. Memory accesses from EL3, such as setting software breakpoints at EL1S: or EL1N: addresses, might cause corruption or the target to lockup.
The memory spaces for the EL1 and EL0 exception levels have the same prefix because the same translation tables are used for both EL0 and EL1. These translation tables are used for either Secure EL1/EL0 or Non-secure EL1/EL0. The consequence of this is that if the core, in AArch64 state, is stopped in EL0 in secure state, then the debugger reports:
Execution stopped in EL0h mode at: EL1S:0x0000000000000000.
EL1S:here refers to the memory space that is common to EL0 and EL1. It does not refer to the exception level.