OpenCores
URL https://opencores.org/ocsvn/avs_aes/avs_aes/trunk

Subversion Repositories avs_aes

[/] [avs_aes/] [trunk/] [doc/] [sw/] [html/] [avs__aes_8c.html] - Blame information for rev 21

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 ruschi
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml">
3
<head>
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 21 ruschi
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
<meta name="generator" content="Doxygen 1.8.4"/>
7 11 ruschi
<title>AES Avalon Slave (avs_aes): avs_aes.c File Reference</title>
8
<link href="tabs.css" rel="stylesheet" type="text/css"/>
9 21 ruschi
<script type="text/javascript" src="jquery.js"></script>
10
<script type="text/javascript" src="dynsections.js"></script>
11
<link href="navtree.css" rel="stylesheet" type="text/css"/>
12
<script type="text/javascript" src="resize.js"></script>
13
<script type="text/javascript" src="navtree.js"></script>
14
<script type="text/javascript">
15
  $(document).ready(initResizable);
16
  $(window).load(resizeHeight);
17
</script>
18
<link href="doxygen.css" rel="stylesheet" type="text/css" />
19 11 ruschi
</head>
20
<body>
21 21 ruschi
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
22
<div id="titlearea">
23
<table cellspacing="0" cellpadding="0">
24
 <tbody>
25
 <tr style="height: 56px;">
26
  <td style="padding-left: 0.5em;">
27
   <div id="projectname">AES Avalon Slave (avs_aes)
28
   </div>
29
  </td>
30
 </tr>
31
 </tbody>
32
</table>
33
</div>
34
<!-- end header part -->
35
<!-- Generated by Doxygen 1.8.4 -->
36
  <div id="navrow1" class="tabs">
37
    <ul class="tablist">
38
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
39
      <li><a href="modules.html"><span>Modules</span></a></li>
40
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
41 11 ruschi
      <li class="current"><a href="files.html"><span>Files</span></a></li>
42
    </ul>
43
  </div>
44 21 ruschi
  <div id="navrow2" class="tabs2">
45
    <ul class="tablist">
46
      <li><a href="files.html"><span>File&#160;List</span></a></li>
47 11 ruschi
      <li><a href="globals.html"><span>Globals</span></a></li>
48
    </ul>
49
  </div>
50 21 ruschi
</div><!-- top -->
51
<div id="side-nav" class="ui-resizable side-nav-resizable">
52
  <div id="nav-tree">
53
    <div id="nav-tree-contents">
54
      <div id="nav-sync" class="sync"></div>
55
    </div>
56
  </div>
57
  <div id="splitbar" style="-moz-user-select:none;"
58
       class="ui-resizable-handle">
59
  </div>
60 11 ruschi
</div>
61 21 ruschi
<script type="text/javascript">
62
$(document).ready(function(){initNavTree('avs__aes_8c.html','');});
63
</script>
64
<div id="doc-content">
65
<div class="header">
66
  <div class="summary">
67
<a href="#func-members">Functions</a> &#124;
68
<a href="#var-members">Variables</a>  </div>
69
  <div class="headertitle">
70
<div class="title">avs_aes.c File Reference</div>  </div>
71
</div><!--header-->
72 11 ruschi
<div class="contents">
73 21 ruschi
 
