[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.

Visit your host, monkey.org