ROUNDDOWN can handle uint64_t on 32 bit (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 15 Aug 2013 23:44:34 +0000 (16:44 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 15 Aug 2013 23:44:34 +0000 (16:44 -0700)
commit393ccbf776c64d50592eb83c54a89cad0f9fd04a
tree851b028a1df08cb4c1a27818040b66533a8aad19
parentba5ee8edbcc1b1dcef6c0939a81363d68bf9e211
ROUNDDOWN can handle uint64_t on 32 bit (XCC)

ROUNDDOWN was casting to a uintptr_t, which would truncate a uint64_t on
32 bit builds.  (Came up in mboot parsing, when pages above
0x0000000100000000 would get treated as if offset from 0).

Since the compiler complains about the int->pointer->int casting, even
in code that should never be called (based on the sizeof() in
ROUNDDOWN), we had to make ROUNDDOWN (and ROUNDUP) only work on
uintptr_t.  Ideally, we'll fix that in the future (C11 features,
perhaps).

You should reinstall your kernel headers to get the new changes for
userspace, though it's not a huge deal.
kern/arch/x86/pmap32.c
kern/arch/x86/trap.c
kern/include/ros/common.h
kern/src/slab.c
kern/src/umem.c
user/parlib/slab.c