Gupje/documentation/source/architectures/arm/debugger/arm_debugger_storage.rst
2024-08-02 16:05:02 +02:00

59 lines
5.8 KiB
ReStructuredText

********************************
Debugger Storage Overview on ARM
********************************
Overview of the storage setup on ARM Thumb for the debugger.
To interact with this storage dump you can either dump the storage location and parse the entries or use the *utils/debugger/debugger_archs/armT_processor_state.py* processor state, which is also passed as an argument in **GA_arm_thumb_debugger**.
.. note:: All addresses below asume ``STORAGE_LOCATION`` + **Address**
+---------+-----------------+--------------------------------------------------------------------------------+
| Address | Function | Comment |
+=========+=================+================================================================================+
| 0x0 | R0 | Stores Register R0 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x4 | R1 | Stores Register R1 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x8 | R2 | Stores Register R2 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0xc | R3 | Stores Register R3 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x10 | R4 | Stores Register R4 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x14 | R5 | Stores Register R5 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x18 | R6 | Stores Register R6 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x1c | R7 | Stores Register R7 |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x20 | R8 | Stores Register R8 (Indirect Function Call Target ``IFC``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x24 | R9 | Stores Register R9 (Platform Register ``P``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x28 | R10 | Stores Register R10 (Thread Pointer ``TP``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x2c | R11 | Stores Register R11 (Frame Pointer ``FP``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x30 | R12 | Stores Register R12 (Intra-Procedure-call-scratched-Register ``IP``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x34 | R13 | Stores Register R13 (Stack Pointer ``SP``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x38 | R14 | Stores Register R14 (Link Register ``LR``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x3c | R15 | Stores Register R15 (Program Counter ``PC``) |
+---------+-----------------+--------------------------------------------------------------------------------+
| | | |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x7d8 | DBG_MMU_DISABLE | **DISABLED** ``DEBUGGER`` Disable the MMU on entry and enable the MMU on leave |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x7ec | DBG_JUMP_TO | ``DEBUGGER`` Address to jump to instead of the debugger |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x7f0 | DBG_CONT_EXEC | ``DEBUGGER`` Do not jump in debugger but into |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x7f4 | TEMP X0 | ``DEBUGGER`` Temporary storage for X0 value |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x7f8 | Store X0 | ``DEBUGGER`` Stores exception id for the ``SMC`` call |
+---------+-----------------+--------------------------------------------------------------------------------+
| 0x7fc | JUMP_ADDR | ``DEBUGGER`` Memory location that instructs the debugger where to jump to |
+---------+-----------------+--------------------------------------------------------------------------------+