DC_StoreRange

構文

#include <iris/os.h>
void DC_StoreRange( void* startAddr, u32 nBytes );

void DC_CleanRange( void* startAddr, u32 nBytes );

引数

startAddr クリーンする範囲の最下位アドレス
nBytes クリーンする範囲のバイト数

返り値

なし。

説明

指定されたデータキャッシュ領域のデータをメモリへストアします。

具体的には、指定されたメモリ領域に対応するデータキャッシュへの書き込みデータがメインメモリには反映されていない状態(ダーティ状態)のデータキャッシュのライトバックを行い、すべてのキャッシュの保存値がメモリ内容と一致した状態(クリーン状態)になるようにします。

DMA転送やグラフィクスコマンドの作成時などのように、他のデバイスとのメインメモリを使用したデータ送信のデータブロックを完成させるときに使用します。

startAddr は32バイト単位で下位方向に丸められます。startAddr+nBytes は32バイト単位で上位方向に丸められます。

DC_CleanRange()DC_StoreRange() の別名です。動作は全く同じです。
DC_Clean*/DC_CleanAndInvalidate* は、プロトタイプ版の SDK からの移植作業のために用意されたものですので、通常は DC_Store*/DC_Flush* をお使いください.

ARM プロセッサのオフィシャルドキュメントでは、データキャッシュを無効化する動作を "Flush"、データキャッシュをライトバックしてクリーン状態にする動作を "Clean"、ライトバックして無効化する動作を "Clean and Flush" と記述してる場合がありますが、本 SDK の API では GAMECUBE や Nintendo64 などの API との統一性を重視するため、無効化を "Invalidate"、ライトバックを "Store"、ライトバックして無効化する動作を "Flush" で統一しています。ご注意ください。

内部動作

システム制御コプロセッサのレジスタ7を操作しています。

参照

DC_InvalidateAll DC_StoreAll DC_FlushAll DC_InvalidateRange DC_FlushRange

履歴

2003/12/22 初版