# MI_CpuClear*

## C Specification

  `#include <nitro/mi.h>`
  `void MI_CpuClear8( void* dest, u32 size);`
  `void MI_CpuClear16( void* dest, u32 size);`
  `void MI_CpuClear32( void* dest, u32 size);`
  `void MI_CpuClearFast( void* dest, u32 size);`

## Arguments

dest | The address of the clear destination
size | Clear size

## Return Values

None.

## Description

This function uses the CPU to zero clear memory.

`MI_CpuClear8()` selects the most efficient memory access based on the transfer destination address, and appropriately fills the memory with zeroes in 16-bit and 32-bit units. The alignment of the clear destination address does not need to be considered.

`MI_CpuClear16()` fills the memory with zeros in 16-bit units. The clear destination address must be 2-byte aligned.

`MI_CpuClear32()` fills the memory with zeros in 32-bit units. The clear destination address must be 4-byte aligned.

`MI_CpuClearFast()` fills with zeros at high speed in 32-byte units. The clear destination address must be 4-byte aligned. The clear size must be an integral multiple of 4 bytes. (It does not have to be a multiple of 32.).

## Internal Operation

This processes with the CPU only and does not use the DMA controller. It does not use a system call. `MI_CpuClear8` copies in units of 16/32 bits, so accessing VRAM directly will not cause problems.

## See Also

`MI_CpuCopy*, MI_CpuFill*, MI_CpuSend*, MI_DmaClear*`

## Revision History

2005/07/07 Added description of clear size of `MI_CpuClearFast`.
04/29/2004 Added description of `MI_CpuClear8`.
03/29/2004 Added statement about not using system calls.
12/01/2003 Initial version

CONFIDENTIAL