The MIPS in_cksum.c method supports big and little endian targets. This
does not include any inline assembly and should be reasonable for most
targets.
The current implementation assumes that the architecture supports the Programmable
Interrupt Controller interrupt API in RTEMS. Most architectures do not use this
model and provide only the Simple Vectored interrupt API. The SPARC port has an
implementation of the PIC API that builds on the Simple Vectored API.
The code added here is just enough to compile. The hope is that a generic
PIC API wrapper will be implemented on top of the Simple Vectored which will
instantly provide support for all other architectures.
For now, the issues of code portability related to PCI support, in_cksum,
cpufunc.h, linkcmds etc are sufficiently challenging that just ensuring we are
able to compile for all RTEMS supported architectures will let us address many
issues.
In summary, this is just a placeholder which lets the RTEMS LibBSD code compile
on Simple Vectored architectures.
At least 80 files in this tree have an advertisting clause. 56 in
the old TCP/IP stack did. We will not have a functional stack unless
we accept this unfortunate situation.
At this point, we are unsure what actual functionality will be
required for a functional MIPS port so just provide a stub.
This lets the build complete and avoids the code with the
advertising clause.
This requires a full checkout of the FreeBSD 8.2 source code.
The checkout we have been using is missing at least the libc,
include, and sys directories. The script to copy files in is
crude.
This eventually needs to separate the manually written .h files
out and add the RTEMS specific network initialization support
with functionality to program the IP addresses and gateways as
the old stack did.
They were not installed in the correct subdirectory for the
way they were included in the kernel source anyway. If they
are needed at the user level, then we can re-address it then.
The user MUST provide a static_hints character array. For now,
this must be manually constructed. In the future, we may want to
consider loading it from a file.
The code in rtemsbsd/freebsd/machine/bus.h assumed that all bus space
accesses were through memory in a simple fashion. The i386 has a true
distinction between I/O and memory space which must be accounted for.
This may not be the eventual structure of this code but we must
have different bus space accessors for different hardware configurations.
And in many, if not most, cases we will want these to be inlined for
performance.