74 11 ruschi
<p>AES Avalon IP Core software driver.
75 21 ruschi
<a href="#details">More...</a></p>
76
<div class="textblock"><code>#include &lt;<a class="el" href="avs__aes_8h_source.html">avs_aes.h</a>&gt;</code><br/>
77 11 ruschi
<code>#include &lt;string.h&gt;</code><br/>
78 21 ruschi
<code>#include &lt;stdint.h&gt;</code><br/>
79
</div><div class="textblock"><div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
80
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Include dependency graph for avs_aes.c:</div>
81
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
82 11 ruschi
</div>
83 21 ruschi
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
84
<div class="center"><img src="avs__aes_8c__incl.png" border="0" usemap="#avs__aes_8c" alt=""/></div>
85
<map name="avs__aes_8c" id="avs__aes_8c">
86
<area shape="rect" id="node3" href="avs__aes_8h.html" title="header file for AES Avalon IP Core software driver offers interfaces to convinient access to the core..." alt="" coords="5,83,83,111"/></map>
87
</div>
88
</div>
89 11 ruschi
<p><a href="avs__aes_8c_source.html">Go to the source code of this file.</a></p>
90 21 ruschi
<table class="memberdecls">
91
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
92
Functions</h2></td></tr>
93
<tr class="memitem:a962dd946798faab0e83d401c7d43c33c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a962dd946798faab0e83d401c7d43c33c">avs_aes_init</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context)</td></tr>
94
<tr class="memdesc:a962dd946798faab0e83d401c7d43c33c"><td class="mdescLeft">&#160;</td><td class="mdescRight">setup the context to be used later.  <a href="#a962dd946798faab0e83d401c7d43c33c">More...</a><br/></td></tr>
95
<tr class="separator:a962dd946798faab0e83d401c7d43c33c"><td class="memSeparator" colspan="2">&#160;</td></tr>
96
<tr class="memitem:af18edc2beecc3842a131423f55c7636a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#af18edc2beecc3842a131423f55c7636a">avs_aes_setKey</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context, unsigned int *key)</td></tr>
97
<tr class="memdesc:af18edc2beecc3842a131423f55c7636a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a new key This call asserts the KEY_VALID flag and triggers the key-expansion in the core.  <a href="#af18edc2beecc3842a131423f55c7636a">More...</a><br/></td></tr>
98
<tr class="separator:af18edc2beecc3842a131423f55c7636a"><td class="memSeparator" colspan="2">&#160;</td></tr>
99
<tr class="memitem:a22f9afae76f645e31b514b5aa4df2cc1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a22f9afae76f645e31b514b5aa4df2cc1">avs_aes_setPayload</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context, unsigned int *payload)</td></tr>
100
<tr class="memdesc:a22f9afae76f645e31b514b5aa4df2cc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">loads payload for processing to the core basically memcopy...  <a href="#a22f9afae76f645e31b514b5aa4df2cc1">More...</a><br/></td></tr>
101
<tr class="separator:a22f9afae76f645e31b514b5aa4df2cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
102
<tr class="memitem:a55f078baaf019797ab6de7ea1a02475f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a55f078baaf019797ab6de7ea1a02475f">avs_aes_setKeyvalid</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context)</td></tr>
103
<tr class="memdesc:a55f078baaf019797ab6de7ea1a02475f"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the KEY_VALID flag in the control word used to signal the completion of writing the key ( <a class="el" href="avs__aes_8h.html#af18edc2beecc3842a131423f55c7636a">avs_aes_setKey</a> )  <a href="#a55f078baaf019797ab6de7ea1a02475f">More...</a><br/></td></tr>
104
<tr class="separator:a55f078baaf019797ab6de7ea1a02475f"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
<tr class="memitem:acea23b2ab998f18b9aca810765632cac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#acea23b2ab998f18b9aca810765632cac">avs_aes_encrypt</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context)</td></tr>
106
<tr class="memdesc:acea23b2ab998f18b9aca810765632cac"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the ENCRYPT flag in the control word start encryption of (hopefully) previously loaded payload  <a href="#acea23b2ab998f18b9aca810765632cac">More...</a><br/></td></tr>
107
<tr class="separator:acea23b2ab998f18b9aca810765632cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
108
<tr class="memitem:aef16b7ecbb1b091934a9c670ce3b2fcf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#aef16b7ecbb1b091934a9c670ce3b2fcf">avs_aes_decrypt</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context)</td></tr>
109
<tr class="memdesc:aef16b7ecbb1b091934a9c670ce3b2fcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the DECRYPT flag in the control word start encryption of (hopefully) previously loaded payload  <a href="#aef16b7ecbb1b091934a9c670ce3b2fcf">More...</a><br/></td></tr>
110
<tr class="separator:aef16b7ecbb1b091934a9c670ce3b2fcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
111
<tr class="memitem:a827a78f73dd8fef9d2c9e72ad9bb4ea9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a827a78f73dd8fef9d2c9e72ad9bb4ea9">avs_aes_isBusy</a> (<a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *context)</td></tr>
112
<tr class="memdesc:a827a78f73dd8fef9d2c9e72ad9bb4ea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">checks the COMPLETED flag can be used for ugly polling the slave if IRQs are not used  <a href="#a827a78f73dd8fef9d2c9e72ad9bb4ea9">More...</a><br/></td></tr>
113
<tr class="separator:a827a78f73dd8fef9d2c9e72ad9bb4ea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
114
</table><table class="memberdecls">
115
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
116
Variables</h2></td></tr>
117
<tr class="memitem:aac9313626ecf492e39b0f4add66e370d"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#aac9313626ecf492e39b0f4add66e370d">KEY_ADDR</a> = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a></td></tr>
118
<tr class="memdesc:aac9313626ecf492e39b0f4add66e370d"><td class="mdescLeft">&#160;</td><td class="mdescRight">memory offset for key DON'T CHANGE!  <a href="#aac9313626ecf492e39b0f4add66e370d">More...</a><br/></td></tr>
119
<tr class="separator:aac9313626ecf492e39b0f4add66e370d"><td class="memSeparator" colspan="2">&#160;</td></tr>
120
<tr class="memitem:a994843be3758f70aa91454a9ddfacb19"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a994843be3758f70aa91454a9ddfacb19">DATA_ADDR</a> = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a>+0x08</td></tr>
121
<tr class="memdesc:a994843be3758f70aa91454a9ddfacb19"><td class="mdescLeft">&#160;</td><td class="mdescRight">memory offset of payload  <a href="#a994843be3758f70aa91454a9ddfacb19">More...</a><br/></td></tr>
122
<tr class="separator:a994843be3758f70aa91454a9ddfacb19"><td class="memSeparator" colspan="2">&#160;</td></tr>
123
<tr class="memitem:a192250a419c33c4ff96948f692a44254"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a192250a419c33c4ff96948f692a44254">RESULT_ADDR</a> = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a>+0x10</td></tr>
124
<tr class="memdesc:a192250a419c33c4ff96948f692a44254"><td class="mdescLeft">&#160;</td><td class="mdescRight">memory offset of result  <a href="#a192250a419c33c4ff96948f692a44254">More...</a><br/></td></tr>
125
<tr class="separator:a192250a419c33c4ff96948f692a44254"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
<tr class="memitem:a30e81662ebaec8c1b8a283c42e88df36"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avs__aes_8c.html#a30e81662ebaec8c1b8a283c42e88df36">AESCTRLWD</a> = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a>+0x18</td></tr>
127
<tr class="memdesc:a30e81662ebaec8c1b8a283c42e88df36"><td class="mdescLeft">&#160;</td><td class="mdescRight">memory offset for control word  <a href="#a30e81662ebaec8c1b8a283c42e88df36">More...</a><br/></td></tr>
128
<tr class="separator:a30e81662ebaec8c1b8a283c42e88df36"><td class="memSeparator" colspan="2">&#160;</td></tr>
129 11 ruschi
</table>
130 21 ruschi
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
131
<div class="textblock"><p>AES Avalon IP Core software driver. </p>
132 11 ruschi
<p>This file is part of the project avs_aes see: <a href="http://opencores.org/project,avs_aes">http://opencores.org/project,avs_aes</a></p>
133 21 ruschi
<h1><a class="anchor" id="AUTHORS"></a>
134
AUTHORS</h1>
135
<p>Thomas Ruschival &ndash; <a href="#" onclick="location.href='mai'+'lto:'+'rus'+'ch'+'i@o'+'pe'+'nco'+'re'+'s.o'+'rg'; return false;">rusch<span style="display: none;">.nosp@m.</span>i@op<span style="display: none;">.nosp@m.</span>encor<span style="display: none;">.nosp@m.</span>es.o<span style="display: none;">.nosp@m.</span>rg</a> (www.ruschival.de)</p>
136
<h1><a class="anchor" id="LICENSE"></a>
137
LICENSE</h1>
138 11 ruschi
<p>Copyright (c) 2009, Authors and opencores.org All rights reserved.</p>
139 21 ruschi
<p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>
140
<ul>
141
<li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li>
142
<li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</li>
143
<li>Neither the name of the organization nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE </li>
144
</ul>
145 11 ruschi
 
