Por qué ldaxr falla en hardware real: el misterio de la cacheabilidad en AArch64

When Ldaxr Doesn't Work: Exclusive Accesses and Cacheability on AArch64

Al implementar un spin lock con ldaxr/stxr en mi sistema operativo floss para AArch64, todo funcionaba en QEMU pero en la Raspberry Pi 5 surgía una excepción Data Abort. La causa: el bit C de SCTLR deshabilitaba la caché de datos, tratando la memoria como no cacheable. Los accesos exclusivos requieren atributos Write-Back; sin ellos, la instrucción ldaxr no es atómica y provoca una excepción.

Cuando la caché de datos está deshabilitada, todas las instrucciones de carga y almacenamiento a memoria cacheable se tratan como si fueran no cacheables y son incoherentes con las cachés tanto de este núcleo como de otros núcleos del clúster.

Más de este día

2026-10-11