Don't populate / fault in prot == 0 pages

We get the warning on line 551 a lot, from glibc/malloc.  It's probably
because we're always MAP_POPULATING, regardless of what is asked for.
Note that you shouldn't try to populate a prot == 0.

Now that the warning might mean something, we'll actually look at it.
Pthread condition variables redone

Now they block in the 2LS, instead of spinning like on an HPC barrier.
The test is basically the same as the one in the kernel, maybe a bit
better (definitely clearer, due to yields and join calls).
Tests now build with -lm

Used in some upcoming tests, and doesn't hurt the existing ones.
Update RISC-V XCC toolchain

I folded the gcc 4.6 patch to support compilation under gcc 4.7 into the
RISC-V patches.
Update command for invoking RISC-V ISA simulator
Simplify RISC-V page_alloc_init
handle RISC-V keyboard interrupts properly

Rather than piggybacking on the IPI handler, that is.
Remove __INT64_C etc. macros, as GCC provides them
Use ssize_t for recv etc. return type

Just another 32b/64b compatibility issue
Move nic_common.h and nic_common.c to mainline

Happily, there was nothing x86-specific about them!
Removes extraneous x86 net files

Looks like these were accidentally created in 32d657d, but aren't
actually in use.
e1000: better device detection

Can now detect c89's two e1000 cards.  But we still can only config one
of them...
2LSs don't always call uthread_runnable

More like, they are allowed to call their own sched op, instead of
always calling out to the uthread code.  The uthread wrapper is just
meant for external code that doesn't know the name of the sched op.
This will help with batch wakeup functions.
Pthread cond_broadcast amortizes 2LS runnable ops

Saves quite a bit on broadcast-heavy applications, especially if the
queue lock is heavily contended.
e1000: fix resetting bug

Need to replace our buggy e1000 with a real one.
Add RISC-V CAS via load-reserved/store conditional
Isolate x86-specific code in recently-added tests
Don't build riscv-ros-gccgo (for now)
Remove ROS_MEM_ALIGN, etc. macros

Manually rounding up sizeof(struct pbuf) to the pointer size is unnecessary
because the struct contains pointers.  Also, some targets have pointer more
stringent alignment requirements than 4.
Implement atomic_add_not_zero using LR/SC directly

It takes fewer instructions than the CAS loop and should be less
starvation-prone.