fork of 9front i guess
Go to file
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
386 add va_copy macro, conforming to c99 7.15.1.2 2020-03-22 17:31:39 -07:00
68000 add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
68020 add va_copy macro, conforming to c99 7.15.1.2 2020-03-22 17:31:39 -07:00
acme win: fix window recreation command 2020-09-16 12:41:24 +02:00
adm/timezone timezones: change DST timezone string for South Australia 2019-11-20 11:49:16 +10:30
amd64 turn ptrdiff_t into a 64 bit type 2020-03-24 14:45:15 -07:00
arm add va_copy macro, conforming to c99 7.15.1.2 2020-03-22 17:31:39 -07:00
arm64 turn ptrdiff_t into a 64 bit type 2020-03-24 14:45:15 -07:00
lib aux/vga: eepc igfx support (thanks p.kosyh) 2020-09-26 20:47:17 -07:00
mips add va_copy macro, conforming to c99 7.15.1.2 2020-03-22 17:31:39 -07:00
power add va_copy macro, conforming to c99 7.15.1.2 2020-03-22 17:31:39 -07:00
power64 add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
rc g: fix typo in last commit 2020-11-22 17:42:25 -08:00
sparc ape: floating point improvements (thanks spew) 2018-05-24 13:40:44 +01:00
sparc64 add va_copy macro, conforming to c99 7.15.1.2 2020-03-22 17:31:39 -07:00
spim add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
sys pc, pc64, xen: rewrite interrupt handling code 2020-11-29 17:43:22 +01:00
.hgignore hgignore: ignore section 9 manpage indices, ignore init, kernels and bootloader binaries 2020-03-07 12:28:49 +01:00