NetBSD/sys/arch/arm/sa11x0
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
..
genassym.cf
sa11x0_com.c Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
sa11x0_comreg.h Change disclaimer: "THE NETBSD FOUNDATION", not "REGENTS". 2006-04-11 15:24:24 +00:00
sa11x0_comvar.h Change disclaimer: "THE NETBSD FOUNDATION", not "REGENTS". 2006-04-11 15:24:24 +00:00
sa11x0_dmacreg.h Change disclaimer: "THE NETBSD FOUNDATION", not "REGENTS". 2006-04-11 15:24:24 +00:00
sa11x0_gpioreg.h
sa11x0_io_asm.S KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11x0_io.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11x0_irq.S Rewrite the ARM mutex implementation to be of the simple-mutex variety. 2007-03-09 19:21:57 +00:00
sa11x0_irqhandler.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11x0_mcpreg.h
sa11x0_ost.c Various cleanup & KNF. 2006-09-24 15:40:14 +00:00
sa11x0_ostreg.h KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11x0_ppcreg.h integrate kauth. 2006-05-14 21:55:09 +00:00
sa11x0_reg.h Add a symbolic constant for the Infrared Communications Port. 2006-06-27 10:45:06 +00:00
sa11x0_sspreg.h Change disclaimer: "THE NETBSD FOUNDATION", not "REGENTS". 2006-04-11 15:24:24 +00:00
sa11x0_var.h Whitespace nit. 2006-04-12 12:42:27 +00:00
sa11x0.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11x1_pcic.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11x1_pcicreg.h
sa11x1_pcicvar.h merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
sa11xx_pcic.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa11xx_pcicreg.h
sa11xx_pcicvar.h
sa1111_kbc.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa1111_reg.h
sa1111_var.h KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00
sa1111.c KNF. Correct some spelling errors. 2006-06-27 13:58:08 +00:00