# MI_Swap*

## 構文

  `#include <nitro/mi.h>`
  `u32 MI_SwapWord( u32 setData, volatile u32* destp );`
  `u8 MI_SwapByte( u32 setData, volatile u8* destp );`

## 引数

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

## 返り値

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

## 説明

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

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

## 内部動作

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

## 参照

なし。

## 履歴

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