• Jeffrey Lee's avatar
    Update atomic_process_smp to cope with the possibility of the process function... · eb3ebf01
    Jeffrey Lee authored
    Update atomic_process_smp to cope with the possibility of the process function altering the state of the exclusive monitor. Prefer CPS over MSR when performing PSR manipulation.
    
    Detail:
      s/atomic - Since the exclusive monitor can have its state affected by almost anything, atomic_process_smp can't assume that the state remains stable across the call to the user's process function. Instead we must perform our LDREX-STREX sequence after the callback, manually checking that the value being updated hasn't been altered by anyone else while the process function was executing.
      s/spin, s/spinrw - When disabling interrupts prefer CPS over MSR. Apart from making the sequences one instruction shorter, CPS generally delivers better performance than the equivalent MSR.
    Admin:
      Tested on Cortex-A15
    
    
    Version 0.03. Tagged as 'SyncLib-0_03'
    eb3ebf01
spinrw 11.3 KB