Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.
Build kernel modules as relocatable objects. They are much
more easy to work with in a NUMA environment.

This commit effectively breaks module support. The breakage
is fixed when the loader and kernel know how to load and
relocate the object files on ia64.
Go out on a limb and build the kernel proper as a relocatable as well.
This has some bigger consequences, but again it's much more easy to
work with relocatables in a NUMA environment.

In particular, the effects of this change are:
1.  We can't load kernels any more -- not a big deal for Altix, because
    we couldn't load kernels in the first place. We needed to load the
    kernel at a fixed physical address (= 64M) and on Altix there's no
    physical memory at that address.
2.  The kernel object size increased by ~39%. The debug kernel object
    file increased by about ~99%. Lastly, the symbols object file saw
    about a 150% increase. Whether this is acceptable or not is left
    for later to decide -- after we can compare the memory footprint.
3.  The loader can't check for ET_EXEC to determine if the object is
    the kernel proper or not. Consequently, we have no entry point. It
    feels acceptable to expect the entry point to be called "__start"
    or something along those lines. The kernel proper is the object
    file that contains that symbol.
Pull-in libstand as well...
Include load_elf64_obj.c on ia64. This adds the fundamental support
for ET_REL objects.
Add link_elf_obj.c for support of ET_REL objects.
Add ia64_elf_obj to file_formats[] and unify the SKI and EFI
support by moving the definition from the separate conf.c to
the common exec.c.
Merge svn+ssh://svn.freebsd.org/base/head@205234
Add minimal support for SGI Altix l1 console -- a SAL-based character
device. This may not be here to stay, because it's not a real serial
device. Then again, who cares?
Rather than assume we need to wire the first 256MB, wire the 256MB
that contains the entry point of the kernel.
Allow specifications that lack an I/O port or memory mapped I/O
address when the UART class doesn't need it. A class doesn't need
it when the I/O range is 0.

This makes the L1 console work with the following specification:
	set hw.uart.console="dt:sgisn"
Merge svn+ssh://svn.freebsd.org/base/head@205454
Merge svn+ssh://svn.freebsd.org/base/head@205454
Implement sgisn_probe() and move the SAL prodecure numbers to
<machine/sal.h>
Implement a quick and dirty kluge and simply load the kernel
at a physical address that does exist, but otherwise do not
switch to a relocatable kernel yet.

This allows the kernel to boot with the current loader and
enables working on basic Altix support in the kernel while
working out the NUMA aspect.
Merge svn+ssh://svn.freebsd.org/base/head@205807
Merge svn+ssh://svn.freebsd.org/base/head@206063
Merge svn+ssh://svn.freebsd.org/base/head@206571
Snapshot: PCI busses are discovered, though no devices are enumerable
yet.
We need to iterate all busses in each domain. As it seems,
bus number 1 in domain 1 has the devices we're looking for.
For the busses that are present, the SAL call returns an
non-NULL value for the addr parameter so use that as well
as the status code to determine whether to create a child.

Save the domain, bus number and PROM address in the softc
after assigning the driver to the new device.

This yields:
	...
    pcib0: <SGI PCI-X host controller> on motherboard
    pci0: <PCI bus> on pcib0
    pci0: domain=1, physical bus=1
	...
    pcib1: <SGI PCI-X host controller> on motherboard
    pci1: <PCI bus> on pcib1
    pci1: domain=2, physical bus=1
	...