146
<p>Definition in file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
147 21 ruschi
</div><h2 class="groupheader">Function Documentation</h2>
148
<a class="anchor" id="aef16b7ecbb1b091934a9c670ce3b2fcf"></a>
149 11 ruschi
<div class="memitem">
150
<div class="memproto">
151
      <table class="memname">
152
        <tr>
153
          <td class="memname">void avs_aes_decrypt </td>
154
          <td>(</td>
155 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
156
          <td class="paramname"><em>context</em>)</td><td></td>
157 11 ruschi
          <td></td>
158
        </tr>
159
      </table>
160 21 ruschi
</div><div class="memdoc">
161 11 ruschi
 
162
<p>set the DECRYPT flag in the control word start encryption of (hopefully) previously loaded payload </p>
163 21 ruschi
<dl class="params"><dt>Parameters</dt><dd>
164
  <table class="params">
165
    <tr><td class="paramname">context</td><td>struct grouping address information </td></tr>
166 11 ruschi
  </table>
167
  </dd>
168
</dl>
169
 
170 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00098">98</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
171
<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                                              {</div>
172
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>) |= <a class="code" href="group__control-register.html#ga36fab47015485191712a579a059a7c20" title="Start decryption bit. ">DECRYPT</a>;</div>
173
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keyword">asm</span> __volatile(<span class="stringliteral">&quot;sync&quot;</span> :::);</div>
174
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;}</div>
175
</div><!-- fragment -->
176 11 ruschi
</div>
177
</div>
178 21 ruschi
<a class="anchor" id="acea23b2ab998f18b9aca810765632cac"></a>
179 11 ruschi
<div class="memitem">
180
<div class="memproto">
181
      <table class="memname">
