Ticket #948

IA32サポートパッチ(改修版)
오픈 날짜: 2002-12-28 01:53 마지막 업데이트: 2003-06-23 01:42

Reporter:
소유자:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
1

Details

HOS-V4をIBM PC/ATで動作させるためのパッチ
です.
i386-elfのクロス環境が動作するRedHat Linuxな
どのPC-UNIX環境での利用を前提としています.
なお,GRUB(Grand Unified Bootloader)が/usr
配下にインストールされている必要があります.
#最近のディストリビューションなら問題ありませ
ん.
TurboLinux8およびRedHatLinux8.0での
構築実績があります.

クロスツールへのPATHを通した上で,
以下のことを行ってください.
なお,以下ではHOSのトップディレクトリからの
相対パスでパスを表記しています.
(1) パッチを当てる
HOSのトップソースディレクトリで,
patch -p1 < ../hos-v4-ia32.diff
とすることでパッチが当たります.
(2) ライブラリのビルド
lib/ia32/ia32gccに移り,
make
コマンドを発行する.
(3) コンフィグレータ構築
configディレクトリに移り
make -f gcc.mak
コマンドを発行する
(4) サンプルプログラムの構築
sample/ia32gccディレクトリに移り
make
コマンドを発行する
(5) ブートディスク作成
sample/ia32gccディレクトリに
sample.bin
が出来あがったことを確認した上で,
以下のことを行います.
a) 空のフロッピーディスクをFDドライブに
挿入.
b) make disk
とコマンドを入力
(6) 起動
(5)で作成したディスクをいれてPCを起動する.

例外発生に伴って停止していたの原因が判明
しましたのでその修正を行っています.
障害の原因は,多重割込み発生時のスタックの
切り替え処理の問題でした.
本問題を改修しましたのでパッチを再度投稿しま
す.
#以前のパッチのトラックは新規パッチの
投稿に失敗しました(何度も試したのですが)ので
削除しました.
本パッチは,hos-v4本体へのパッチです.
以前のパッチからの差分では*あ*り*ま*せ*
ん*ので
御留意ください.
今回の修正では,この問題の改修に加え以下の
点を
修正しました.
(1) 割込み処理の軽量化(コールをやめた)
(2) タスク初期コンテキストの修正
(以前のはPACの仕様にちゃんと
準拠していなかった)
(3) 出力ルーチンの割込み禁止による排他
(まあ,重くなってしまいましたが
もともとデバッグ用なので・・・)
(4) makefile等の修正


Ticket History (3/9 Histories)

2002-12-28 02:41 Updated by: m-arai
댓글 올리기
Logged In: YES
user_id=1822

代理アップロード
2002-12-28 11:44 Updated by: m-arai
댓글 올리기
Logged In: YES
user_id=1822

こちらにはまだ上がっていませんが、mailで送っていただいた
第2版を試してみました。Exceptionの表示はでませんが、
まだ駄目のようです。

--- 実行結果 ---
time:00001
Task1ting 'Hyper Operating System V4'
t
root (fd0)
Filesystem type is fat, using whole disk
kernel /sample.bin
[Multiboot-kludge, loadaddr=0x100000,
text-and-data=0x22ec, bss=0x3ca0,entr
y=0x100024]
--- 実行結果 ---
AMD 5x86-75 と Cyrix 6x86MX-150で試しましたが、同じです。

ただやってみただけでは何なので、いくつか質問をさせて下さい。

sample.binのリンクで、LIBSに-lcがついているのはなぜでしょう
か?使ってませんよね。

"クロス"コンパイラは必須ではないですよね?i386なgcc/binutils
であれば。開発ホスト依存のものは特にリンクされないようです
し。私がFreeBSD/i386のgcc/binutilsを使っているせい、という
ことはないですね?また、gccのver.依存の問題でもないですよね?

あと、当該パッチのconfig/gcc.makへの修正ですが、
https://sourceforge.jp/tracker/index.php?func=detail&aid=915&group_id=183&atid=780
でh-iwamotoさんより御報告があり、既にFIXされています。
2002-12-28 21:38 Updated by: tkato
댓글 올리기
Logged In: YES
user_id=3451

> time:00001
> Task1ting 'Hyper Operating System V4'
> t
どこでとまってるのかなあ...
ハングアップの場合,どっかでとめないと
何が起こってるかわからないので
デバッガのセットアップができるように
修正してみます.

>sample.binのリンクで、LIBSに-lcがついているのはな
>ぜでしょう
>か?使ってませんよね。
一部アーキテクチャでのHOSのサンプルプログラムで
は,RAND関数などを使用しているため,それらを移植す
る際の設定です.
なくても構いません.

>"クロス"コンパイラは必須ではないですよね?i386な
IA32環境でビルドする場合は,必要ないと思いますが,
私のところでは試したことはありません.
ちょっとためしてみますね.
2002-12-29 00:40 Updated by: tkato
댓글 올리기
Logged In: YES
user_id=3451

>"クロス"コンパイラは必須ではないですよね?i386な
IA32環境でビルドする場合は,必要ないと思いますが,
私のところでは試したことはありません.
ちょっとためしてみますね.
Linux環境では,ネイティブのgccでも動作することを
確認しました.
あと,考えられるのは,何らかの割込みがあがってるこ
とくらいですかね,
現行のHOS IA32では,起動時にすべての
割込みマスクを明けているので
何らかのレベル割込み系の割込みが発生(レベルにな
るのは,PCIくらいですが)しているという話はあるかも
しれません.
もっとも,御報告頂いた
表示メッセージを見る限り割込みを禁止している
ところで落ちている気がしますが・・・
正直良くわかりません.
こちらで,現象を発生させることができれば良いのです
が・・・
2002-12-29 09:03 Updated by: m-arai
댓글 올리기
Logged In: YES
user_id=1822

やはり、IA32環境のgccでは、"クロス"である必要はないようですね。
少なくともサンプルの範囲では。

ちなみに、テストに使ったAMD 5x86機にはPCIはありません。
何らかのPCI Setが潜んでいる可能性については分かりませんが。

いづれにせよ、状況をそちらで再現できないことにはどうしようもない
ですね。
2002-12-29 13:32 Updated by: tkato
댓글 올리기
Logged In: YES
user_id=3451

一応,TPを変えて,現象を発生させることには,
成功しました.
スイッチングコンテキスト異常が原因のよう
ですのでもう少し追ってみることにします.
お手数おかけして申し訳ありませんが,
出きればもう少し御付き合いください.
2003-01-06 14:46 Updated by: m-arai
  • File 252: hosia32r2.diff.gz is attached
2003-01-20 10:05 Updated by: tkato
  • 소유자 Update from (None) to tkato
  • Resolution Update from None to Fixed
2003-06-23 01:42 Updated by: tkato
  • Ticket Close date is changed to 2003-06-23 01:42
  • Status Update from Open to Closed

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login