更新日: 2011 年 11 月 15 日
060dmap.x の説明
説明
060dmap.x の添付ドキュメントです。末尾に記載されている連絡先は無効です。
060dmap.doc
────────────────────────────────────
DMA 転送開始前に勝手にデータキャッシュをプッシュしてみるテスト
060dmap.x v0.01 (1998.01.28) by M.Kamada
────────────────────────────────────
●このプログラムの機能
68060 の MMU を使って、DMA 転送開始前にデータキャッシュをプッシュしま
す。
具体的には、DMAC レジスタ($00E84000〜$00E840FF)のアクセスで一時的に
ページフォルトを発生させ、チャンネルコントロールレジスタのアクセスならば、
アクセスの前に勝手にデータキャッシュをプッシュします。
DMAC レジスタのアクセスは read/write 共にアクセスの前後を合わせて実測
で約 6 μs遅延します(DMAC による転送動作そのものが毎回遅延するわけでは
ありません)。
古い音源ドライバの中には、ADPCM のデータがデータキャッシュにダーティデ
ータとして残っていてもそれををプッシュせずに DMA 転送しようとするために
コピーバックモードでは正常に音が鳴らないことがあります。このプログラムを
組み込むことによって DMA 転送開始前に自動的にデータキャッシュがプッシュ
されるので、ADPCM が正常に鳴るようになることがあります。
特殊な FD ドライバや、メモリ→メモリ転送に DMAC を使っているプログラム
にも効果が期待できます。
●動作環境
060turbo の 68060 モードで動作します。
●使用法
デバイスドライバまたはコマンドラインで常駐します。
DEVICE = 060dmap.x
または
> 060dmap.x
機能停止状態で常駐させたいときは、パラメータに off を指定して組み込ん
で下さい。
DEVICE = 060dmap.x off
または
> 060dmap.x off
常駐後は、コマンドラインで機能の on/off が可能です。
> 060dmap.x on
または
> 060dmap.x off
解除するときは -r を指定して実行して下さい。
> 060dmap.x -r
●注意
チャンネルコントロールレジスタのアクセスの内容が転送開始のオペレーショ
ンかどうかの判断はしていないので、継続や中止の際にもデータキャッシュがプ
ッシュされます。
バスマスタ(Mach-2 など)によるデータ転送は監視できないので対象外です。
アクセスフォルトのベクタが衝突するため、デバッガと共存できません。デバ
ッガを起動する前に、必ずウェイトを解除して下さい(常駐を解除する必要はあ
りません)。ウェイトを入れたままデバッガを起動すると、以下のような影響が
出ます。
・デバッガ上で DMAC レジスタをアクセスできなくなります。
・DMAC を使うプログラムをデバッガ上で実行することができなくなります。
DMAC レジスタをユーザモードでアクセスしようとするとハングアップします。
DMAC レジスタを MOVES 命令でアクセスできなくなります。
$00E84000〜$00E85FFF の範囲に DMAC レジスタ以外のポートを増設している
場合、そのポートをアクセスできなくなります。
●お約束
正しく動作することを期待して作成しましたが、このプログラムの動作は無保
証です。
●連絡先
Mankai Special X680x0 user's Net: MKSX0109:かまだ
(EOF)