diff options
| author | Marcel Moolenaar <marcel@FreeBSD.org> | 2003-12-09 09:52:14 +0000 |
|---|---|---|
| committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2003-12-09 09:52:14 +0000 |
| commit | b291daba6fc1b6ac32dcb37aa92b7cc15bcfdf6b (patch) | |
| tree | 38b906373a018da854ce32707d7f540212add6a7 | |
| parent | 8c307294e6a86b800c099838454834bd6b2ed29f (diff) | |
Notes
| -rw-r--r-- | sys/ia64/ia64/trap.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c index 96df12533d7e..e8622aac72f2 100644 --- a/sys/ia64/ia64/trap.c +++ b/sys/ia64/ia64/trap.c @@ -648,8 +648,17 @@ trap(int vector, struct trapframe *framep) if (sig == 0) goto out; ucode = framep->tf_special.ifa; /* VA */ - } else + } else { + /* Check for copyin/copyout fault. */ + if (td != NULL && td->td_pcb->pcb_onfault != 0) { + framep->tf_special.iip = + td->td_pcb->pcb_onfault; + framep->tf_special.psr &= ~IA64_PSR_RI; + td->td_pcb->pcb_onfault = 0; + goto out; + } trap_panic(vector, framep); + } break; case IA64_VEC_FLOATING_POINT_FAULT: |
