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.
This commit is contained in:
Jonathan Lemon 1997-08-28 14:36:56 +00:00
parent 53202ce57a
commit 5f07393373
9 changed files with 37 additions and 72 deletions

View File

@ -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;

View File

@ -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 */

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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 */

View File

@ -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 */

View File

@ -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_ */

View File

@ -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 */