Fault reflection and blocking page faults (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 14 Feb 2014 23:21:43 +0000 (15:21 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 18 Feb 2014 03:49:30 +0000 (19:49 -0800)
commit1a5f41c68be99fb17798c82afa8a6830105c3845
treee4a1aa3d6d8888e957f2c55ac94782d82fe74440
parent2b78400726293b14aa231704edc99c98822700a2
Fault reflection and blocking page faults (XCC)

Unhandled traps/faults will now be reflected back to userspace for MCPs
in uthread context.  SCPs and MCPs in vcore context retain the existing
behavior (death).

Hard page faults (that can't be serviced without blocking) for
file-backed VMRs will be reflected as unhandled PFs.  Userspace can tell
if the PF is on a valid VMR or not by checking the error code.

The RISCV stuff is all just stubs.  If I made any x86-like assumptions
that are unreasonable, let me know.

You need to reinstall your kernel headers.  Easiest way is to rebuild
your toolchain.
15 files changed:
kern/arch/riscv/ros/trapframe.h
kern/arch/riscv/trap.c
kern/arch/x86/ros/trapframe.h
kern/arch/x86/trap.c
kern/arch/x86/trap.h
kern/arch/x86/trap32.c
kern/arch/x86/trap64.c
kern/include/trap.h
kern/src/mm.c
kern/src/trap.c
tests/mmap.c [new file with mode: 0644]
user/parlib/include/riscv/vcore.h
user/parlib/include/x86/vcore32.h
user/parlib/include/x86/vcore64.h
user/parlib/uthread.c