soft/hard counters. beyond the extra info, it seems to help avoid some
of these counters getting corrupted due to unlocked multiple accesses.
adjust the xcallintr() from xcall() hack so that we don't count these
events as interrupts. align the existing evcnt name to count this.
* There's a deadlock potential between multiple CPUs trying
* to xcall() at the same time, and the thread that loses the
* race to get xpmsg_lock is at an IPL above the incoming IPI
* IPL level, so it sits around waiting to take the lock while
* the other CPU is waiting for this CPU to handle the IPI and
* mark it as completed.
*
* If we fail to get the mutex, and we're at high enough IPL,
* call xcallintr() if there is a valid msg.tag.
this seems to fix the xcall() failed to ping cpus problem.
idea from martin, tested by macallan and myself.
-assume (KASSERT) that the timeval given is normalized, and remove
some partial fixup which I don't see what it is good for
(I'm ready to back that out if someone tells a reason)
-catch overflows due to conversion of time_t (from tv_sec) to
integer -- this function doesn't do 64-bit arithmetics (which makes
sense because relative times which don't fit into 32 bits can be
considered nonsense here), and before a huge tv_sec could lead to
a zero hz result, violating the caller's assumptions (in particular
trigger a diagnostic panic in abstimeout2timo())
as found in the vortex86 SoCs (http://www.vortex86dx.com).
Ported from freebsd.
Not added to amd64's GENERIC because this CPU is 32bit only.
thanks to DM&P Electronics, Inc for providing documentation and sample
devices for this work.
as found in the vortex86 SoCs (http://www.vortex86dx.com).
Ported from freebsd.
Not added to amd64's GENERIC because this CPU is 32bit only.
thanks to DM&P Electronics, Inc for providing documentation and sample
devices for this work.
the compiler loses information about the size of the object. So instead of
the hacky #define mess we did before, add a way to inject our function between
the user call and the system call.
NetBSD/emips port runs on Xilinx and Beecube FPGA systems and the
Giano system simulator.
eMIPS is a platform developed at Microsoft Research for researching
reconfigurable computing. eMIPS allows dynamic loading and scheduling
of application-specific circuits for the purpose of accelerating
computations based on the current workload.
NetBSD eMIPS support for NetBSD 4.x was written at Microsoft Research
by Alessandro Forin and Neil Pittman. Microsoft Corporation has
donated full copyright to The NetBSD Foundation.
Platform support for eMIPS is the first part of Microsoft's
contribution. The second part includes the hardware accelerator
framework and will be proposed on tech-kern soon.