if a device is marked as BS_EARLY but no driver is present don't panic()
when the device is also BS_OPTIONAL
now kernels without the sx driver will boot again on hardware that has SX
Include LIST_ENTRY() in "struct rump_component".

Main benefit: rump_component_load() can now be called from an
early-running constructor since the routine doesn't need to allocate
memory.
rev. 27 SX needs memory referencing instructions written to 64bit aligned
addresses ( my rev. 25 just ignores the lower 3 bits )
so, we zero these bits now
domains are attached by module(-like) constructors, so no need to
play link_set games with them.
Fix a logic inversion introduced with the matt-nb5-mips64 for
pmap_{zero,copy}_page cache alias handing. The check previously used
PG_MD_UNCACHED_P, where it now uses PG_MD_CACHED_P, when considering if
a cache invalidation is required.

Additionally flush the cache for the uarea va to avoid potential (future)
cache aliases in cpu_uarea_free when handing pages back to uvm for later
use.

ok matt@

Hopefully this addresses the instability reported in the following PRs:

PR/44900 - R5000/Rm5200 mips ports are broken
PR/46170 - NetBSD/cobalt 6.0_BETA does not boot
PR/46890 - upcoming NetBSD 6.0 release is very unstable / unusable on cobalt qube 2
PR/48628 - cobalt and hpcmips ports are dead
Avoiding arithmetic on void * need not be NetBSD-specific.
matt@ did the real work for the Beaglebone, so credit him properly.

My memory misled me when I added this entry the other day.
add a mask for currently valid ETHERCAP flags
Add a RUMP_USE_CTOR compile-time switch.  If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel.  If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).