swp_emulation.rst 1.2 KB

123456789101112131415161718192021222324252627
  1. Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE)
  2. ---------------------------------------------------------------------
  3. ARMv6 architecture deprecates use of the SWP/SWPB instructions, and recommeds
  4. moving to the load-locked/store-conditional instructions LDREX and STREX.
  5. ARMv7 multiprocessing extensions introduce the ability to disable these
  6. instructions, triggering an undefined instruction exception when executed.
  7. Trapped instructions are emulated using an LDREX/STREX or LDREXB/STREXB
  8. sequence. If a memory access fault (an abort) occurs, a segmentation fault is
  9. signalled to the triggering process.
  10. /proc/cpu/swp_emulation holds some statistics/information, including the PID of
  11. the last process to trigger the emulation to be invocated. For example::
  12. Emulated SWP: 12
  13. Emulated SWPB: 0
  14. Aborted SWP{B}: 1
  15. Last process: 314
  16. NOTE:
  17. when accessing uncached shared regions, LDREX/STREX rely on an external
  18. transaction monitoring block called a global monitor to maintain update
  19. atomicity. If your system does not implement a global monitor, this option can
  20. cause programs that perform SWP operations to uncached memory to deadlock, as
  21. the STREX operation will always fail.