1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3
4<head>
5<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
6<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 7.0.0.0 for Windows">
7<META http-equiv="Content-Style-Type" content="text/css">
8<title>MI_CpuMove</title>
9<LINK rel="stylesheet" href="../../css/nitro.css" type="text/css">
10</head>
11
12<body>
13
14<h1 align="left">MI_CpuMove* <IMG src="../../image/NTR.gif" align="middle"><IMG src="../../image/TWL.gif" align="middle"></h1>
15<h2>Syntax</h2>
16
17<dl>
18  <dd>
19<CODE>#include &lt;nitro/mi.h&gt;</CODE><BR>
20  <BR>
21  <CODE>void MI_CpuMove16( const void* src, void* dest, u32 size );</CODE><br>
22  <CODE>void MI_CpuMove32( const void* src, void* dest, u32 size );</CODE><br>
23  <CODE>void MI_CpuMoveFast( const void* src, void* dest, u32 size );</CODE><br>
24  <CODE>void MI_CpuMove( const void* src, void* dest, u32 size );</CODE>
25  </dd>
26</dl>
27<h2>Arguments</h2>
28<TABLE border="1" width="100%">
29  <TBODY>
30    <TR>
31      <TD width="13%"><EM><STRONG>src</STRONG></EM></TD>
32      <TD width="87%">The transfer source address.</TD>
33    </TR>
34    <TR>
35      <TD width="13%"><EM><STRONG>dest</STRONG></EM></TD>
36      <TD width="87%">The transfer destination address.</TD>
37    </TR>
38    <TR>
39      <TD><EM><STRONG>size</STRONG></EM></TD>
40      <TD>Transfer size.
41      </TD>
42    </TR>
43  </TBODY>
44</TABLE>
45
46<h2>Return Values</h2>
47<p>None.</p>
48
49<H2>Description</H2>
50<P>Moves data in the CPU. Data can be moved properly, even if the source and destination transfer regions overlap each other.</P>
51<!--<P><CODE>MI_CpuMove8()</CODE> ???????????????????????????????????????? 16?????? 32???????????????????????????????????????????????????</P>-->
52<P><CODE>MI_CpuMove16()</CODE> moves data in 16-bit units. Both the transfer source address and the transfer destination address must be 2-byte aligned.</P>
53<P><CODE>MI_CpuMove32()</CODE> moves data in 32-bit units. Both the transfer source address and the transfer destination address must be 4-byte aligned.</P>
54<P><CODE>MI_CpuMoveFast()</CODE> moves data 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 <CODE>MI_CpuMove32()</CODE>.</P>
55<P><CODE>MI_CpuMove()</CODE> selects the most efficient method possible based on the transfer destination address, and also moves data in 32-byte units in addition to moving data in 8-bit, 16-bit and 32-bit units as appropriate. There are no limitations on either the alignment or transfer size of the source or destination addresses.</P>
56
57<h2>Internal Operation</h2>
58<P>Processing is done by the CPU only and does not use the DMA controller. It does not use a system call. <CODE>MI_CpuMove()</CODE> may sometimes move data in 8-bit units depending on the target address, so do not use it if you are accessing VRAM directly, if in NITRO mode (or even in TWL mode if the &quot;byte write&quot; extensions for VRAM have not been enabled).</P>
59
60<h2>See Also</h2>
61<p><CODE><A href="MI_CpuCopy.html">MI_CpuCopy*</A>, <A href="MI_CpuFill.html">MI_CpuFill*</A>, <A href="MI_CpuClear.html">MI_CpuClear*</A>, <A href="MI_CpuSend.html">MI_CpuSend*</A>, <A href="../dma/MI_DmaCopy.html">MI_DmaCopy*</A><br></CODE></p>
62
63<H2>Revision History</H2>
64<P>
652007/12/10 Initial version.
66</P>
67<hr><p>CONFIDENTIAL</p></body>
68</html>
69