182
        <tr>
183
          <td class="memname">void avs_aes_encrypt </td>
184
          <td>(</td>
185 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
186
          <td class="paramname"><em>context</em>)</td><td></td>
187 11 ruschi
          <td></td>
188
        </tr>
189
      </table>
190 21 ruschi
</div><div class="memdoc">
191 11 ruschi
 
192
<p>set the ENCRYPT flag in the control word start encryption of (hopefully) previously loaded payload </p>
193 21 ruschi
<dl class="params"><dt>Parameters</dt><dd>
194
  <table class="params">
195
    <tr><td class="paramname">context</td><td>struct grouping address information </td></tr>
196 11 ruschi
  </table>
197
  </dd>
198
</dl>
199
 
200 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00092">92</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
201
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                                             {</div>
202
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>) |= <a class="code" href="group__control-register.html#ga1cb0c60ca582db30ae87362ca43e8c19" title="start encryption bit ">ENCRYPT</a>;</div>
203
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="keyword">asm</span> __volatile(<span class="stringliteral">&quot;sync&quot;</span> :::);</div>
204
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div>
205
</div><!-- fragment -->
206 11 ruschi
</div>
207
</div>
208 21 ruschi
<a class="anchor" id="a962dd946798faab0e83d401c7d43c33c"></a>
209 11 ruschi
<div class="memitem">
210
<div class="memproto">
211
      <table class="memname">
212
        <tr>
213
          <td class="memname">void avs_aes_init </td>
214
          <td>(</td>
215 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
216
          <td class="paramname"><em>context</em>)</td><td></td>
217 11 ruschi
          <td></td>
218
        </tr>
219
      </table>
220 21 ruschi
</div><div class="memdoc">
221 11 ruschi
 
222
<p>setup the context to be used later. </p>
223 21 ruschi
<h1><a class="anchor" id="functions"></a>
224
functions</h1>
225 11 ruschi
<p>initializes the pointers to the correct memory locations </p>
226 21 ruschi
<dl class="params"><dt>Parameters</dt><dd>
227
  <table class="params">
228
    <tr><td class="paramname">context</td><td>: struct grouping address information </td></tr>
229 11 ruschi
  </table>
230
  </dd>
231
</dl>
232
 
