# MI_CpuSend*

## Syntax

  `#include <nitro/mi.h>`
  `void MI_CpuSend32( const void* src, volatile void* dest, u32 size );`
  `void MI_CpuSend16( const void* src, volatile void* dest, u32 size );`
  `void MI_CpuSendFast( const void* src, volatile void* dest, u32 size );`

## Arguments

src | The transfer source address.
dest | The transfer destination address.
size | Transfer size.

## Return Values

None.

## Description

Uses the CPU to transfer data to the same address. The function does not change the address of the transfer destination. It increments only the transfer origin address, and repeatedly transfers contiguous region data to the same address.

`MI_CpuCopy16()` transfers in 16-bit units. Both the transfer source address and the transfer destination address must be 2-byte aligned.

`MI_CpuCopy32()` transfers in 32-bit units. Both the transfer source address and the transfer destination address must be 4-byte aligned.

`MI_CpuSendFast()` copies at high speed in 32-bit units. Both the transfer source address and the transfer destination address must be 4-byte aligned. The transfer size is an integral multiple of 4 bytes. It does not have to be an integral multiple of 32 bytes. After transferring in 32-byte units, the fractional part is handled by performing the same process as `MI_CpuSend32()`.

## Internal Operation

Processing is done by the CPU only and does not use the DMA controller. System calls are not used.

## See Also

`MI_CpuCopy*
MI_CPUFill*
MI_CpuClear*
MI_CpuRecv*
MI_DmaSend*`

## Revision History

2007/12/26 Added the `MI_CpuSendFast` function.
2004/03/29 Added a note saying that system calls are not used.`2004/01/30 Initial version.`

CONFIDENTIAL