History log of /src/sys/arch/arm/conf/files.footbridge |
Revision | | Date | Author | Comments |
1.13 |
| 03-Dec-2007 |
ad | Interrupt handling changes, in discussion since February:
- Reduce available SPL levels for hardware devices to none, vm, sched, high. - Acquire kernel_lock only for interrupts at IPL_VM. - Implement threaded soft interrupts.
|
1.12 |
| 19-Sep-2006 |
he | branches: 1.12.8; 1.12.24; 1.12.26; 1.12.28; 1.12.30; 1.12.36; Convert the NetBSD/cats port to use generic TODR.
This gets rid of the now-unneded "todclock" and "todservice" attributes from the footbridge device files, which should allow netwinder to build again after its conversion to generic TODR.
Resulting kernel verified to boot up OK on gxemul (after my recent fixes of the gxemul package to emulate free-running timers).
|
1.11 |
| 03-Jan-2003 |
thorpej | branches: 1.11.18; 1.11.48; 1.11.50; Use the generic irq_dispatch.S
|
1.10 |
| 03-Nov-2002 |
chris | Checkin new interrupt handling code for the footbridge. This is based upon Jason's work on xscale.
Most of the interrupt handling code is now written in C using an asm stub to call into the C code.
spl* now only updates a software mask, and does not update the hardware, this should be much faster.
The new code works well on cats, it's untested on netwinder, but should work.
The code implements generic soft interrupts.
More work is still required to bring the isa interrupt handling code upto scratch currently all isa interrupts are handled at IPL_BIO on the footbridge. This may cause isa interrupts to be handled later than they should be. I plan to fix this in the near future.
|
1.9 |
| 18-Oct-2002 |
thorpej | branches: 1.9.2; Make sure the footbridge device has the interface attribute.
|
1.8 |
| 12-Apr-2002 |
thorpej | Use the bus_space_generic bus space ops.
|
1.7 |
| 10-Apr-2002 |
thorpej | G/c FOOTBRIDGE option.
|
1.6 |
| 28-Nov-2001 |
lukem | - convert usage of "defopt" to "defflag" where the relevant option does not support a value (e.g., it's to be used as "options FOO" instead of "options FOO=xxx"). options that take a value were converted to defparam recently. - minor whitespace & formatting cleanups
|
1.5 |
| 20-Jun-2001 |
chris | branches: 1.5.2; 1.5.4; 1.5.10; Remove defopt EBSA285. Move the files from footbridge that are cats specific. Remove EBSA285 kernel as people should be able to use the generic cats kernel for EBSA285 systems.
|
1.4 |
| 12-Jun-2001 |
matt | Move netwinder_machdep.c to files.netwinder. Eliminate opt_netwinder.h and use #ifdef netwinder insead. XXX ebsa285_machdep.c should move to the cats directory and files.cats
|
1.3 |
| 11-Jun-2001 |
chris | Move defopt FOOTBRIDGE to where it really should be in files.footbridge, which is where I should have left it.
|
1.2 |
| 09-Jun-2001 |
chris | Move the footbridge dir out of arm32 into arm.
|
1.1 |
| 23-May-2001 |
chris | Add a files.footbridge for inclusion by cats and netwinder. This is to make moving of the footbridge dir easier (when it eventually moves from arm32)
Also remove EBSA285 defopt from the netwinder file as the netwinder isn't an eval board.
|
1.5.10.6 |
| 03-Jan-2003 |
thorpej | Sync with HEAD.
|
1.5.10.5 |
| 11-Nov-2002 |
nathanw | Catch up to -current
|
1.5.10.4 |
| 18-Oct-2002 |
thorpej | Sync with HEAD.
|
1.5.10.3 |
| 17-Apr-2002 |
nathanw | Catch up to -current.
|
1.5.10.2 |
| 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.5.10.1 |
| 20-Jun-2001 |
nathanw | file files.footbridge was added on branch nathanw_sa on 2002-01-08 00:23:10 +0000
|
1.5.4.2 |
| 23-Jun-2002 |
jdolecek | catch up with -current on kqueue branch
|
1.5.4.1 |
| 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.5.2.1 |
| 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.9.2.1 |
| 09-Nov-2002 |
bjh21 | Catch up with -current.
|
1.11.50.1 |
| 22-Oct-2006 |
yamt | sync with head
|
1.11.48.1 |
| 18-Nov-2006 |
ad | Sync with head.
|
1.11.18.2 |
| 07-Dec-2007 |
yamt | sync with head
|
1.11.18.1 |
| 30-Dec-2006 |
yamt | sync with head.
|
1.12.36.1 |
| 08-Dec-2007 |
mjf | Sync with HEAD.
|
1.12.30.1 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.12.28.3 |
| 01-Jan-2008 |
chris | Make branch build again following sync to head.
|
1.12.28.2 |
| 01-Jan-2008 |
chris | Sync with HEAD.
|
1.12.28.1 |
| 11-Aug-2007 |
chris | Initial check-in of reworked arm interrupt routines.
Main things to note on this branch: * spl routines are inlined, less complex, and small (kernel drops in size) * interrupts are handled in priority order (for most things it doesn't matter, but pending ipls are used to determine if there is any work to do) * arm_irqhandler.c is derived from footbridge_irqhandler.c, which was based on work by thorpej. * The code tries to touch hardware as little as possible. * spl masks are no longer tracked, as the system is based on pending ipls
The shared code uses global ipl lists to track which interrupt handlers are attached to which ipl (arm_iplq[]).
Interrupt sources register with the common code to indicate: * how many irq lines they have * a function to set the hardware mask. * call arm_intr_claim and arm_intr_disestablish to setup handlers
When an interrupt occurs the ipl is flagged as pending, in ipls_pending. If it can be handled at the current_ipl_level the code does so. If it can't be handled it's left until the current_ipl_level drops.
As the ipl level changes down a quick test is made of the new ipl level against the ipls_pending value. If an ipl is pending arm_intr_splx_lifter is called to handle the pending ipls.
It should be noted that all interrupts are left enabled at the hardware level, interrupts are only masked when they occur. They are only re-enabled after it's interrupt handler is called. Hardware masks are not changed at any other time.
Soft interrupts are treated the same as hardware interrupts, they register as a provider, and do not get treated specially. All the soft interrupt handlers are placed onto the relevant global ipl queue, the same as hard interrupts handlers.
At the moment only footbridge within a cats has been updated to use the new handling.
Todo: * change the handling of interrupts, so that the hardware doesn't register a routine to fetch the hardware status. Instead is makes a call which provides the mask. This removes the primary flag when registering an interrupt provider. It also makes more sense with multiple interrupt sources. * Arm v5 has the clz asm, which could be used instead of the carefully hand rolled arm_intr_fls function. * switch cats isa support to use this framework. * switch iomd and acorn32 to use this framework. * switch shark to use this framework. * port any other arm platforms that are interested * examine overlaps between this code and ppcoea-renovation branch. * add support for different trigger types (Edge, level, pulse, etc)
(note that iomd and shark currently touch hardware on every spl change, hence why they're targets to port)
|
1.12.26.1 |
| 09-Dec-2007 |
jmcneill | Sync with HEAD.
|
1.12.24.1 |
| 26-Dec-2007 |
rjs | Sync with HEAD.
|
1.12.8.1 |
| 03-Dec-2007 |
ad | Sync with HEAD.
|