Date: Tue, 22 Feb 2000 16:34:19 -0800 (PST) From: John Polstra <jdp@polstra.com> To: alpha@freebsd.org Subject: pcb_onfault bug on alpha? Message-ID: <XFMail.000222163419.jdp@polstra.com>
next in thread | raw e-mail | index | archive | help
I think I might have found a bug in the fault handling for copyin
and copyout on the alpha. In sys/alpha/alpha/support.s, the
"pcb_onfault" member of the PCB is set in order to catch protection
and page-not-present violations and arrange for the invoking system
call to return EFAULT. This variable is set to either "fusufault" or
"copyerr".
The code for "fusufault" looks like this:
LEAF(fusufault, 0)
ldq t0, curproc
ldq t0, P_ADDR(t0)
stq zero, U_PCB_ONFAULT(t0)
ldiq v0, -1
RET
END(fusufault)
The code for "copyerr" looks like this:
LEAF(copyerr, 0)
LDGP(pv)
ldq ra, (16-8)(sp) /* restore ra. */
lda sp, 16(sp) /* kill stack frame. */
ldiq v0, EFAULT /* return EFAULT. */
RET
END(copyerr)
Why doesn't copyerr reset "pcb_onfault" to 0? I think it should.
John
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.000222163419.jdp>
