Exclusive monitor (LDREX/STREX)
Il meccanismo hardware di ARM per le operazioni atomiche di lettura-modifica-scrittura: un load marca un indirizzo e lo store riesce solo se nessun altro lo ha toccato nel frattempo.
LDREX legge un valore e chiede al monitor di sorvegliare quell'indirizzo. Il programma calcola il nuovo valore e STREX tenta di riscriverlo. Se nel frattempo è successo qualcosa — un altro core ha scritto lì, o è intervenuto un interrupt — lo store fallisce, STREX restituisce 1 e il codice ricomincia il ciclo. Il principio si chiama load-linked/store-conditional ed esisteva già in MIPS; ARM lo adottò con ARMv6.
Dal Cortex-M3 in su, ogni ingresso in un'eccezione azzera il monitor, quindi un incremento nel ciclo principale non può collidere con lo stesso incremento in una ISR. Il Cortex-M0 non ha affatto queste istruzioni, ed è per questo che le operazioni atomiche vi si realizzano mascherando gli interrupt all'interno di una sezione critica.