countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2011 年 11 月 15 日
X68000 LIBRARY > ソフトウェアライブラリ > 特定のハードウェア用のソフトウェア > 060turbo 関連 > 060pcr5.x > 060pcr5.x の説明

060pcr5.x の説明

説明

060pcr5.x の添付ドキュメントです。末尾に記載されている連絡先は無効です。

060pcr5.doc
────────────────────────────────────

        060pcr5 for 060turbo
                                                1997 by M.Kamada
────────────────────────────────────

 このプログラムは 68060 の内部の store/load bypass の可否を変更するもの

です。

        > 060pcr5 1
                store/load bypass を禁止します

        > 060pcr5 0
                store/load bypass を許可します

────────────────────────────────────

 68060 の F43G および G65V マスクセットの store/load bypass にはエラッ

タがあり、キャッシュ禁止の I/O ポートにロングワードサイズのデータを書き

込み、すぐに同じアドレスから読み出すと、I/O ポートから読み出す代わりに書

き込んだデータを使用されてしまうことがあります。store/load bypass を禁止

することで、このエラッタを回避することができます。


────────────────────────────────────

        例: 故意にエラッタを発生させるプログラム
      ┌────────────────────────────
      │main::
      │        lea.l   $00E82400,a0            ;ビデオコントローラ
      │        move.l  (a0),d1
      │        or.l    #$80008000,d1
      │        bsr     sub
      │        move.l  (a0),d1
      │        or.l    #$80008000,d1
      │        bsr     sub
      │        rts
      │
      │        .align  16
      │sub:
      │        move.l  d1,d0
      │        move.l  d0,(a0)
      │        move.l  (a0),d1
      │        move.l  d1,d1
      │        rts

 この例では、ビデオコントローラのメモリモードのポートを故意にロングワー

ドサイズでアクセスしています(本来はワードサイズです)。メモリモードが 3

のとき、$00E82400 からロングワードで読み出すと、$00030003 という値が返り

ます。これに $80008000 を or して $80038003 としてから書き込むと、次に読

み出したときは $00030003 に戻っています。これは、このポートの最上位ビッ

トに 1 を書き込んでも読み出される値が 0 であるためですが、これを 68060

でやると $80038003 が返されることがあります。

 つまり、キャッシュ禁止の領域であるにも関わらず、実際にデータを読み出さ

ずに直前に書き込んだデータをそのまま返してしまっているのです。これは

68060 の store/load bypass のエラッタです。store/load bypass を禁止する

ことで、このエラッタを回避することができます。

 幸い、X68030 では、書き込んですぐに読み出したデータが変化している可能

性があるのは VRAM を除く I/O ポートだけで、それらは普通はロングワードサ

イズでアクセスしないので、エラッタの影響はほとんどないと思われます。DMAC

レジスタの MAR/DAR/BAR はロングワードサイズですが、書き込んですぐに監視

するようなことをしないと思います。強いて言えば、メモリチェッカの類に影響

が出る可能性があるかもしれません。


────────────────────────────────────

 060pcr5 の配布は特に制限しませんが、68060 を使っていなければ無意味です。


(EOF)