[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:87036] Re: Linux でint 15h


既に解決策が提示されているようですが、ちょっと気になったので1点だけ。

> > [Linuxのユーザモードから直接int15hを]なぜ呼べないのか, 
> > どうしたら呼べるのかについて情報がありましたら教えてください.
> 
>  何故直接呼べないかというと、DOS が real mode で動いている
> のに対し、Linux は protected mode で動いているからです。そし
> て BIOS は一般に real mode を想定して書かれています。
	:
> 擬似的に real mode を用意してあげてから呼ぶ必要があります。
>  この擬似的な環境を virtual 86 mode と言い、この用途のため
> に wrapper として用意されている枠組みの例としては DPMI があ
> ります。
>  この DPMI と同じようなものを自分で作成してやることで、初め
> て Linux から BIOS call が可能となります。

初期のBIOSコール(INT13 DiskBIOS等)はreal modeを前提にしたインタフェイス
ですが、apmは比較的新しいBIOSコールなのでreal modeオンリーではありません。
APMBIOSにはリアルモードで動く側(AX=5301H INT15)と、プロテクトモードで
動く側(16Bit:AX=5302H INT15,32Bit:AX=5303H INT15)からのインタフェイスがあり、

Linuxは普通、APMBIOSのプロテクトモード側インタフェイスをアクセスします。
# 確か、BIOSコールでインタフェイスをチェーン状に登録する…といった方式で
# 管理していたような…。(私も、詳しいことは忘れてしまったんですが…)

そういや、APMが出たばかりのBuggyなBIOSだとプロテクトモード側の
インタフェイスがタコで動かないため、Linuxにはそれに対応する
カーネルコンフィギュレーションとして、
「General setup -> Use real mode APM BIOS call to power off」
なんていうメニューがありますね。こちらはDPMI的なことをしているかも。

P.S
この他ACPIや、PCIBIOSとかもプロテクトモードに対応しています。
詳しくはPhoenixのサイトでダウンロードできる規格文書(英文PDF版)だとか、
AMDの486互換統合チップELAN SC400のマニュアル(日本語PDF版)
なんかが参考になると思います。
確かACPIの資料ははIntelからダウンロードしたかな。

ちょっと古い資料でよければ、PC/AT互換機、もしくはMSDOSマシンの、
割り込みとそれを利用した各種OSのAPI、I/Oポート、一部チップセットの
内部レジスタやRTC等周辺機器の情報までまとめあげた英文の凄い資料が
simtelnetにありました。
# Ralf BrownさんのInterrupt Listとか言ってたような気がする…。
# 多分今ならWebからでも参照できるんじゃないかな。

本格的にPC/ATをHackするなら是非、手元に置いておくといい資料ですよ。

あと…、MITのサイトにもPC/ATの各種BIOSを利用したプログラミング手法を
解説した文書のアーカイブがあったと思います。

 ┏━┳┳┳┓┏━┳━┓┏━┳━┳━┓(以前にBochsのBIOSをいじってました)
 ┃┏┫┃┃┗┫  ┫┃┃┣┛┃┃┃━┫------------------------------------
 ┃┗╋┓┃┃┃  ┫  ┓┃┏┫┃┣  ┃      cyber205 _at_ d3.dion.ne.jp
 ┗━┻━┻━┻━┻┻┛┗━┻━┻━┛------------------------------------

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: