Module Name: src Committed By: reinoud Date: Wed Sep 7 14:03:49 UTC 2011
Modified Files: src/sys/arch/usermode/usermode: trap.c Log Message: Add skeleton for possible system call implementation To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/arch/usermode/usermode/trap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/usermode/usermode/trap.c diff -u src/sys/arch/usermode/usermode/trap.c:1.32 src/sys/arch/usermode/usermode/trap.c:1.33 --- src/sys/arch/usermode/usermode/trap.c:1.32 Wed Sep 7 10:19:40 2011 +++ src/sys/arch/usermode/usermode/trap.c Wed Sep 7 14:03:49 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.32 2011/09/07 10:19:40 reinoud Exp $ */ +/* $NetBSD: trap.c,v 1.33 2011/09/07 14:03:49 reinoud Exp $ */ /*- * Copyright (c) 2011 Reinoud Zandijk <rein...@netbsd.org> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.32 2011/09/07 10:19:40 reinoud Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.33 2011/09/07 14:03:49 reinoud Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -43,6 +43,9 @@ #include <machine/pmap.h> #include <machine/thunk.h> +#include <sys/syscallvar.h> +#include <sys/syscallargs.h> + //#include <machine/ctlreg.h> //#include <machine/trap.h> //#include <machine/instr.h> @@ -281,9 +284,22 @@ printf("\n"); #endif - /* TODO MD syscall pre-fixup */ - /* TODO system call issueing */ - /* TODO MD syscall post-fixup */ +#if 0 + /* MD syscall pre-fixup: extract `trapframe' from the MD ctx */ + syscall_pre_fixup(info->si_addr, ctx, &pcb->pcb_tf); + +printf("retrieved opcode %"PRIiPTR"\n", opcode); + + /* system call issueing */ + curcpu()->ci_data.cpu_nsyscall++; + + /* XXX do we want do do emulation? */ + LWP_CACHE_CREDS(l, l->l_proc); + syscall(l, &pcb->pcb_tf); + + /* MD syscall post-fixup : convert `trapframe' back to MD ctx */ + syscall_post_fixup(info->si_addr, ctx, &pcb->pcb_tf); +#endif panic("illegal instruction encountered\n"); }