summary refs log tree commit diff stats
path: root/gitlab/issues_text/target_arm/host_missing/accel_missing/2279
blob: c43e4e4390f41956da8b69fbb8e5fa49041c7896 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Debugging with Lauterbach Trace32 -> Cortex-A76, no SP register update
Description of problem:
We do not see changes in the SP_EL1 register value when debugging the QEMU application with Lauterbach Trace32.
Steps to reproduce:
1. Compile bare metal code that uses push and pop instructions (stack).
2. Run QEMU with bare metal code.
3. Connect via Lauterbach Trace32 and check the displayed SP register value.
Additional information:
![T32_badA76_SP_reg_display](/uploads/e6af1ac3e32072274089e6dc0cdf0266/T32_badA76_SP_reg_display.png)
This is a screenshot from QEMU 8.0.0, but updating to QEMU 8.2.0 does not resolve the problem.

I have discussed this with Lauterbach Trace32 support with these results:
- Trace32 uses RSP protocol `p` packets to read some registers, including SP_EL1. GDB seems to use `g` packet.
- QEMU responds to `p` packet with an invalid value, which causes Trace32 to display invalid value.

Some related RSP protocol logs from Trace32.
![T32_sp_1](/uploads/cbe34d19d3ede30549e6c4d781bb6630/T32_sp_1.png)
![T32_sp_2](/uploads/73e22dbf83ec00b939077dfeb7bfa208/T32_sp_2.png)

Different part of RSP protocol log:
```
Sending packet: $p20#d2 ...
receiving packet: ec00004000000000
```
So it looks like Trace32 can receive different values that zero as response to `p` packet.