233 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00053">53</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
234
<div class="fragment"><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;                                          {</div>
235
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    context-&gt;<a class="code" href="structavs__aes__handle.html#acb9eb474c8310afe4b082b79914f274c" title="pointer to key field in memory mapping ">key</a>    = (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*) <a class="code" href="avs__aes_8c.html#aac9313626ecf492e39b0f4add66e370d" title="memory offset for key DON&#39;T CHANGE! ">KEY_ADDR</a>;</div>
236
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    context-&gt;<a class="code" href="structavs__aes__handle.html#adae23dc33b7dec54b9da34f347256214" title="pointer to data field in memory mapping used for both decryption and encryption ">payload</a>= (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*) <a class="code" href="avs__aes_8c.html#a994843be3758f70aa91454a9ddfacb19" title="memory offset of payload ">DATA_ADDR</a>;</div>
237
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    context-&gt;<a class="code" href="structavs__aes__handle.html#ae0ad9e7bde68d07c018a299a0cda66af" title="pointer to result field in memory mapping ">result</a> = (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*) <a class="code" href="avs__aes_8c.html#a192250a419c33c4ff96948f692a44254" title="memory offset of result ">RESULT_ADDR</a>;</div>
238
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>    = (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*) <a class="code" href="avs__aes_8c.html#a30e81662ebaec8c1b8a283c42e88df36" title="memory offset for control word ">AESCTRLWD</a>;</div>
239
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>) = 0x00000000;</div>
240
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;}</div>
241
</div><!-- fragment -->
242 11 ruschi
</div>
243
</div>
244 21 ruschi
<a class="anchor" id="a827a78f73dd8fef9d2c9e72ad9bb4ea9"></a>
245 11 ruschi
<div class="memitem">
246
<div class="memproto">
247
      <table class="memname">
248
        <tr>
249
          <td class="memname">int avs_aes_isBusy </td>
250
          <td>(</td>
251 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
252
          <td class="paramname"><em>context</em>)</td><td></td>
253 11 ruschi
          <td></td>
254
        </tr>
255
      </table>
256 21 ruschi
</div><div class="memdoc">
257 11 ruschi
 
258
<p>checks the COMPLETED flag can be used for ugly polling the slave if IRQs are not used </p>
259 21 ruschi
<dl class="params"><dt>Parameters</dt><dd>
260
  <table class="params">
261
    <tr><td class="paramname">context</td><td>struct grouping address information </td></tr>
262 11 ruschi
  </table>
263
  </dd>
264
</dl>
265 21 ruschi
<dl class="section return"><dt>Returns</dt><dd>1 if still computing 0 if done. </dd></dl>
266 11 ruschi
 
267 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00104">104</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
268
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                                            {</div>
269
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mycontrol = *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>);   </div>
270
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordflow">return</span> mycontrol &amp; (<a class="code" href="group__control-register.html#ga36fab47015485191712a579a059a7c20" title="Start decryption bit. ">DECRYPT</a> | <a class="code" href="group__control-register.html#ga1cb0c60ca582db30ae87362ca43e8c19" title="start encryption bit ">ENCRYPT</a>);</div>
271
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;}</div>
272
</div><!-- fragment -->
273 11 ruschi
</div>
274
</div>
275 21 ruschi
<a class="anchor" id="af18edc2beecc3842a131423f55c7636a"></a>
276 11 ruschi
<div class="memitem">
277
<div class="memproto">
278
      <table class="memname">
279
        <tr>
280
          <td class="memname">void avs_aes_setKey </td>
281
          <td>(</td>
282 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
283
          <td class="paramname"><em>context</em>, </td>
284 11 ruschi
        </tr>
285
        <tr>
286
          <td class="paramkey"></td>
287
          <td></td>
288 21 ruschi
          <td class="paramtype">unsigned int *&#160;</td>
289
          <td class="paramname"><em>key</em>&#160;</td>
290 11 ruschi
        </tr>
291
        <tr>
292
          <td></td>
293
          <td>)</td>
294 21 ruschi
          <td></td><td></td>
295 11 ruschi
        </tr>
296
      </table>
297 21 ruschi
</div><div class="memdoc">
298 11 ruschi
 
299 21 ruschi
<p>Set a new key This call asserts the KEY_VALID flag and triggers the key-expansion in the core. </p>
300
<dl class="params"><dt>Parameters</dt><dd>
301
  <table class="params">
302
    <tr><td class="paramname">context</td><td>struct grouping address information </td></tr>
303
    <tr><td class="paramname">key</td><td>user key to load </td></tr>
304 11 ruschi
  </table>
