NetBSD/sys/arch/arm/iomd
thorpej 165d4e6d83 Rewrite the ARM mutex implementation to be of the simple-mutex variety.
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.
2007-03-09 19:21:57 +00:00
..
console Remove an unneeded include of the now-deleted <arm/iomd/rpckbdvar.h>. 2006-08-16 07:59:44 +00:00
files.iomd Arrange things so that if MONITOR isn't defined in the kernel configration, 2006-08-19 13:34:15 +00:00
iomd.c ANSIfy, un-__P, and generally KNF. 2006-08-05 18:22:57 +00:00
iomd_clock.c TRUE -> true, FALSE -> false 2007-02-22 05:14:04 +00:00
iomd_dma.c ANSIfy, un-__P, and generally KNF. 2006-08-05 18:22:57 +00:00
iomd_dma.h
iomd_fiq.S
iomd_io.c ANSIfy, un-__P, and generally KNF. 2006-08-05 18:22:57 +00:00
iomd_io_asm.S
iomd_irq.S Rewrite the ARM mutex implementation to be of the simple-mutex variety. 2007-03-09 19:21:57 +00:00
iomd_irqhandler.c Don't do softinit_init from irq_init. 2007-02-19 21:46:32 +00:00
iomdiic.c use the "i2cbus" interface attribute rather than putting a string name 2006-06-26 18:21:38 +00:00
iomdiicvar.h
iomdkbc.c Interpret the argument to iomdkbc_set_poll() correctly. Quite how we 2006-10-21 22:45:03 +00:00
iomdkbcvar.h
iomdreg.h
iomdvar.h
makemodes.awk The log2_bpp fields of the mode list generated by makemodes.awk weren't 2006-08-19 11:01:56 +00:00
qms.c Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
vidc.h Move calculation of a screen mode's frame rate out of makemodes.awk into 2006-08-18 23:25:10 +00:00
vidc20.c ANSIfy, un-__P, and generally KNF. 2006-08-05 18:22:57 +00:00
vidc20config.c When setting the FIFO preload, chose an entirely safe value rather than 2006-10-28 17:39:59 +00:00
vidc20config.h Un-__P 2006-08-15 22:58:47 +00:00
vidcaudio.c TRUE -> true, FALSE -> false 2007-02-22 05:14:04 +00:00
vidcaudiovar.h
vidcvideo.c Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
vidcvideo.h Un-__P 2006-08-15 23:32:09 +00:00