[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS: cvs.openbsd.org: src

Module name:	src
Changes by:	miod_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org	2007/12/19 15:05:06

Modified files:
	sys/arch/aviion/aviion: av400_machdep.c machdep.c 
	sys/arch/aviion/conf: files.aviion 
	sys/arch/aviion/dev: dart_syscon.c if_le_syscon.c if_le_vme.c 
	                     syscon.c vme.c vmevar.h 
	sys/arch/aviion/include: av400.h avcommon.h board.h cpu.h intr.h 
Added files:
	sys/arch/aviion/aviion: cio_clock.c 
	sys/arch/aviion/dev: sysconvar.h 
Removed files:
	sys/arch/aviion/dev: sysconreg.h 

Log message:
Overhaul interrupt handling, in order to make it (arguably) simpler and
more board design-independent.

The main changes are:
- define logical interrupt sources, which match the on-board devices as
well as the seven VME interrupt sources. Use these whenever possible
when registering interrupts in the drivers, so that the actual interrupt
mask layouts are hidden.
- make the on-board and VME interrupt handlers separate. On-board interrupt
handlers are not really associated to an interrupt vector, only to a
given interrupt source, and only one handler can be registered for a
logical interrupt source. On the other hand, VME interrupts come with a
vector number, and can be shared. This allows VME devices to really use
the whole 256 vectors space, starting at vector zero.
- update the real interrupt masks upon interrupt handler registration and
removal, so that only interrupt sources for which a handler exists may
be enabled.
- update the VME interrupt allocation logic to allow exclusive vector
- move the Z8536 clock routines to their own file, since they are not
AV400-specific; while there, calibrate the delay constant upon startup
for more accurate delay().

The vme driver is the only one left with AV400 tentacles left, to be fixed
very soon.