305
  </dd>
306
</dl>
307
 
308
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00062">62</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
309 21 ruschi
<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;                                                               {</div>
310
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keywordtype">int</span> i=0;</div>
311
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>* target_ptr = (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>* )context-&gt;<a class="code" href="structavs__aes__handle.html#acb9eb474c8310afe4b082b79914f274c" title="pointer to key field in memory mapping ">key</a>;</div>
312
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="comment">/* Invalidate old key; */</span></div>
313
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>) &amp;= (~<a class="code" href="group__control-register.html#gaf27449032ce353aa329edd80cd2759a5" title="Signal load of new key valid. ">KEY_VALID</a>);</div>
314
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keyword">asm</span> __volatile(<span class="stringliteral">&quot;sync&quot;</span> :::);</div>
315
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordflow">for</span>(i=0; i&lt;<a class="code" href="avs__aes_8h.html#a40ac9fbe108b0ea74f57215528f13196" title="Keylength 256 Bit AES. ">KEYWORDS</a>; i++){</div>
316
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        *(target_ptr++) = *(key++);</div>
317
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    }</div>
318
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keyword">asm</span> __volatile(<span class="stringliteral">&quot;sync&quot;</span> :::);</div>
319
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="comment">/* validate key */</span></div>
320
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>) |= <a class="code" href="group__control-register.html#gaf27449032ce353aa329edd80cd2759a5" title="Signal load of new key valid. ">KEY_VALID</a>;</div>
321
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;}</div>
322
</div><!-- fragment -->
323 11 ruschi
</div>
324
</div>
325 21 ruschi
<a class="anchor" id="a55f078baaf019797ab6de7ea1a02475f"></a>
326 11 ruschi
<div class="memitem">
327
<div class="memproto">
328
      <table class="memname">
329
        <tr>
330
          <td class="memname">void avs_aes_setKeyvalid </td>
331
          <td>(</td>
332 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
333
          <td class="paramname"><em>context</em>)</td><td></td>
334 11 ruschi
          <td></td>
335
        </tr>
336
      </table>
337 21 ruschi
</div><div class="memdoc">
338 11 ruschi
 
339
<p>set the KEY_VALID flag in the control word used to signal the completion of writing the key ( <a class="el" href="avs__aes_8h.html#af18edc2beecc3842a131423f55c7636a">avs_aes_setKey</a> ) </p>
340 21 ruschi
<dl class="params"><dt>Parameters</dt><dd>
341
  <table class="params">
342
    <tr><td class="paramname">context</td><td>struct grouping address information </td></tr>
343 11 ruschi
  </table>
344
  </dd>
345
</dl>
346
 
347 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00086">86</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
348
<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                                                 {</div>
349
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    *(context-&gt;<a class="code" href="structavs__aes__handle.html#a15143869a0c8bfcacc8e1839e4e789c9" title="pointer to control word ">control</a>) |= <a class="code" href="group__control-register.html#gaf27449032ce353aa329edd80cd2759a5" title="Signal load of new key valid. ">KEY_VALID</a>;</div>
350
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keyword">asm</span> __volatile(<span class="stringliteral">&quot;sync&quot;</span> :::);</div>
351
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;}</div>
352
</div><!-- fragment -->
353 11 ruschi
</div>
354
</div>
355 21 ruschi
<a class="anchor" id="a22f9afae76f645e31b514b5aa4df2cc1"></a>
356 11 ruschi
<div class="memitem">
357
<div class="memproto">
358
      <table class="memname">
359
        <tr>
360
          <td class="memname">void avs_aes_setPayload </td>
361
          <td>(</td>
362 21 ruschi
          <td class="paramtype"><a class="el" href="structavs__aes__handle.html">avs_aes_handle</a> *&#160;</td>
363
          <td class="paramname"><em>context</em>, </td>
364 11 ruschi
        </tr>
365
        <tr>
366
          <td class="paramkey"></td>
367
          <td></td>
368 21 ruschi
          <td class="paramtype">unsigned int *&#160;</td>
369
          <td class="paramname"><em>payload</em>&#160;</td>
370 11 ruschi
        </tr>
371
        <tr>
372
          <td></td>
373
          <td>)</td>
