出張。帰着。
眠くて死亡。
出張。
出張。
日付け越え。
ちょこーりコーディング。
日付け越え少し前に帰着。
ちょこーりコーディング。
日付け越え少し前に帰着。
何気に3D CGアルゴリズム関連資料を探索してみたり。
同じような内容の資料は沢山ありますが、論理だけに留まって
コードが無いとか割と多いように感じました。以前、OpenGLを
使ってみて、至れり尽せりさ加減に感動したものですが、
それだけに、知らなくても使える部分が多いから、「....という事を
ライブラリがやってくれるので、別に知らなくても大丈夫です。」
って感じになるのかなぁなどと思ってみました。それでも、オブジェクトの
動きのアルゴリズムだとか、自分で考えなくてはならない部分に
専念できるという点はメリットだとは思いますけどね。
ちょっと横になったら、電気もTVもつけっぱなしで朝まで爆睡
してました。
風邪ひいたみたい。
WBSでやってた大容量光ディスク。DVDサイズで24時間×1ヶ月間
TV録画し続ける事ができる豪快な容量が素敵。世の中頭打ちには、
なかなかならないものだなと思いました。
力尽き気味で死亡。
普通に起きて休日出勤(T_T)
日のあるうちに帰れたので、掃除したりゴミを片付けたり。
一通り終った後、帰り際に何気に買った「超アーケード」を読んでいたのですが、
眠くなったのでちょっと目をつぶったらそのまま爆睡(汗; 起きたら
MIBも中盤にさしかかろうという時間。
ちょこーりプログラムをいじったりしながらダラダラ過ごして
一日終了。
夕方頃起床。寝過ぎ(<ってまたかよ)。
先日仕掛けたMegaPOV実行の結果を、プロ遊下の「PPC-gccのコンパイラ性能比較」に
反映しました。バージョンが上がる毎の傾向は同じようです。
打ち切り宣告されたウルトラマンコスモスの総集編が放送されていました。
放送が始まる前のウルトラマンによる事の経緯の説明セリフで「ムサシがいつ戻って
来るのか私にも判らない」という所が切ないと思いました。
これを見てて、昔、美少女3DCG作家であるところの由水桂氏が「CGはスキャンダルが
無いのが良い」と言ってたのを思い出しました。
食料調達ついでに本屋に。電撃王と幽玄漫玉日記(6)を査収。
日付け越え前に帰着。
先日makeを仕掛けたmipsクロスgccの確認。結果から言うとOKでした(^^)。
-gでシンボルもきちんと入るので、gdbのmipsシミュレータで動作
させた時も正しく行ごとにBreakPointを設定できました。あぁ、
ちゃんとしてないなんて言ってしまってすんませんm(_'_)m
(>mips gccの方々(誰?!)。それにしても、オプティマイズレベルを上ると
出ていたインターナルエラーが出なくなったのはイマイチ理解ができません。
--with-gnu-as/ld オプションと何の関係があるのかしら?
ppcクロスgccの方も出来あがっていたのでMegaPOV実行を仕掛けて寝る。
少し早めに帰着。
ダウンロードしたgcc-3.1を取りあえずmipsクロスコンパイル。
でもやっぱオプティマイズレベルを上げるとInternal ErrorでNG。
test> /usr/local/mips/bin/mips-powerx-elf-gcc -c -Wall -O2 -mno-mips-tfile -I. -I/usr/local/mips/ppclib/include gdbtest.c gdbtest.c: In function `main': gdbtest.c:12: Internal compiler error in text_section, at varasm.c:241 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
日付け越え。
CygwinでDLLを生成する手順を
ここ
から仕入れて練習。手数が少々多いのですが、一応生成OKでした。
あと、libpngのCygwin用Makefileを使用すると、DLLを生成するような
Makefileになっていて、そちらも参考になりそうです。
何気にWebぐるしていたらgcc-3.1が出ている模様。全然気づかなかった(^^;
日付け越え少し前に帰着。
ppcsimをちょこりいじり。シリアルポート入力を行うためにグラフィック
ウインドにキーセンスコードを追加してましたが、結局、キーコード(?)
からASCII文字への変換方法がいまいちよく判らず。MapVirtualKey()
というWinAPIを使用することで、仮想キーコードからASCII文字に変換できそうな所
までは判ったのですが、仮想キーコードはどうやればキー入力から得られる
ものなのか判らず。
CygwinでもDLLを生成できるらしい。要調査項目。
日付け越え少し前に帰着。
先日ppcbootをコンパイルした際に、IOデバイスがROM空間に割当たっていると
書いたのですが、正しくはPCIメモリ空間でした。また、ROM空間でも、特に
ROMとして割り当てる必要は無いため、デバッグ用のデバイスを割り当てる
目的でROM空間にIOデバイスを割り当てるデザインもあるようです。
そんな感じなので、ppcsimのメモリ割り当て方法を、現在の256MB×16セグメント
から16MB×256セグメントに変更することにしました。一部ハードコーディング
されている部分がありましたが、ちょこっといじって修正完了。
取りあえずレベルダウンはしていなさげ。
随分前からやっていた「放送作家トキワ荘」。番組中で生み出される企画より
もその添削を行うT部長のコメントの方が面白いと思いました。電波の企画はかなり無茶
なものが多いと思っているのですが、どの企画も何故か最後は信じられない
ような成功を収めて終了していると思います(稀に大ハズレの時もありますが)。
添削コメントに「こうなるであろう事が予想できなくてはダメ」
みたいな節がよく見られるように思いました。これを
見ていると、電波の企画はデタラメに考えられている訳でなく、成功する
ことが非常に高い確率で期待できると判っているから、企画として成立
させる事ができるのではなかろうかと思いました。
電波少年的地球防衛軍のような、絶対に成功があり得ないと思われるような
企画の成功が見ぬけていたとすると、それはある意味 神がかり的眼力がある
ように思えるのですが どうでしょう?(^^;
昼過ぎ起床。掃除したり洗濯したり。
CGを描きながら過ごしてみたり。以前からあった彩のバグなのですが、
それっぽい再現方法が判ったのでメモ。
夕方起床。寝過ぎ(汗;
シリアルポートをちょこりと実装。つっても出力方向だけ。基本は
consoleデバイスと同じという感じ。Linuxカーネルの方はポートの
初期化が終った頃からメッセージが出てくる様子。ppcbootの方は
何も出力は無く、シリアル入力がポーリングされている様子。
入力ができるように、グラフィックデバイスの方でキーボード
入力を受けて、それをシリアルポート入力としてセンスできるように
しようとしたのですが、キーコードが返っているようで、ASCIIに
変換する必要がありそうな予感。
何気に本屋で「はじめての水墨画」という本を買ってみました。
水墨画自体に別段興味は無かったのですが、パラパラとめくってみた
所、筆運びや墨の付け方、筆先の作り方など、実に多彩な基本テクニック
があり、それを組み合わせて描くというのに非常に興味をそそられ
ました。かすれをうまく使って石桶の表面を表現したり、筆跡の
中心が濃くなるような手法(内脈というらしい)で、魚の背を表現した
り、なるほどと思わされます。単に墨で描けば水墨画っぽく見える
とは思いますが、これらの表現手法を知ると、単に墨で描いただけ
では表現が乏しく感じるようになるのかもと思います。
この本の中で出てきた筆使いを見ていると、CGで筆を完全に
再現するのは、インターフェースも含め当分の間は不可能だと
感じました。
少し早めに帰着。
サッカー勝ったらしいというニュースを見てたら眠くて死亡。
日付け越え。
先日の彩の動作確認で、一つ起こった不具合があったのですが、
再現できるようなのでメモ。
日付け越え。じわじわ来たよ。
彩で色々動作を試していたら落っこちたり無反応になったりしまいに
Windowsがハングったり(^^;
XBOXのブロードバンドユニットで、音声コミュニケータというのが
あるのを知りました。普通に考えるとTV電話みたいな使い方をする
のかとも思ったのですが、
シーマンの音声認識機構とPSOの自動翻訳機構を組み合わせて、
音声自動翻訳とかできるとスゲーなと思った。
少し早めに帰着。
ちょっと前にCVS coしておいたgccでmipsクロスコンパイル。
以前オプティマイズレベルを
上げるとインターナルエラーでずっこけていましたが、今回coしたもの
もやはりNG。なんだ?盛大に更新した痕跡がありそうなのですが、
状況変化無しというのは、クロスコンパイルのやり方に何か問題が
あるのかしら?
消しゴムで消せる水性ペンのCMのD-inkを何気に買ってみました。一応
消える事は消えますが、若干の跡は残る模様。それよりも、指とかで
擦ると結構消えてしまうようなので、何度も参照するようなメモに
使うのはあまり向いていなさげ。
少し早めに帰着。
何気にppcbootをコンパイルしてみました。以前コンパイルしようとして失敗
したときは、glibcを標準Cライブラリとしてgccを構築していなかったため、
glibcに含まれるマクロ群がことごとく見つからなくて全くダメダメでした。
以前作ってあったglibcを標準Cライブラリにしたgccを使用して、適当なボード
をターゲットにしてコンパイルしてみた所、いくつか手を入れる部分がありました
がコンパイルに成功しました(^^)v。
ターゲットをmake BAB750_config で指定して取りあえずコンパイルして
みたのですが、bootローダをROM空間(0xff000000)に配置するようになっていて
ppcsimではメモリを割り当てられなくてNG(^^;
で、board/eltec/bab750/config.mkのTEXT_BASEを0xff000000から0x40000000に、
include/config_BAB750.hのFLASHメモリの配置位置も0xffc00000から0x40c00000に
変更してコンパイル。そして実行。stwbrx(バイト反転ストア)が未実装でNG(^^;
入れた記憶があったのですが、ロードを入れただけだったらしい。で、実行
するとメモリアクセス越えでずっこけ。0xfec00cf8にストアを実行している
のですが、このアドレスはシステムコントローラMPC106のPCIコンフィグレー
ションレジスタのアドレスになっています。所が、メモリマップ-Aでは
0x80000cf8に割当たっているのが正解で、CFG_ADDRESS_MAP_Aがdefineされている
にも関わらず、何故かメモリマップ-Bのような振る舞いを行っています。
メモリアクセスを行っている命令列のアドレスから、関数を逆引きして、
board/eltec/bab750/mpc106_init.Sのset_address_map()が該当個所である
のを見つけたのですが、ifdefでCFG_ADDRESS_MAP_Aの時は0xfec0をlisで読み込んで
いて、明らかに仕様と反対の事をやっているように見えます(^^;
ifdefをifndefにするべきなのか0xfec0を0x8000にするべきなのか判りませんが
、とりあえず後者でしのいで実行した所、動きっぱなしになり、適当な所
で止めるとwaitEmpty()という関数で止まっているようだったので、何かが
動いているような気分。シリアルポートのコントローラを実装できれば、そちら
を経由してメッセージ出力されそうな予感がしなくもありませんが、取りあえず
ここまで。
適当な時間に寝て割と朝早く起きて、また寝てしまったら夕方(T_T)
bochsのbiosソースを眺めていると、ディスクの読み出しの場合、
最初にDMAをセットして、その後FDCにコマンドを入れています。
4059 // turn on motor of selected drive, DMA & int enabled, normal operation 4060 if (drive) 4061 dor = 0x20; 4062 else 4063 dor = 0x10; 4064 dor |= 0x0c; 4065 dor |= drive; 4066 outb(0x03f2, dor); 4067 4068 // check port 3f4 for drive readiness 4069 val8 = inb(0x3f4); 4070 if ( (val8 & 0xf0) != 0x80 ) 4071 panic("int13_diskette:f02: ctrl not ready");
<6>Floppy drive(s): fd0 is 2.88M ; Linuxコンソールメッセージ Passed count= 78410807 : floppy_grab_irq_and_dma touch memory 0x800000a1 (prob=0x80000078) at pc=0xc000da90 ; ──┬─PIC0 IR allマスク PIC1 : IMR=ff , ISR=00 , IRR=00 ; ──┘ touch memory 0x80000021 (prob=0x80000000) at pc=0xc000daac ; ──┬─PIC0 IR FD/IR2マスク開く PIC0 : IMR=bb , ISR=00 , IRR=00 ; ──┘ Passed count= 78411902 : reset_fdc_info touch memory 0x800003f2 (prob=0x80000078) at pc=0xc00841cc FDC(pc:c00841cc,ad:800003f2,st) = 00 00 04 00 80 00 00 00 ; ────FDC-Enable? Passed count= 78412033 : set_dor touch memory 0x800003f2 (prob=0x80000078) at pc=0xc007bc08 ; ──┬─FDCコマンド FDC-Enable,DMA-Enable? FDC(pc:c007bc08,ad:800003f2,st) = 00 00 0c 00 80 00 00 00 ; ──┘ motorは回していない pc=00000500 : Catch External Interrupt. ; 割り込み発生 touch memory 0x80000020 (prob=0x80000000) at pc=0xc000d898 ; ──┬─割り込み要因の回収と PIC0 : IMR=bb , ISR=40 , IRR=40 ; │ 再設定 touch memory 0x80000020 (prob=0x80000000) at pc=0xc000d8ac ; │ PIC0 : IMR=bb , ISR=40 , IRR=40 ; │ touch memory 0x80000021 (prob=0x80000000) at pc=0xc000da2c ; │ PIC0 : IMR=bb , ISR=40 , IRR=40 ; │ touch memory 0x80000021 (prob=0x80000000) at pc=0xc000da40 ; │ PIC0 : IMR=bb , ISR=40 , IRR=40 ; │ touch memory 0x80000020 (prob=0x80000000) at pc=0xc000da58 ; │ PIC0 : IMR=bb , ISR=00 , IRR=00 ; ──┘ <7>Unhandled interrupt 4, disabled ; Linuxコンソールメッセージ ダメ?
朝一瞬目が覚めた後、また寝て次に暑くて起きたら昼過ぎ。寝過ぎ。
ちょこりお出かけ。何気に液晶ディスプレイとか眺めてみたり。うーん、
確かに安くなっていますが、やっぱまだ液晶独特の色合いには慣れません
なぁ。テキストエディットするだけとかだと気にするところではないと
は思いますが。
帰ってからppcsimのIOデバイス周りのコードを書き換え。
デバイス毎にソースを分離して、IOエントリテーブルを用意して
そのエントリテーブルにポートアドレスを仕込んでおいて
比較するという構造にしてみました。で、FDCからの割り込みを
PICに伝えてプロセッサに割り込みが伝わるようにしてみたのですが、
結局、FDCのあるべき振る舞いがイマイチよく判っていないため、
どのタイミングで割り込みを出して良いのやら。
KOJIさんと電話でお話。彩の巨大キャンバスエディット時のパフォーマンス
低下についてとか色々。
少し早めに帰着。
帰ってきて横になったらそのまま朝まで爆睡(汗;
起きたら風邪が悪化していて休業。本当に一日中寝てました。
先日拾った割り込みコントローラの資料読み。つっても英語は読めませんが(涙。
フィーリングで読んだ所、IR入力に信号が入るとIRR(Interrupt Request Register)
にデバイスからの割り込み要求が保持され、IMR(Interrupt Mask Register)値を
通してプライオリティ制御が行われるようです。INT出力に信号を上げると同時に、
ISR(In-Service Register)にIR番号に対応したbitをセットして、
CPUからの割り込み処理終了信号INTA待ちになり、それが
上がると、ISR,IRRはリセットされて次の割り込みを受け付けられる状態に
なるという感じのようです。イマイチよく判らなかい点は、CPUの割り込み
処理終了信号であるところのINTAですが、PPCではそのような信号は出てい
ません。データシートの図にはIRRをリセットする信号が書かれていない
ため、FREEZE信号でIRRの内容を更新しているように見えるのですが、
このFREEZE信号の説明には
「!FREEZE is active during !INTA and poll sequences only.」など
と書かれていて、INTAをどうにかしなくてはIRRの更新ができないように
読めました。いまいち判りにくかった「I/O制御プログラミング入門」を
合わせて読んでみた所、EOI(End of interrupt)コマンドと呼ばれる
割り込み完了をポートを通してコントローラに通知する手段が設けられ
ており、ICW4.AEOI(Auto end of interrupt)が1であればEOIコマンド
を発行する必要がなくなりますと(通常はAEOI=0にするとも)書かれて
います。これを考えると、INTAが出せないプロセッサではICW4.AEOI=0
でも、IRRが更新できなければ変という感じがします。
これらの情報をまとめて動作を推測しますに、IR入力に割り込み
が入るとIRRに保持され、プライオリティを取ってINT出力を上げて、
それをプロセッサ(PPCとすると)が受け付けると外部割り込み例外が
発生して割り込みベクタに飛びます。カーネルはISRを読みとって、
どのデバイスからの割り込みかをチェックし、割り込み処理を
ドライバ等が行った後、EOIを発行して割り込み処理を終了する
という感じなのでしょうか?
因みに先日のLinuxの割り込みについてのドキュメントを読んでみると、
ISRはInterrupt Status Registerと読みかえられています(ソース
のコメントにもこの単語がありました)。どうでも良い事ですが、
個人的意見で言うと、Statusという単語は意味が判るようで実は判り
にくくて、「何のステータスなの?」と、結局、何のレジスタか判らない
ものです。In-Serviceの方が意味を持ったレジスタ名としては良い呼び方
だと思いました。あと、何故Programableなのか理由がよく判りません
でしたが、IMRによる割り込みマスクや割り込み優先順位を自由に変更
できるという意味でプログラマブルという事のようです。
食料調達ついでに本屋へ。ヒカ碁(17)査収。飯食べる前に一気読み。
あぁ、面白かった。新シリーズも楽しみ。
ぐじぐじとPICを実装。取りあえずできたので、リンク&実行。Linux
カーネルを実行した結果は以下。
PIC0 : IMR=ff , ISR=0 , IRR=0 PIC1 : IMR=ff , ISR=0 , IRR=0 PIC0 : IMR=fb , ISR=0 , IRR=0 Passed count= 138141521 : floppy_init Passed count= 138157497 : reschedule_timeout Passed count= 138191850 : floppy_grab_irq_and_dma PIC1 : IMR=ff , ISR=0 , IRR=0 PIC0 : IMR=bb , ISR=0 , IRR=0 Passed count= 138192945 : reset_fdc_info Passed count= 138193076 : set_dor
少し早めに帰着。
掲示板にて割り込みコントローラの資料の所存を教えていただきました。他、
検索条件を8259で捜していたのを8259Aで捜すとみつかったり色々。
PICの単語も「PIC」と「割り込み」をAND条件で検索すると、良い感じの資料が色々
見つかりました。でもやはりマイコンのPIC(Peripheral Interface Controller)
も多く引っかかるようです。Linuxの割り込み処理については
こんな感じのとか見つかったり。ふむ。
そんな訳でシミュレータにPICを実装してみる事を考えてみました。
最初、sim_io.cに埋め込んじゃえばいいやと思っていたのですが、
現在実装してあるPseudoIOデバイスはin/outは片方向のみで定義して
あるのと、cmdを入れると次の命令以降でデータが読めるような仕掛けに
してあるのとで、命令実行後にIOアクセスをチェックするだけで
済むのですが、PICやFDCは双方向ポートになっているため、Readの
場合は命令を実行する前に、Writeの場合は命令実行後にIOアクセス
の判定を行わなくてはならないのでは......と少し悩んでみたり。
一分考えた後、至った結論は常にシミュレータメモリには常にRead対応の
データをセットしておき、Writeアクセスが行われて潰された場合は、
Writeアクセス解釈後、すぐにRead対応のデータを戻すという方法が
良いかと思われ。
あぁ、それよりも適当に増築してきたIOデバイスのコードを少し
見直して、デバイスの組み込みや取り外しがスケーラビリティに
行えるように考えた方がよさげ。
少し早めに帰着。
先日の結果を元にソース読み。
arch/ppc/kernel/i8259.cにi8259_init()という初期化ルーチンがあるので
資料片手に読み。大きく分けて、初期化フェーズと操作フェーズの二種類
の操作があり、それぞれICW(Initialization Command Words)と
OCW(Operation Command Words)をIOポートに送り込むことでレジスタ設定
及び操作を行うという事のようです。i8259_init()では初期化フェーズのみ
が実行されています。以下が実際のコードになっています。
139 /* init master interrupt controller */ 140 outb(0x11, 0x20); /* Start init sequence */ 141 outb(0x00, 0x21); /* Vector base */ 142 outb(0x04, 0x21); /* edge tiggered, Cascade (slave) on IRQ2 */ 143 outb(0x01, 0x21); /* Select 8086 mode */ 144 outb(0xFF, 0x21); /* Mask all */ 145 /* init slave interrupt controller */ 146 outb(0x11, 0xA0); /* Start init sequence */ 147 outb(0x08, 0xA1); /* Vector base */ 148 outb(0x02, 0xA1); /* edge triggered, Cascade (slave) on IRQ2 */ 149 outb(0x01, 0xA1); /* Select 8086 mode */ 150 outb(0xFF, 0xA1); /* Mask all */
(((( PPCでのPort割り当てアドレス )))) ┏━━━━━┯━━━━━━━━━━━━┓ ┃ │ Master Slave ┃ ┠─┬───┼────────────┨ ┃A │Port0 │0x80000020 0x800000A0 ┃ ┃D ├───┼────────────┨ ┃R │Port1 │0x80000021 0x800000A1 ┃ ┗━┷━━━┷━━━━━━━━━━━━┛ ※Port0/Port1という呼び名は便宜上 TANEが勝手に名づけたもの (((( コマンド/データの種類とアクセスするPortの対応 )))) ┏━━━━┯━━━━┓ ┃ Port0 │ Port1 ┃ ┠────┼────┨ ┃ICW1(W) │ICW2(W) ┃ ┃OCW2(W) │ICW3(W) ┃ ┃OCW3(W) │ICW4(W) ┃ ┃IRR(R) │OCW1(W) ┃ ┃ISR(R) │IMR(R) ┃ ┗━━━━┷━━━━┛ ※()内はポートへのアクセスの方向 Write(Out)/Read(In) を示す
ICW1 7 6 5 4 3 2 1 0 | | | | | | | +--- IC4 ICW4の要否 1:必要 0:不要 | | | | | | +----- SNGL カスケード接続か? 1:シングル 0:複数 | | | | | +------- ADI CALLアドレスインターバル 86系では0 | | | | +--------- LTIM トリガモード 1:レベル 0:エッジ | | | +----------- '1' ICW1を示す +-+-+------------- A7-A5 下位ベクタアドレス 86系では0 ICW2 7 6 5 4 3 2 1 0 | | | | | +-+-+--- '000' +-+-+-+-+--------- T7-T3 86系では割り込みベクタタイプの上位5bitを示す ICW3 7 6 5 4 3 2 1 0 (マスター設定時) +-+-+-+-+-+-+-+--- マスタデバイス設定 '1' でbitに対応する割り込み 入力はスレーブi8259が接続されている | | | | | | | | | | | | | | | | (スレーブ設定時) | | | | | +-+-+--- スレーブID +-+-+-+-+--------- '00000' ICW4 7 6 5 4 3 2 1 0 | | | | | | | +--- μPM 1:8086モード 0:8085モード | | | | | | +----- AEOI 1:AEOIモード 0:ノーマルモード | | | | +-+------- BUF/MS 0x:バッファモードでない | | | | 10:バッファモード(スレーブ) | | | | 11:バッファモード(マスター) | | | +----------- SFNM 1:スペシャルフリーネスティッドモード | | | 0:フリーネスティッドモード +-+-+------------- '000'
少し早めに帰着。今日は一日眠かったっす。
メモリプローブを使用して、IOポートアクセスを監視してみました。
ポートのアドレスと直接アクセスしている命令から、関数を逆引きして
整形した結果が以下。
touch memory 0x8000000a (prob=0x80000000) at pc=0xc007e960 reset_fdc touch memory 0x8000000a (prob=0x80000000) at pc=0xc007edac floppy_shutdown touch memory 0x80000020 (prob=0x80000000) at pc=0xc000d898 i8259_irq touch memory 0x80000020 (prob=0x80000000) at pc=0xc000d8ac i8259_irq touch memory 0x80000020 (prob=0x80000000) at pc=0xc000da58 i8259_mask_and_ack_irq touch memory 0x80000020 (prob=0x80000000) at pc=0xc00d078c i8259_init touch memory 0x80000021 (prob=0x80000000) at pc=0xc000da2c i8259_mask_and_ack_irq touch memory 0x80000021 (prob=0x80000000) at pc=0xc000da40 i8259_mask_and_ack_irq touch memory 0x80000021 (prob=0x80000000) at pc=0xc000daac i8259_set_irq_mask touch memory 0x80000021 (prob=0x80000000) at pc=0xc00d07a4 i8259_init touch memory 0x80000021 (prob=0x80000000) at pc=0xc00d07bc i8259_init touch memory 0x80000021 (prob=0x80000000) at pc=0xc00d07d4 i8259_init touch memory 0x80000021 (prob=0x80000000) at pc=0xc00d07ec i8259_init touch memory 0x80000021 (prob=0x80000000) at pc=0xc00d089c i8259_init touch memory 0x800000a0 (prob=0x80000078) at pc=0xc00d0804 i8259_init touch memory 0x800000a1 (prob=0x80000078) at pc=0xc000da90 i8259_set_irq_mask touch memory 0x800000a1 (prob=0x80000078) at pc=0xc00d081c i8259_init touch memory 0x800000a1 (prob=0x80000078) at pc=0xc00d0834 i8259_init touch memory 0x800000a1 (prob=0x80000078) at pc=0xc00d084c i8259_init touch memory 0x800000a1 (prob=0x80000078) at pc=0xc00d0864 i8259_init touch memory 0x800000a1 (prob=0x80000078) at pc=0xc00d0880 i8259_init touch memory 0x800002e9 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002e9 (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800002eb (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002ec (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002ec (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800002ee (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002f8 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002f9 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002f9 (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800002fa (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002fa (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800002fb (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002fb (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800002fc (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002fc (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800002ff (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800002ff (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x80000398 (prob=0x80000078) at pc=0xc00d17d8 prep_setup_arch touch memory 0x80000399 (prob=0x80000078) at pc=0xc00d17ec prep_setup_arch touch memory 0x80000399 (prob=0x80000078) at pc=0xc00d1804 prep_setup_arch touch memory 0x80000399 (prob=0x80000078) at pc=0xc00d1818 prep_setup_arch touch memory 0x800003e8 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003e9 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003e9 (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003ea (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003ea (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003eb (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003eb (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003ec (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003ec (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003ef (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003ef (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003f2 (prob=0x80000078) at pc=0xc007bc08 set_dor touch memory 0x800003f2 (prob=0x80000078) at pc=0xc007ea00 reset_fdc touch memory 0x800003f2 (prob=0x80000078) at pc=0xc007ea68 reset_fdc touch memory 0x800003f2 (prob=0x80000078) at pc=0xc00841cc floppy_grab_irq_and_dma touch memory 0x800003f2 (prob=0x80000078) at pc=0xc0084248 floppy_grab_irq_and_dma touch memory 0x800003f4 (prob=0x80000078) at pc=0xc007bf20 set_fdc touch memory 0x800003f8 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003f8 (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003f9 (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003f9 (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003fa (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003fa (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003fb (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003fb (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003fc (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003fc (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800003fd (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003ff (prob=0x80000078) at pc=0xc00735b4 serial_in touch memory 0x800003ff (prob=0x80000078) at pc=0xc0073618 serial_out touch memory 0x800004d0 (prob=0x80000078) at pc=0xc00d0e20 prep_route_pci_interrupts touch memory 0x800004d1 (prob=0x80000078) at pc=0xc00d0e38 prep_route_pci_interrupts touch memory 0x80000800 (prob=0x80000078) at pc=0xc00d0910 raven_init touch memory 0x80000800 (prob=0x80000078) at pc=0xc00d0c74 prep_route_pci_interrupts touch memory 0x80000803 (prob=0x80000078) at pc=0xc00d0c8c prep_route_pci_interrupts touch memory 0x8000081c (prob=0x80000078) at pc=0xc00d1888 prep_setup_arch touch memory 0x8000081c (prob=0x80000078) at pc=0xc00d1894 prep_setup_arch touch memory 0x8000ff30 (prob=0x80000078) at pc=0xc00e3bbc mk48t59_get_rtc_time(PseudoIO) touch memory 0x8000ff34 (prob=0x80000078) at pc=0xc00e3bc0 mk48t59_get_rtc_time(PseudoIO)
夕方頃まで寝こけてました。
食料調達ついでに本屋に。先日のアニメの原作と思われる単行本が
置いてあったり。東京ミュウミュウというらしい。
宿題。ぐぅ。
朝、トイレに起きて何気にTVを付けてチャンネル回していたら、ヘンテコな
アニメをやってました。なにやらセーラームーンのパクリのような設定
らしかったのですが、何故かバレエで戦うという無茶な設定でした。戦い
とはおおよそにつかわしくないバレエの動きで、敵を倒すというその
バカバカしさに思わず笑ってしまいましたよ。何故かシッポが生えてたり
ネコ耳だったり、何がなんだかよく判らなかったのですが、朝の番組だけ
にあれを観て育つ少年少女の未来を心配せずには居られない気持ちになり
ました(^^;。
とかしてまた寝て起きると昼過ぎ(汗;
AsianHの総集編番組みて過ごした後、お出かけ。ゲーセンで久しぶりに
GIGAWING2をやってみたり。意外と覚えているなぁとか思ったりして(^^;
「ケロロ軍曹(5)」とDVD「MEMORIES」購入。
先日の続き。
reschedule_timeout()はタイムアウトするまでに二度設定されていて、
最初は_lock_fdc()(==user_reset_fdc()内のマクロラッピング
LOCK_FDC())内で一度呼ばれていて、次はdo_wakeup()内で呼ばれています。
do_weakup()はgeneric_done()内でハンドラが関連付けられているようですが、
この辺、実行順序関係がなんだかよく判らなくなったりして(^^;なんだか難しい
なぁ.......
で、ppcsimの方に手を入れて、パストレースを行ってみました。ppコマンドに
ラベルを指定できるようにしただけなのですが(^^;。floppy.cの関数を全て
pp設定してちょっとフィルタを通して以下のような感じ。
Passed count= 138026747 label=floppy_init Passed count= 138042723 label=reschedule_timeout Passed count= 138077076 label=floppy_grab_irq_and_dma Passed count= 138078171 label=reset_fdc_info FDC(pc:c00841cc,ad:800003f2,st) = 00 00 04 00 80 00 00 00 Passed count= 138078302 label=set_dor FDC(pc:c007bc08,ad:800003f2,st) = 00 00 0c 00 80 00 00 00 FDC(pc:c0084248,ad:800003f2,st) = 00 00 0c 00 80 00 00 00 Passed count= 138079244 label=user_reset_fdc Passed count= 138079253 label=_lock_fdc Passed count= 138079267 label=floppy_grab_irq_and_dma Passed count= 138079331 label=reschedule_timeout Passed count= 138079489 label=set_fdc Passed count= 138079503 label=set_dor Passed count= 138079536 label=set_dor Passed count= 138079566 label=reset_fdc_info FDC(pc:c007bf20,ad:800003f4,ld) = 00 00 0c 00 80 00 00 00 Passed count= 138079722 label=wait_til_done Passed count= 138079730 label=schedule_bh Passed count= 138080538 label=reset_fdc Passed count= 138080556 label=reset_fdc_info FDC(pc:c007ea00,ad:800003f2,st) = 00 00 08 00 80 00 00 00 FDC(pc:c007ea68,ad:800003f2,st) = 00 00 0c 00 80 00 00 00 Passed count= 230970160 label=floppy_shutdown Passed count= 230970169 label=cancel_activity Passed count= 230970231 label=floppy_enable_hlt Passed count= 230970324 label=generic_done Passed count= 230970335 label=do_wakeup Passed count= 230970343 label=reschedule_timeout