Shinobi Library - ストアーキュー関数

sySqStart

ストアキュー用の仮想アドレスの取得

書式

Void *sySqStart( dstArray )
Void *dstArray

引数

dstArray   ストアキューの転送先アドレス

戻り値

ストアキュー用の仮想アドレス

解説

物理メモリに割当てられたストアキュー用の仮想アドレスを取得します。

Shinobi2ライブラリでは、MMU がイネーブルになっているため、ストアキュー転送用の仮想アドレスを割当てています。 ストアキュー転送を行う場合には、転送を行いたい物理アドレスを sySqStart()関数に渡し、sySqInit()関数によって割当てられた対応する仮想アドレスを取得します。 その取得したアドレスに対して32バイト分のデータを書込み、PREF 命令を発行することで、ストアキュー転送が行われます。


用例

    Uint32 *sqArray;
    Uint32 *dstArray;
    Uint32 *srcArray;

    testArray = (Uint32 *)DEST_ADDRESS_ALIGN32;
    srcArray =  (Uint32 *)SRC_ADDRESS_ALIGN32;

    sqArray = sySqStart(testArray);
    *sqArray++ = *srcArray++;
    *sqArray++ = *srcArray++;
    *sqArray++ = *srcArray++;
    *sqArray++ = *srcArray++;

    *sqArray++ = *srcArray++;
    *sqArray++ = *srcArray++;
    *sqArray++ = *srcArray++;
    *sqArray++ = *srcArray++;
    prefetch((int*)((int)(sqArray-8)));


備考

ストアキュー転送を行っている最中に他のストアキュー転送を行うプログラムに割込まれると、ストアキューレジスタの中身が壊れるため、転送が正しく行われません。 Ninja2ライブラリおよび Kamui2ライブラリはストアキューを使用していますので、割込み内でのストアキューの使用は禁止とします。

sySqStart
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000