Hi Experts,
I have a question about "STP" instruction in Cortex-A53.
STP W6, W6, [SP, #20] --> after it executes, the memory of [sp, #16] and [sp, #28] are corrupted.
I don't know why cause it.
Can you help to explain the reason?
The environment is:
Before STP executes:
W6=0x10, SP=0xFFFD36D0, MMU disable, dcache disable, icache enable.
memory content is:
[0xFFFD36E0]: 0xFFFD3740 0x00000000 0x00000001 0xFFFD3750
After STP executes:
[0xFFFD36E0]: 0x00000000 0x00000010 0x00000010 0x00100000
Thanks for your attention!
Best Regards,
Emmy
Hi MarekBykowski,
Thanks for your explaintion!
If I map the region to memory, the issue is disappeared.
But if the region is changed to DDR which is connected AXI bus, under the same environment(no MMU, device type), the code can work well.
Does it be related to the different bus interfaces? AXI is ok, but AHB is wrong.
Emmy0: AXI is ok, AHB is wrong
I don't think AHB is wrong. For example the Static Memory my board is using is connected to the CCN (Cache Coherent Network) through AXI4, not AHB. AHB is less offering and less complex and eg. Coresight uses it.
For the AXI4 behind Static Memory I can run equally well the code being attributed to the Devices and Memory.
Yes, if Static Memory via AXI4, it works well.
Unfortunately, my board's Staic Memory is connected AHB, so STP access address is restricted to 64-bit align. I have worked around in code to avoid "STP" generation. Now it can work.
Thanks!