b5a75e1d63
See the comments for addupc_intr() and the NetBSD implementation. We use dummy versions of fuswintr() and susiwintr(), so addupc_intr() always pushes the work to trap() (this is inefficient), and trap() calls the special i386 function addupc() instead of addupc_task(). addupc() is more efficient than addupc_intr(), so some of the lost efficiency is recovered. However, addupc() may be broken on plain i386's since it doesn't check for write permission like copyout().