Complete RV32 support for Linux (v2)

Changes from prior pull request:
Use unsigned comparison for valid syscall number in entry_32.S
I believe that the register constraint for `__lo` must include the `&` early-clobber modifier.  Otherwise, gcc might allocate `__lo` in the same register as `ptr`, which would the cause the second `lw` to read from an incorrect address.
On the other hand, the `&` modifier for `__hi` can be eliminated since `ptr` is no longer used after that point.

(It's not necessary to open another pull request for this simple change; I can easily update the patch myself before merging.)