129 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1998 Jonathan Lemon
 | |
| .\" All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\" %FreeBSD: src/lib/libc/i386/sys/i386_vm86.2,v 1.15 2003/05/22 13:02:27 ru Exp %
 | |
| .\"
 | |
| .\" $FreeBSD$
 | |
| .Dd July 27, 1998
 | |
| .Os
 | |
| .Dt I386_VM86 2
 | |
| .Sh 名称
 | |
| .Nm i386_vm86
 | |
| .Nd vm86 に関連する関数を制御する
 | |
| .Sh ライブラリ
 | |
| .Lb libc
 | |
| .Sh 書式
 | |
| .In sys/types.h
 | |
| .In machine/sysarch.h
 | |
| .In machine/vm86.h
 | |
| .Ft int
 | |
| .Fn i386_vm86 "int function" "void *data"
 | |
| .Sh 解説
 | |
| .Fn i386_vm86
 | |
| システムコールは vm86 に関連するさまざまな関数を呼び出すのに使用します。
 | |
| .Fa function
 | |
| 引数は次の値の内の 1 つにできます。
 | |
| .Bl -tag -offset indent -width VM86_SET_VME
 | |
| .It Dv VM86_INIT
 | |
| カーネルのプロセス用 vm86 パラメータ領域を初期化し、プロセスが vm86 呼び出しを
 | |
| できるようにします。
 | |
| .Fa data
 | |
| 引数は次の構造体を指します。
 | |
| .Bd -literal
 | |
| struct vm86_init_args {
 | |
|         int     debug;
 | |
|         int     cpu_type;
 | |
|         u_char  int_map[32];
 | |
| };
 | |
| .Ed
 | |
| .Pp
 | |
| .Fa debug
 | |
| 引数はデバッグコードをオンにするために使用されます。
 | |
| .Fa cpu_type
 | |
| 引数はエミュレート中のタイプの CPU を制御するものですが、
 | |
| 現時点では実装されていません。
 | |
| .Fa int_map
 | |
| 引数は、vm86 割り込みを vm86 モードで処理する必要があるか、またはプロセスに
 | |
| 反映して戻される必要があるかどうかを決定するビットマップです。
 | |
| .Em N 番め
 | |
| のビットが設定されている場合、割り込みはプロセスに反映されます。
 | |
| そうでない場合、 vm86 割り込みテーブルによってディスパッチされます。
 | |
| .It Dv VM86_INTCALL
 | |
| プロセスが vm86 割り込みハンドラを呼び出せるようにします。
 | |
| これは効果的に INT 命令をシミュレートします。
 | |
| .Fa data
 | |
| は下記の構造体を指し示しているべきです:
 | |
| .Bd -literal
 | |
| struct vm86_intcall_args {
 | |
|        int     intnum;
 | |
|        struct  vm86frame vmf;
 | |
| };
 | |
| .Ed
 | |
| .Pp
 | |
| .Fa intnum
 | |
| はシミュレートされた呼び出しのための INT のオペランドを指定します。
 | |
| 例えば、値 0x10 は VGA BIOS への呼び出しのためによく使用されます。
 | |
| .Fa vmf
 | |
| は割り込みハンドラのための呼び出し規約に従って、CPU のレジスタを
 | |
| 初期化するために使用されます。
 | |
| .It Dv VM86_GET_VME
 | |
| Pentium(r) プロセッサの VME (仮想 8086 モード拡張) フラグ
 | |
| である CR4 の ビット 0 の現在の状態を取り出すために使用されます。
 | |
| .Fa data
 | |
| は下記を指し示すように初期化されるべきです:
 | |
| .Bd -literal
 | |
| struct vm86_vme_args {
 | |
|        int     state;                  /* 状態 */
 | |
| };
 | |
| .Ed
 | |
| .Pp
 | |
| .Fa state
 | |
| は戻る時に VME フラグの状態が入ります。
 | |
| .\" .It Dv VM86_SET_VME
 | |
| .El
 | |
| .Pp
 | |
| vm86 モードに入るには、vm86 用に正しく設定したマシンコンテキスト、そして
 | |
| .Dv PSL_VM
 | |
| ビットを設定して
 | |
| .Xr sigreturn 2
 | |
| を呼び出します。
 | |
| シグナルの配信時に制御がプロセスに戻ります。
 | |
| .Sh 戻り値
 | |
| .Rv -std i386_vm86
 | |
| .Sh エラー
 | |
| .Fn i386_vm86
 | |
| システムコールは次の場合に失敗します:
 | |
| .Bl -tag -width Er
 | |
| .It Bq Er EINVAL
 | |
| カーネルに vm86 サポートがないか、または無効な関数が指定されました。
 | |
| .It Bq Er ENOMEM
 | |
| カーネルデータ構造体を初期化するのに十分なメモリがありません。
 | |
| .El
 | |
| .Sh 作者
 | |
| .An -nosplit
 | |
| このマニュアルページは
 | |
| .An Jonathan Lemon
 | |
| が書き、
 | |
| .An Bruce M Simpson
 | |
| が更新しました。
 |