freebsd-nq/sys/ia64/include
Marcel Moolenaar 3804454ac0 Revamp the interrupt code based on the previous commit:
o   Introduce XIV, eXternal Interrupt Vector, to differentiate from
    the interrupts vectors that are offsets in the IVT (Interrupt
    Vector Table). There's a vector for external interrupts, which
    are based on the XIVs.

o   Keep track of allocated and reserved XIVs so that we can assign
    XIVs without hardcoding anything. When XIVs are allocated, an
    interrupt handler and a class is specified for the XIV. Classes
    are:
    1.  architecture-defined: XIV 15 is returned when no external
	interrupt are pending,
    2.  platform-defined: SAL reports which XIV is used to wakeup
	an AP (typically 0xFF, but it's 0x12 for the Altix 350).
    3.  inter-processor interrupts: allocated for SMP support and
	non-redirectable.
    4.  device interrupts (i.e. IRQs): allocated when devices are
	discovered and are redirectable.

o   Rewrite the central interrupt handler to call the per-XIV
    interrupt handler and rename it to ia64_handle_intr(). Move
    the per-XIV handler implementation to the file where we have
    the XIV allocation/reservation. Clock interrupt handling is
    moved to clock.c. IPI handling is moved to mp_machdep.c.

o   Drop support for the Intel 8259A because it was broken. When
    XIV 0 is received, the CPU should initiate an INTA cycle to
    obtain the interrupt vector of the 8259-based interrupt. In
    these cases the interrupt controller we should be talking to
    WRT to masking on signalling EOI is the 8259 and not the I/O
    SAPIC. This requires adriver for the Intel 8259A which isn't
    available for ia64. Thus stop pretending to support ExtINTs
    and instead panic() so that if we come across hardware that
    has an Intel 8259A, so have something real to work with.

o   With XIVs for IPIs dynamically allocatedi and also based on
    priority, define the IPI_* symbols as variables rather than
    constants. The variable holds the XIV allocated for the IPI.

o   IPI_STOP_HARD delivers a NMI if possible. Otherwise the XIV
    assigned to IPI_STOP is delivered.
2010-03-17 00:37:15 +00:00
..
pc
_align.h Get rid of the _NO_NAMESPACE_POLLUTION kludge by creating an 2009-09-08 20:45:40 +00:00
_bus.h
_inttypes.h The NetBSD Foundation has granted permission to remove clause 3 and 4 from 2010-03-03 17:55:51 +00:00
_limits.h
_regset.h
_stdint.h
_types.h
acpica_machdep.h
asm.h o Align function on a 32-byte boundary so that the core's front-end 2009-10-21 18:09:48 +00:00
atomic.h Define mb(), rmb() and wmb() for real. 2008-11-22 06:56:49 +00:00
bootinfo.h
bus_dma.h
bus.h Some code churn: 2010-02-14 16:56:24 +00:00
clock.h Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
cpu.h
cpufunc.h Revamp bus_space access functions: 2009-12-30 18:15:25 +00:00
db_machdep.h
dig64.h
efi.h Fix previous commitr:. efi_var_set() was copied from efi_var_get(), 2010-01-14 02:38:46 +00:00
elf.h Provide groundwork for 32-bit binary compatibility on non-x86 platforms, 2010-03-11 14:49:06 +00:00
endian.h
exec.h
float.h
floatingpoint.h
fpu.h
frame.h
gdb_machdep.h
ia64_cpu.h Make sure bus space accesses use unorder memory loads and stores. 2009-12-03 04:06:48 +00:00
ieee.h
ieeefp.h
in_cksum.h
intr.h Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
intrcnt.h Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
iodev.h Add ioctl requests to /dev/io on ia64 for reading and writing 2010-01-14 02:48:39 +00:00
kdb.h Define struct pcpu_md as the only MD field of struct pcpu (pc_acpi_id 2009-12-07 06:41:27 +00:00
limits.h
mca.h Add a bit definition for invalid timestamp in the record header. 2009-12-23 04:39:05 +00:00
md_var.h Some code churn: 2010-02-14 16:56:24 +00:00
memdev.h Remove the unused major/minor numbers from iodev and memdev. 2008-06-25 07:45:31 +00:00
mutex.h
nexusvar.h
pal.h
param.h Allocate the VHPT for each CPU in cpu_mp_start(), rather than 2009-12-07 00:54:02 +00:00
pcb.h
pci_cfgreg.h Some code cleanups: 2010-02-14 17:03:20 +00:00
pcpu.h Define struct pcpu_md as the only MD field of struct pcpu (pc_acpi_id 2009-12-07 06:41:27 +00:00
pmap.h Remove pm_active from struct pmap as it serves no purpose. 2010-02-21 23:10:13 +00:00
pmc_mdep.h Add stubs to unbreak LINT. 2007-12-07 13:45:47 +00:00
proc.h Reimplement the lazy FP context switching: 2009-10-31 22:27:31 +00:00
profile.h
pte.h
ptrace.h
reg.h Provide groundwork for 32-bit binary compatibility on non-x86 platforms, 2010-03-11 14:49:06 +00:00
reloc.h
resource.h
runq.h
sal.h
setjmp.h
sf_buf.h
sigframe.h
signal.h
smp.h Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
stdarg.h
sysarch.h Use io(4) for I/O port access on ia64, rather than through sysarch(2). 2010-01-11 18:10:13 +00:00
ucontext.h Remove kernel support for M:N threading. 2008-03-12 10:12:01 +00:00
unwind.h
varargs.h
vm.h Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
vmparam.h Some code churn: 2010-02-14 16:56:24 +00:00