• Soby Mathew's avatar
    Fix the CAS spinlock implementation · c97cba4e
    Soby Mathew authored
    
    
    Make the spinlock implementation use ARMv8.1-LSE CAS instruction based
    on a platform build option. The CAS-based implementation used to be
    unconditionally selected for all ARM8.1+ platforms.
    
    The previous CAS spinlock implementation had a bug wherein the spin_unlock()
    implementation had an `sev` after `stlr` which is not sufficient. A dsb is
    needed to ensure that the stlr completes prior to the sev. Having a dsb is
    heavyweight and a better solution would be to use load exclusive semantics
    to monitor the lock and wake up from wfe when a store happens to the lock.
    The patch implements the same.
    
    Change-Id: I5283ce4a889376e4cc01d1b9d09afa8229a2e522
    Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
    Signed-off-by: default avatarOlivier Deprez <olivier.deprez@arm.com>
    c97cba4e
firmware-design.rst 117 KB