summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>1994-10-10 07:33:01 +0000
committersos <sos@FreeBSD.org>1994-10-10 07:33:01 +0000
commit03a02ed1752db367223cc17d6465dcb08f262939 (patch)
treef9137fbb0821df63c3f8fd09eb770b994afe813b
parent6134378e436571766f976124e72f838995a13eb9 (diff)
downloadFreeBSD-src-03a02ed1752db367223cc17d6465dcb08f262939.zip
FreeBSD-src-03a02ed1752db367223cc17d6465dcb08f262939.tar.gz
Hmm, only translate errno when doing an actual return.
Reviewed by: sef@freefall.cdrom.com
-rw-r--r--sys/amd64/amd64/trap.c14
-rw-r--r--sys/i386/i386/trap.c14
-rw-r--r--sys/kern/subr_trap.c14
3 files changed, 21 insertions, 21 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index e2d91a9..b9c334b 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.36 1994/10/08 22:19:50 phk Exp $
+ * $Id: trap.c,v 1.37 1994/10/09 22:02:06 sos Exp $
*/
/*
@@ -664,12 +664,6 @@ syscall(frame)
error = (*callp->sy_call)(p, args, rval);
- if (p->p_sysent->sv_errsize)
- if (error >= p->p_sysent->sv_errsize)
- error = -1; /* XXX */
- else
- error = p->p_sysent->sv_errtbl[error];
-
switch (error) {
case 0:
@@ -692,6 +686,12 @@ syscall(frame)
default:
bad:
+ if (p->p_sysent->sv_errsize)
+ if (error >= p->p_sysent->sv_errsize)
+ error = -1; /* XXX */
+ else
+ error = p->p_sysent->sv_errtbl[error];
+ else
frame.tf_eax = error;
frame.tf_eflags |= PSL_C; /* carry bit */
break;
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index e2d91a9..b9c334b 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.36 1994/10/08 22:19:50 phk Exp $
+ * $Id: trap.c,v 1.37 1994/10/09 22:02:06 sos Exp $
*/
/*
@@ -664,12 +664,6 @@ syscall(frame)
error = (*callp->sy_call)(p, args, rval);
- if (p->p_sysent->sv_errsize)
- if (error >= p->p_sysent->sv_errsize)
- error = -1; /* XXX */
- else
- error = p->p_sysent->sv_errtbl[error];
-
switch (error) {
case 0:
@@ -692,6 +686,12 @@ syscall(frame)
default:
bad:
+ if (p->p_sysent->sv_errsize)
+ if (error >= p->p_sysent->sv_errsize)
+ error = -1; /* XXX */
+ else
+ error = p->p_sysent->sv_errtbl[error];
+ else
frame.tf_eax = error;
frame.tf_eflags |= PSL_C; /* carry bit */
break;
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index e2d91a9..b9c334b 100644
--- a/sys/kern/subr_trap.c
+++ b/sys/kern/subr_trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.36 1994/10/08 22:19:50 phk Exp $
+ * $Id: trap.c,v 1.37 1994/10/09 22:02:06 sos Exp $
*/
/*
@@ -664,12 +664,6 @@ syscall(frame)
error = (*callp->sy_call)(p, args, rval);
- if (p->p_sysent->sv_errsize)
- if (error >= p->p_sysent->sv_errsize)
- error = -1; /* XXX */
- else
- error = p->p_sysent->sv_errtbl[error];
-
switch (error) {
case 0:
@@ -692,6 +686,12 @@ syscall(frame)
default:
bad:
+ if (p->p_sysent->sv_errsize)
+ if (error >= p->p_sysent->sv_errsize)
+ error = -1; /* XXX */
+ else
+ error = p->p_sysent->sv_errtbl[error];
+ else
frame.tf_eax = error;
frame.tf_eflags |= PSL_C; /* carry bit */
break;
OpenPOWER on IntegriCloud