"The Certance CP3100 product family provides high-end disk-to-disk-to-tape
(D2D2T) functionality for small-to-medium businesses."
To software, the unit is very similar to the IQ80321 and IQ31244 eval
boards from Intel. As such, we share almost all of their code.
Onboard hardware:
- IOP321 XScale CPU. Core clock is 600MHz.
- 256MB SDRAM (not sure if that's true for all)
- Four-port Intel i31244 SATA controller. One port is connected to the
internal disk. The remaining three are available on the back-panel.
- Dual GigE ports on the back panel, using an Intel i82546EB controller.
- Two Symbios Logic 53c1010 SCSI controllers, one in host mode the other
in target mode. Both SCSI busses are available on the back panel.
Note that NetBSD does not support SCSI target mode.
- 8MB of NOR Flash, containing a fairly vanilla Redboot together with
a minimal compressed Linux image.
- Some front-panel LEDS (not supported).
- Serial console.
Contributed by Wasabi Systems, Inc.
devices hooked up to the HPI pin.
HPIs cannot be masked at the interrupt controller; they can only be masked
by disabling IRQs in the XScale core. To deal with this, we tweak the
interrupt frame so that IRQs are disabled when the interrupt dispatcher
returns due to a masked HPI interrupt. IRQs will be re-enabled by a
subsequent splx(9).
Fortunately the only instance where HPI is used is for the console UART
on a couple of boards, so this hack does not adversely affect performance.
Contributed by Wasabi Systems.
instead with exit handlers and all that
-If setcontext(2) returns (which it shouldn't), do an _exit(-1) rather
than relying on a sensible return value to use as exit code. Makes
it less likely that an ucontext corruption goes unnoticed.
implies that _UC_CPU must be set in the context passed. Check for this
and return EINVAL if not; this gives a cheap test for corrupted
ucontexts eg on a signal handler stack which would go unnoticed otherwise.
-Don't ckeck for NULL ucontext pointers explicitely. This is an error,
except in the swapcontext() case where it can be easily caught in
userland.
This adds bounds checking for the following functions:
memset, fgets, gets, memcpy, memmove, memset, snprintf, sprintf, strcat,
strcpy, strncat, strncpy, vsnprintf, vsprintf
This functionality is enabled by compiling with:
gcc -I/usr/include/ssp -D_FORTIFY_SOURCE=<1|2> -lssp
Eventually gcc will provide -ffortify-source or something to automate this
[we hope :-)]
mmap and therefore execution of binaries starting to work, some
speed improvements with large file I/O also. caching semantics
and error case handling most likely need revisiting.