FreeBSD src
Go to file
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
bin sh: Do not abort on a redirection error on a compound command. 2010-03-14 14:24:35 +00:00
cddl Merge OpenSolaris revision 9396:f41cf682d0d3: 2010-03-16 00:50:57 +00:00
contrib Change the 'amt' parameter in format_k2 from int to unsigned long long 2010-03-13 11:17:39 +00:00
crypto Readd $FreeBSD$ to the OpenSSL config file as that's useful for 2010-03-13 22:37:07 +00:00
etc Use an unique directory name instead of hardcoded /tmp/.diskless. 2010-03-13 12:02:44 +00:00
games Fix several typos in macros or macro misusage. 2010-03-12 10:01:06 +00:00
gnu Make little endian compiles produce little endian binaries on mips. 2010-03-05 21:24:41 +00:00
include Trim down libcompat by removing <regexp.h>. 2010-03-14 10:18:58 +00:00
kerberos5 Fix a typo. 2010-01-09 18:53:03 +00:00
lib Comment a fine point, so it does not get lost when people borrow code 2010-03-15 08:58:35 +00:00
libexec Fix several typos in macros or macro misusage. 2010-03-12 10:01:06 +00:00
release Provide a script that can be used to create the memstick images. For now 2010-02-18 15:45:43 +00:00
rescue Remove libulog from the bootstrap again. 2010-01-21 16:56:27 +00:00
sbin Verify interface up status using its link state only 2010-03-16 17:59:12 +00:00
secure Regenerate manual pages for OpenSSL 0.9.8m. 2010-03-13 19:30:29 +00:00
share - Use Va' for variables instead of Dv'. 2010-03-16 11:38:07 +00:00
sys Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
tools Add missing headers. While there, arrange headers alphabetically. 2010-03-16 20:42:54 +00:00
usr.bin Better way to find out available file system types is to use lsvfs(1). 2010-03-16 23:19:55 +00:00
usr.sbin then -> than 2010-03-15 16:06:52 +00:00
COPYRIGHT Happy New Year 2010! :-) 2009-12-31 10:00:37 +00:00
LOCKS
MAINTAINERS Add heads-up requests for parts of the tree I look after and which 2010-02-18 21:14:29 +00:00
Makefile Give make kernel-toolchain a one-liner here. Although documented in 2010-03-03 21:08:44 +00:00
Makefile.inc1 Remove old documents when they are not compressed. 2010-03-07 14:55:43 +00:00
ObsoleteFiles.inc Trim down libcompat by removing <regexp.h>. 2010-03-14 10:18:58 +00:00
README
UPDATING Provide groundwork for 32-bit binary compatibility on non-x86 platforms, 2010-03-11 14:49:06 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/user commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html