374 21 ruschi
          <td></td><td></td>
375 11 ruschi
        </tr>
376
      </table>
377 21 ruschi
</div><div class="memdoc">
378 11 ruschi
 
379 21 ruschi
<p>loads payload for processing to the core basically memcopy... </p>
380
<dl class="params"><dt>Parameters</dt><dd>
381
  <table class="params">
382
    <tr><td class="paramname">context</td><td>struct grouping address information </td></tr>
383
    <tr><td class="paramname">payload</td><td>user data to be processed </td></tr>
384 11 ruschi
  </table>
385
  </dd>
386
</dl>
387
 
388 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00077">77</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
389
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;                                                                       {</div>
390
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordtype">int</span> i=0;</div>
391
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>* target_ptr = (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>* )context-&gt;<a class="code" href="structavs__aes__handle.html#adae23dc33b7dec54b9da34f347256214" title="pointer to data field in memory mapping used for both decryption and encryption ">payload</a>;</div>
392
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keywordflow">for</span>(i=0; i&lt;4; i++){</div>
393
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        *(target_ptr++) = *(payload++);</div>
394
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    }   </div>
395
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;}</div>
396
</div><!-- fragment -->
397
</div>
398
</div>
399
<h2 class="groupheader">Variable Documentation</h2>
400
<a class="anchor" id="a30e81662ebaec8c1b8a283c42e88df36"></a>
401
<div class="memitem">
402
<div class="memproto">
403
      <table class="memname">
404
        <tr>
405
          <td class="memname">const uint32_t AESCTRLWD = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a>+0x18</td>
406
        </tr>
407
      </table>
408
</div><div class="memdoc">
409 11 ruschi
 
410 21 ruschi
<p>memory offset for control word </p>
411 11 ruschi
 
412 21 ruschi
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00050">50</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
413
 
414 11 ruschi
</div>
415
</div>
416 21 ruschi
<a class="anchor" id="a994843be3758f70aa91454a9ddfacb19"></a>
417
<div class="memitem">
418
<div class="memproto">
419
      <table class="memname">
420
        <tr>
421
          <td class="memname">const uint32_t DATA_ADDR = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a>+0x08</td>
422
        </tr>
423
      </table>
424
</div><div class="memdoc">
425
 
426
<p>memory offset of payload </p>
427
 
428
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00046">46</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
429
 
430 11 ruschi
</div>
431 21 ruschi
</div>
432
<a class="anchor" id="aac9313626ecf492e39b0f4add66e370d"></a>
433
<div class="memitem">
434
<div class="memproto">
435
      <table class="memname">
436
        <tr>
437
          <td class="memname">const uint32_t KEY_ADDR = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a></td>
438
        </tr>
439
      </table>
440
</div><div class="memdoc">
441
 
442
<p>memory offset for key DON'T CHANGE! </p>
443
 
444
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00044">44</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
445
 
446
</div>
447
</div>
448
<a class="anchor" id="a192250a419c33c4ff96948f692a44254"></a>
449
<div class="memitem">
450
<div class="memproto">
451
      <table class="memname">
452
        <tr>
453
          <td class="memname">const uint32_t RESULT_ADDR = <a class="el" href="avs__aes_8h.html#aa93e16f5419a2515d4ebbd5368e9a8c5">AES_BASEADDR</a>+0x10</td>
454
        </tr>
455
      </table>
456
</div><div class="memdoc">
457
 
458
<p>memory offset of result </p>
459
 
460
<p>Definition at line <a class="el" href="avs__aes_8c_source.html#l00048">48</a> of file <a class="el" href="avs__aes_8c_source.html">avs_aes.c</a>.</p>
461
 
462
</div>
463
</div>
464
</div><!-- contents -->
465
</div><!-- doc-content -->
466
<!-- start footer part -->
467
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
468
  <ul>
469
    <li class="navelem"><a class="el" href="avs__aes_8c.html">avs_aes.c</a></li>
470
    <li class="footer">Generated on Sat Apr 19 2014 17:55:55 for AES Avalon Slave (avs_aes) by
471
    <a href="http://www.doxygen.org/index.html">
472
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.4 </li>
473
  </ul>
474
</div>
475 11 ruschi
</body>
476
</html>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.