A Data Segment Interrupt does not indicate whether it was the result
of a read or a write fault. Unfortunately that means we can't call
uvm_fault(), as we have to pass the right access_type. In particular,
passing PROT_READ for write access on a write-only page will fail.
Fix this issue by inserting an appropriate SLB entry when a mapping
exists at the fault address. A subsequent Data Storage Interrupt
will call uvm_fault() to insert a mapping for the page into the
page tables.
Fixes the sys/kern/fork-exit regress test.
Debugging done by bluhm@ and patrick@
ok bluhm@