GC a little more cruft, and use __HAVE_MINIMAL_EMUL.
This commit is contained in:
parent
173c0bb9d7
commit
4944313b38
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: syscall.c,v 1.35 2000/12/12 18:13:29 mycroft Exp $ */
|
||||
/* $NetBSD: syscall.c,v 1.36 2000/12/12 18:26:43 mycroft Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
||||
|
@ -102,7 +102,6 @@ u_int arm700bugcount = 0;
|
|||
*
|
||||
* System call request from POSIX system call gate interface to kernel.
|
||||
*/
|
||||
|
||||
void
|
||||
syscall(frame, code)
|
||||
trapframe_t *frame;
|
||||
|
@ -124,13 +123,12 @@ syscall(frame, code)
|
|||
if (!(frame->tf_spsr & I32_bit))
|
||||
enable_interrupts(I32_bit);
|
||||
|
||||
uvmexp.syscalls++;
|
||||
|
||||
#ifdef DEBUG
|
||||
if ((GetCPSR() & PSR_MODE) != PSR_SVC32_MODE)
|
||||
panic("syscall: Not in SVC32 mode\n");
|
||||
#endif /* DEBUG */
|
||||
|
||||
uvmexp.syscalls++;
|
||||
p = curproc;
|
||||
p->p_md.md_regs = frame;
|
||||
|
||||
|
@ -215,20 +213,16 @@ syscall(frame, code)
|
|||
}
|
||||
|
||||
callp += (code & (SYS_NSYSENT - 1));
|
||||
|
||||
argsize = callp->sy_argsize;
|
||||
if (argsize <= regparams)
|
||||
args = (int *)stackargs;
|
||||
else {
|
||||
args = copyargs;
|
||||
bcopy(stackargs, (caddr_t)args, regparams);
|
||||
if ((error = copyin((caddr_t)frame->tf_usr_sp,
|
||||
(caddr_t)args + regparams, argsize - regparams))) {
|
||||
#ifdef SYSCALL_DEBUG
|
||||
scdebug_call(p, code, callp->sy_narg, args);
|
||||
#endif
|
||||
error = copyin((caddr_t)frame->tf_usr_sp,
|
||||
(caddr_t)args + regparams, argsize - regparams);
|
||||
if (error)
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SYSCALL_DEBUG
|
||||
|
@ -238,9 +232,9 @@ syscall(frame, code)
|
|||
if (KTRPOINT(p, KTR_SYSCALL))
|
||||
ktrsyscall(p, code, argsize, args);
|
||||
#endif
|
||||
rval[0] = 0;
|
||||
rval[1] = frame->tf_r1;
|
||||
|
||||
rval[0] = 0;
|
||||
rval[1] = 0;
|
||||
error = (*callp->sy_call)(p, args, rval);
|
||||
|
||||
switch (error) {
|
||||
|
@ -262,38 +256,33 @@ syscall(frame, code)
|
|||
break;
|
||||
|
||||
default:
|
||||
bad:
|
||||
bad:
|
||||
frame->tf_r0 = error;
|
||||
frame->tf_spsr |= PSR_C_bit; /* carry bit */
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef SYSCALL_DEBUG
|
||||
scdebug_ret(p, code, error, rval[0]);
|
||||
scdebug_ret(p, code, error, rval);
|
||||
#endif
|
||||
|
||||
userret(p);
|
||||
|
||||
#ifdef KTRACE
|
||||
if (KTRPOINT(p, KTR_SYSRET))
|
||||
ktrsysret(p, code, error, rval[0]);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
child_return(arg)
|
||||
void *arg;
|
||||
{
|
||||
struct proc *p = arg;
|
||||
/* See cpu_fork() */
|
||||
struct trapframe *frame = p->p_md.md_regs;
|
||||
|
||||
frame->tf_r0 = 0;
|
||||
frame->tf_spsr &= ~PSR_C_bit; /* carry bit */
|
||||
|
||||
userret(p);
|
||||
|
||||
#ifdef KTRACE
|
||||
if (KTRPOINT(p, KTR_SYSRET))
|
||||
ktrsysret(p, SYS_fork, 0, 0);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: types.h,v 1.11 2000/06/06 20:17:35 matt Exp $ */
|
||||
/* $NetBSD: types.h,v 1.12 2000/12/12 18:26:44 mycroft Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
|
@ -77,5 +77,6 @@ typedef int32_t register_t;
|
|||
|
||||
#define __HAVE_NWSCONS
|
||||
#define __HAVE_DEVICE_REGISTER
|
||||
#define __HAVE_MINIMAL_EMUL
|
||||
|
||||
#endif /* _ARM32_TYPES_H_ */
|
||||
|
|
Loading…
Reference in New Issue