165d4e6d83
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we implement _lock_cas() as a restartable atomic squence that is checked in the IRQ handler right before AST processing. (This is safe because, for all practical purposes, there are no SMP pre-v6 ARM systems.) This can serve as a model for other non-MP platforms that lack the necessary atomic operations for mutexes (SuperH, for example). Upshots of this change: - kmutex_t is now down to 8 bytes on ARM; about as good as we can get. - ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes. The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK. That is left as an exercise for the port maintainer. Reviewed and tested by Matt Thomas. |
||
---|---|---|
.. | ||
clock.c | ||
icu.h | ||
isa_io_asm.S | ||
isa_io.c | ||
isa_irq.S | ||
isa_irqhandler.c | ||
isa_shark_machdep.c | ||
isadma_machdep.c | ||
nvram.h | ||
spkrreg.h |