Почему ldaxr падает на реальном железе, но работает в QEMU

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

Автор пишет операционную систему floss для AArch64 и реализует спин-блокировку на инструкциях ldaxr/stxr. В QEMU всё работает, но на Raspberry Pi 5 возникает Data Abort. Причина — в атрибутах памяти: для эксклюзивного доступа необходима кэшируемая память с политикой Write-Back. Отключение кэша через SCTLR.C или использование Non-cacheable/Write-Through атрибутов приводит к исключению. Статья разбирает типы памяти, атрибуты MAIR и различия между эмуляцией и реальным железом.

Судя по этому эксперименту, похоже, что инструкция load exclusive не работает без Write-Back.

Ещё за этот день

2026-10-11