summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>1997-08-28 14:36:56 +0000
committerjlemon <jlemon@FreeBSD.org>1997-08-28 14:36:56 +0000
commitada62b471afc09bbc6bb921f07607358e3d087c8 (patch)
tree281f48487266b3baf6fd5b4cb6ed2e8d2ae012a9
parenta7e970a8d935d4eea311ff14fb5bbbbb6480b72c (diff)
downloadFreeBSD-src-ada62b471afc09bbc6bb921f07607358e3d087c8.zip
FreeBSD-src-ada62b471afc09bbc6bb921f07607358e3d087c8.tar.gz
Remove the vm86 support as an LKM, and link it directly into the kernel
if 'options "VM86"' is in the config file. The LKM was really for development, and has probably outlived its usefulness.
-rw-r--r--sys/amd64/amd64/sys_machdep.c13
-rw-r--r--sys/amd64/amd64/trap.c9
-rw-r--r--sys/conf/files.i3863
-rw-r--r--sys/i386/conf/files.i3863
-rw-r--r--sys/i386/i386/sys_machdep.c13
-rw-r--r--sys/i386/i386/trap.c9
-rw-r--r--sys/i386/i386/vm86.c44
-rw-r--r--sys/i386/include/vm86.h6
-rw-r--r--sys/kern/subr_trap.c9
9 files changed, 37 insertions, 72 deletions
diff --git a/sys/amd64/amd64/sys_machdep.c b/sys/amd64/amd64/sys_machdep.c
index be355bb..5716484 100644
--- a/sys/amd64/amd64/sys_machdep.c
+++ b/sys/amd64/amd64/sys_machdep.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)sys_machdep.c 5.5 (Berkeley) 1/19/91
- * $Id: sys_machdep.c,v 1.22 1997/07/20 08:37:23 bde Exp $
+ * $Id: sys_machdep.c,v 1.23 1997/08/09 00:02:49 dyson Exp $
*
*/
@@ -51,7 +51,10 @@
#include <machine/cpu.h>
#include <machine/sysarch.h>
+#ifdef VM86
#include <machine/pcb_ext.h>
+#include <machine/vm86.h>
+#endif /* VM86 */
#include <vm/vm_kern.h> /* for kernel_map */
@@ -71,7 +74,6 @@ static int i386_set_ldt __P((struct proc *, char *, int *));
static int i386_get_ioperm __P((struct proc *, char *, int *));
static int i386_set_ioperm __P((struct proc *, char *, int *));
int i386_extend_pcb __P((struct proc *));
-int (*vm86_sysarch) __P((struct proc *, char *, int *));
#endif
#ifndef _SYS_SYSPROTO_H_
@@ -107,11 +109,8 @@ sysarch(p, uap, retval)
error = i386_set_ioperm(p, uap->parms, retval);
break;
case I386_VM86:
- if (vm86_sysarch) {
- error = (*vm86_sysarch)(p, uap->parms, retval);
- break;
- }
- /* FALL THROUGH */
+ error = vm86_sysarch(p, uap->parms, retval);
+ break;
#endif
default:
error = EINVAL;
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index 5895361..b27583f 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.107 1997/08/21 06:32:39 charnier Exp $
+ * $Id: trap.c,v 1.108 1997/08/26 18:10:33 peter Exp $
*/
/*
@@ -85,7 +85,6 @@
extern struct i386tss common_tss;
-int (*vm86_emulate) __P((struct vm86frame *));
int (*pmath_emulate) __P((struct trapframe *));
extern void trap __P((struct trapframe frame));
@@ -246,12 +245,14 @@ trap(frame)
*/
case T_PROTFLT: /* general protection fault */
case T_STKFLT: /* stack fault */
- if (vm86_emulate && (frame.tf_eflags & PSL_VM)) {
- i = (*vm86_emulate)((struct vm86frame *)&frame);
+#ifdef VM86
+ if (frame.tf_eflags & PSL_VM) {
+ i = vm86_emulate((struct vm86frame *)&frame);
if (i == 0)
goto out;
break;
}
+#endif /* VM86 */
/* FALL THROUGH */
case T_SEGNPFLT: /* segment not present fault */
diff --git a/sys/conf/files.i386 b/sys/conf/files.i386
index 9d7f07d..749078c 100644
--- a/sys/conf/files.i386
+++ b/sys/conf/files.i386
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $Id: files.i386,v 1.171 1997/08/14 14:03:27 msmith Exp $
+# $Id: files.i386,v 1.172 1997/08/28 12:18:08 jkh Exp $
#
aic7xxx_asm optional ahc device-driver \
dependency "$S/dev/aic7xxx/*.[chyl]" \
@@ -81,6 +81,7 @@ i386/i386/sys_machdep.c standard
i386/i386/trap.c standard
i386/i386/userconfig.c optional userconfig
i386/i386/vm_machdep.c standard
+i386/i386/vm86.c optional vm86
i386/ibcs2/ibcs2_fcntl.c optional ibcs2
i386/ibcs2/ibcs2_stat.c optional ibcs2
i386/ibcs2/ibcs2_ipc.c optional ibcs2
diff --git a/sys/i386/conf/files.i386 b/sys/i386/conf/files.i386
index 9d7f07d..749078c 100644
--- a/sys/i386/conf/files.i386
+++ b/sys/i386/conf/files.i386
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $Id: files.i386,v 1.171 1997/08/14 14:03:27 msmith Exp $
+# $Id: files.i386,v 1.172 1997/08/28 12:18:08 jkh Exp $
#
aic7xxx_asm optional ahc device-driver \
dependency "$S/dev/aic7xxx/*.[chyl]" \
@@ -81,6 +81,7 @@ i386/i386/sys_machdep.c standard
i386/i386/trap.c standard
i386/i386/userconfig.c optional userconfig
i386/i386/vm_machdep.c standard
+i386/i386/vm86.c optional vm86
i386/ibcs2/ibcs2_fcntl.c optional ibcs2
i386/ibcs2/ibcs2_stat.c optional ibcs2
i386/ibcs2/ibcs2_ipc.c optional ibcs2
diff --git a/sys/i386/i386/sys_machdep.c b/sys/i386/i386/sys_machdep.c
index be355bb..5716484 100644
--- a/sys/i386/i386/sys_machdep.c
+++ b/sys/i386/i386/sys_machdep.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)sys_machdep.c 5.5 (Berkeley) 1/19/91
- * $Id: sys_machdep.c,v 1.22 1997/07/20 08:37:23 bde Exp $
+ * $Id: sys_machdep.c,v 1.23 1997/08/09 00:02:49 dyson Exp $
*
*/
@@ -51,7 +51,10 @@
#include <machine/cpu.h>
#include <machine/sysarch.h>
+#ifdef VM86
#include <machine/pcb_ext.h>
+#include <machine/vm86.h>
+#endif /* VM86 */
#include <vm/vm_kern.h> /* for kernel_map */
@@ -71,7 +74,6 @@ static int i386_set_ldt __P((struct proc *, char *, int *));
static int i386_get_ioperm __P((struct proc *, char *, int *));
static int i386_set_ioperm __P((struct proc *, char *, int *));
int i386_extend_pcb __P((struct proc *));
-int (*vm86_sysarch) __P((struct proc *, char *, int *));
#endif
#ifndef _SYS_SYSPROTO_H_
@@ -107,11 +109,8 @@ sysarch(p, uap, retval)
error = i386_set_ioperm(p, uap->parms, retval);
break;
case I386_VM86:
- if (vm86_sysarch) {
- error = (*vm86_sysarch)(p, uap->parms, retval);
- break;
- }
- /* FALL THROUGH */
+ error = vm86_sysarch(p, uap->parms, retval);
+ break;
#endif
default:
error = EINVAL;
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index 5895361..b27583f 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.107 1997/08/21 06:32:39 charnier Exp $
+ * $Id: trap.c,v 1.108 1997/08/26 18:10:33 peter Exp $
*/
/*
@@ -85,7 +85,6 @@
extern struct i386tss common_tss;
-int (*vm86_emulate) __P((struct vm86frame *));
int (*pmath_emulate) __P((struct trapframe *));
extern void trap __P((struct trapframe frame));
@@ -246,12 +245,14 @@ trap(frame)
*/
case T_PROTFLT: /* general protection fault */
case T_STKFLT: /* stack fault */
- if (vm86_emulate && (frame.tf_eflags & PSL_VM)) {
- i = (*vm86_emulate)((struct vm86frame *)&frame);
+#ifdef VM86
+ if (frame.tf_eflags & PSL_VM) {
+ i = vm86_emulate((struct vm86frame *)&frame);
if (i == 0)
goto out;
break;
}
+#endif /* VM86 */
/* FALL THROUGH */
case T_SEGNPFLT: /* segment not present fault */
diff --git a/sys/i386/i386/vm86.c b/sys/i386/i386/vm86.c
index 58cbd75..476e96c 100644
--- a/sys/i386/i386/vm86.c
+++ b/sys/i386/i386/vm86.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: vm86.c,v 1.1 1997/08/09 01:38:03 dyson Exp $
*/
#include <sys/param.h>
@@ -53,9 +53,6 @@
#include <machine/md_var.h>
#include <machine/specialreg.h>
-extern int emulate_vm86 __P((struct vm86frame *));
-extern int i386_vm86 __P((struct proc *p, char *args, int *retval));
-
extern int i386_extend_pcb __P((struct proc *));
#define CLI 0xfa
@@ -121,7 +118,7 @@ POPL(struct vm86frame *vmf)
}
int
-emulate_vm86(vmf)
+vm86_emulate(vmf)
struct vm86frame *vmf;
{
struct vm86_kernel *vm86;
@@ -334,7 +331,7 @@ emulate_vm86(vmf)
}
int
-i386_vm86(p, args, retval)
+vm86_sysarch(p, args, retval)
struct proc *p;
char *args;
int *retval;
@@ -397,38 +394,3 @@ i386_vm86(p, args, retval)
}
return (error);
}
-
-#ifdef VM86_MODULE
-
-#include <sys/exec.h>
-#include <sys/sysent.h>
-#include <sys/lkm.h>
-
-MOD_MISC(vm86);
-
-static int
-vm86_load(struct lkm_table *lkmtp, int cmd)
-{
- vm86_emulate = emulate_vm86;
- vm86_sysarch = i386_vm86;
- uprintf("vm86 emulator installed\n");
- return 0;
-}
-
-static int
-vm86_unload(struct lkm_table *lkmtp, int cmd)
-{
- vm86_emulate = 0;
- vm86_sysarch = 0;
- uprintf("vm86 emulator removed\n");
- return 0;
-}
-
-int
-vm86_mod(struct lkm_table *lkmtp, int cmd, int ver)
-{
- MOD_DISPATCH(vm86, lkmtp, cmd, ver,
- vm86_load, vm86_unload, lkm_nullcmd);
-}
-
-#endif /* VM86_MODULE */
diff --git a/sys/i386/include/vm86.h b/sys/i386/include/vm86.h
index 9c38d94..5b3eec3 100644
--- a/sys/i386/include/vm86.h
+++ b/sys/i386/include/vm86.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: vm86.h,v 1.1 1997/08/09 04:55:04 dyson Exp $
+ * $Id: vm86.h,v 1.2 1997/08/20 19:57:24 jlemon Exp $
*/
#ifndef _MACHINE_VM86_H_
@@ -106,7 +106,7 @@ struct vm86frame {
};
struct proc;
-extern int (*vm86_emulate) __P((struct vm86frame *));
-extern int (*vm86_sysarch) __P((struct proc *, char *, int *));
+extern int vm86_emulate __P((struct vm86frame *));
+extern int vm86_sysarch __P((struct proc *, char *, int *));
#endif /* _MACHINE_VM86_H_ */
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index 5895361..b27583f 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.107 1997/08/21 06:32:39 charnier Exp $
+ * $Id: trap.c,v 1.108 1997/08/26 18:10:33 peter Exp $
*/
/*
@@ -85,7 +85,6 @@
extern struct i386tss common_tss;
-int (*vm86_emulate) __P((struct vm86frame *));
int (*pmath_emulate) __P((struct trapframe *));
extern void trap __P((struct trapframe frame));
@@ -246,12 +245,14 @@ trap(frame)
*/
case T_PROTFLT: /* general protection fault */
case T_STKFLT: /* stack fault */
- if (vm86_emulate && (frame.tf_eflags & PSL_VM)) {
- i = (*vm86_emulate)((struct vm86frame *)&frame);
+#ifdef VM86
+ if (frame.tf_eflags & PSL_VM) {
+ i = vm86_emulate((struct vm86frame *)&frame);
if (i == 0)
goto out;
break;
}
+#endif /* VM86 */
/* FALL THROUGH */
case T_SEGNPFLT: /* segment not present fault */
OpenPOWER on IntegriCloud