Add macro to convert errno and use it when appropriate.
MFC after: 1 week
This commit is contained in:
parent
29f5e6c1ad
commit
791b4b1122
@ -414,13 +414,7 @@ cpu_set_syscall_retval(struct thread *td, int error)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (td->td_proc->p_sysent->sv_errsize) {
|
||||
if (error >= td->td_proc->p_sysent->sv_errsize)
|
||||
error = -1; /* XXX */
|
||||
else
|
||||
error = td->td_proc->p_sysent->sv_errtbl[error];
|
||||
}
|
||||
td->td_frame->tf_rax = error;
|
||||
td->td_frame->tf_rax = SV_ABI_ERRNO(td->td_proc, error);
|
||||
td->td_frame->tf_rflags |= PSL_C;
|
||||
break;
|
||||
}
|
||||
|
@ -451,13 +451,7 @@ cpu_set_syscall_retval(struct thread *td, int error)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (td->td_proc->p_sysent->sv_errsize) {
|
||||
if (error >= td->td_proc->p_sysent->sv_errsize)
|
||||
error = -1; /* XXX */
|
||||
else
|
||||
error = td->td_proc->p_sysent->sv_errtbl[error];
|
||||
}
|
||||
td->td_frame->tf_eax = error;
|
||||
td->td_frame->tf_eax = SV_ABI_ERRNO(td->td_proc, error);
|
||||
td->td_frame->tf_eflags |= PSL_C;
|
||||
break;
|
||||
}
|
||||
|
@ -908,11 +908,7 @@ cpu_set_syscall_retval(struct thread *td, int error)
|
||||
tf->srr0 -= 4;
|
||||
break;
|
||||
default:
|
||||
if (p->p_sysent->sv_errsize) {
|
||||
error = (error < p->p_sysent->sv_errsize) ?
|
||||
p->p_sysent->sv_errtbl[error] : -1;
|
||||
}
|
||||
tf->fixreg[FIRSTARG] = error;
|
||||
tf->fixreg[FIRSTARG] = SV_ABI_ERRNO(p, error);
|
||||
tf->cr |= 0x10000000; /* Set summary overflow */
|
||||
break;
|
||||
}
|
||||
|
@ -167,13 +167,7 @@ cpu_set_syscall_retval(struct thread *td, int error)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (td->td_proc->p_sysent->sv_errsize) {
|
||||
if (error >= td->td_proc->p_sysent->sv_errsize)
|
||||
error = -1; /* XXX */
|
||||
else
|
||||
error = td->td_proc->p_sysent->sv_errtbl[error];
|
||||
}
|
||||
td->td_frame->tf_out[0] = error;
|
||||
td->td_frame->tf_out[0] = SV_ABI_ERRNO(td->td_proc, error);
|
||||
td->td_frame->tf_tstate |= TSTATE_XCC_C;
|
||||
break;
|
||||
}
|
||||
|
@ -141,6 +141,8 @@ struct sysentvec {
|
||||
#define SV_TIMEKEEP 0x040000
|
||||
|
||||
#define SV_ABI_MASK 0xff
|
||||
#define SV_ABI_ERRNO(p, e) ((p)->p_sysent->sv_errsize <= 0 ? e : \
|
||||
((e) >= (p)->p_sysent->sv_errsize ? -1 : (p)->p_sysent->sv_errtbl[e]))
|
||||
#define SV_PROC_FLAG(p, x) ((p)->p_sysent->sv_flags & (x))
|
||||
#define SV_PROC_ABI(p) ((p)->p_sysent->sv_flags & SV_ABI_MASK)
|
||||
#define SV_CURPROC_FLAG(x) SV_PROC_FLAG(curproc, x)
|
||||
|
Loading…
Reference in New Issue
Block a user