MI_Swap*

構文

#include <nitro/mi.h>

u32 MI_SwapWord( u32 setData, volatile u32* destp );
u8 MI_SwapByte( u32 setData, volatile u8* destp );

引数

setData セットするデータ
destp スワップ先のポインタ

返り値

スワップ先に直前に格納されていた値。

説明

setDatadestp が指す先のデータをスワップします。
これはプロセッサ間やモジュール間で共有リソースを排他制御するためのスピンロック等を実現するために使用されます。
MI_SwapByte() はバイトデータを、MI_SwapWord() はワードデータをスワップします。

TEG環境においては、メインメモリに対してはキャッシュ経由でなければバイトアクセスは出来ないことに注意してください。
したがって、メインメモリ上では基本的に MI_SwapWord() を使用してください。

内部動作

ARM命令の、swp または swpb でスワップしています。

参照

なし。

履歴

2004/10/18 バイトアクセスに関する記述修正
2004/02/10 初版