220.127.116.11. 782774: A Spurious Event 0x63 Can be Reported on an LDREX That is preceded by a Write to Strongly Ordered Memory Region
A write to a strongly ordered memory region, followed by the execution of an LDREX instruction can cause the “STREX-passed” event to be signaled even if no STREX instruction is executed.
As a result, the event 0x63 count might be faulty, reporting too many “STREX-passed” events. This erratum also affects the associated PMUEVENT signal. This signal will report the same spurious events.
This erratum requires the following conditions:
- The processor executes a write instruction to a strongly-ordered memory region.
- The processor executes an LDREX instruction.
- No DSB instruction is executed and there is no exception call or exception return between the write and the STREX instructions.
Under these conditions, if the write instruction to the strongly ordered memory region receives its acknowledge (BRESP response on AXI) while the LDREX is being executed, this erratum can happen.
This erratum leads to a faulty count of event 0x63 or incorrect signaling of PMUEVENT.
The workaround for this erratum is to insert a DMB or DSB instruction between the write to a strongly ordered memory region and the LDREX instruction.
Did you find the information on this page useful?