plan9fox/sys/src/9/xen
cinap_lenrek 1d93a5628a pc, pc64, xen: rewrite interrupt handling code
This implements proper intrdisable() support for all
interrupt controllers.

For enable, (*arch->intrassign)(Vctl*) fills in the
Vctl.enable and Vctl.disable pointers with the
appropriate routines and returns the assigned
vector number.

Once the Vctl struct has been linked to its vector
chain, Vctl.enable(Vctl*, shared) gets called with a
flag if the vector has been already enabled (shared).

This order is important here as enabling the interrupt
on the controller before we have linked the chain can
cause spurious interrupts, expecially on mp system
where the interrupt can target a different cpu than
the caller of intrenable().

The intrdisable() case is the other way around.
We first disable the interrupt on the controller
and after that unlink the Vctl from the chain.
On a multiprocessor, the xfree() of the Vctl struct
is delayed to avoid freeing it while it is still
in use by another cpu.

The xen port now also uses pc/irq.c which has been
made generic enougth to handle xen's irq scheme.
Also, archgeneric is now a separate file to avoid
pulling in dependencies from the 8259 interrupt
controller code.
2020-11-29 17:43:22 +01:00
..
xen-public
archxen.c pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00
cppx
dat.h
devrtc.c
devxenstore.c
dpart.c
etherxen.c devether: remove (unimplemented) detach, allow device creation on attach 2018-02-25 03:42:38 +01:00
fns.h pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00
l.s xen: fix build by adding missing rdrandbuf() function 2016-12-14 20:02:07 +01:00
main.c kernel: implement portable userinit() and simplify process creation 2020-01-26 19:01:36 +01:00
mem.h kernel: expose no execute bit to portable mmu code as SG_NOEXEC / PTENOEXEC, add PTECACHED bits 2019-08-26 22:34:38 +02:00
mkfile pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00
mmu.c kernel: get rid of checkpagerefs() debugging 2019-05-01 12:40:27 +02:00
plan9l.s
sdxen.c
trap.c pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00
uartxen.c
utilmkfile
xen.s
xenbin.c
xenelf.c
xengrant.c
xenpcf libip: move optimized 386 assembly version of ptclbsum() from kernel to libip 2019-02-27 18:29:08 +01:00
xenstore.c
xensystem.c pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00
xentimer.c pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00