<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>CodeWarrior for QorIQのトピックColdfire: Parameter passing</title>
    <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138852#M1007</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to know more about the parameter passing method (Standard / Compact / Register) in the ColdFire processor setup (CW 6.3).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Using compact a reference code is 59k in size.&lt;BR /&gt;Using Register it is about 53k in size.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However the code doesn't run reliably when register passing is activated. (Eg. FTP server becomes unreliable - transfers often hang, which never happens with compact].&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any ideas what could make a program less reliable? Where can the user of register passing possibly cause problems?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mark Butcher&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.mjbc.ch%2F" rel="nofollow" target="_blank"&gt;www.mjbc.ch&lt;/A&gt; / &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.uTasker.com%2F" rel="nofollow" target="_blank"&gt;www.uTasker.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Message Edited by CrasyCat on &lt;SPAN class="date_text"&gt;2007-04-13&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;11:33 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 03 Dec 2006 12:15:12 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2006-12-03T12:15:12Z</dc:date>
    <item>
      <title>Coldfire: Parameter passing</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138852#M1007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to know more about the parameter passing method (Standard / Compact / Register) in the ColdFire processor setup (CW 6.3).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Using compact a reference code is 59k in size.&lt;BR /&gt;Using Register it is about 53k in size.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However the code doesn't run reliably when register passing is activated. (Eg. FTP server becomes unreliable - transfers often hang, which never happens with compact].&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any ideas what could make a program less reliable? Where can the user of register passing possibly cause problems?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mark Butcher&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.mjbc.ch%2F" rel="nofollow" target="_blank"&gt;www.mjbc.ch&lt;/A&gt; / &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.uTasker.com%2F" rel="nofollow" target="_blank"&gt;www.uTasker.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Message Edited by CrasyCat on &lt;SPAN class="date_text"&gt;2007-04-13&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;11:33 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 03 Dec 2006 12:15:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138852#M1007</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2006-12-03T12:15:12Z</dc:date>
    </item>
    <item>
      <title>Re: Parameter passing</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138853#M1008</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am not anm expert in Coldfire code generation, but I will try to find more info on the different parameter passing schemes.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Around what can make the system unstable after you select register parameter passing rules, I can think about the following:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1- Did you link your code with the appropriate library files? If you use register parameter passing scheme, you should link against library files build with the same scheme.&lt;/DIV&gt;&lt;DIV&gt;Please refer to the ColdFire_Build_Tools_Reference.pdf chapter "ColdFire Runtime Libraries", section "Runtime Libraries" for more info about which library to take.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2-&amp;nbsp;Which registers are you saving/restoring in&amp;nbsp;interrupt functions?&amp;nbsp; Compiler should save registers used within the function itself, but if you are calling functions within interrupt you may get into trouble.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I come back to you as soon as I get info on the&amp;nbsp;different&amp;nbsp;parameter passing scheme.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;CrasyCat&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Dec 2006 20:21:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138853#M1008</guid>
      <dc:creator>CrasyCat</dc:creator>
      <dc:date>2006-12-04T20:21:13Z</dc:date>
    </item>
    <item>
      <title>Re: Parameter passing</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138854#M1009</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi CrasyCat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the tips, which we will look into in detail.&lt;BR /&gt;It will be good if we can find a way to successfull yuse this option because it allows around 10% code size reduction and possibly/probably useful speed improvement to go with it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code size of ColdFire programs is rather larger that ARM in thumb mode and this would be a useful improvement to close the gap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark Butcher&lt;BR /&gt;&lt;A href="http://www.mjbc.ch/"&gt;www.mjbc.ch&lt;/A&gt; / &lt;A href="http://www.uTasker.com/"&gt;www.uTasker.com&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Dec 2006 20:28:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138854#M1009</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2006-12-04T20:28:11Z</dc:date>
    </item>
    <item>
      <title>Re: Parameter passing</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138855#M1010</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello&lt;/DIV&gt;&lt;DIV&gt;Only description I found about that is the one from the Targeting manual:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Compact:&amp;nbsp;&amp;nbsp;Passes on even-sized boundary for parameters smaller&amp;nbsp;&amp;nbsp;than int (2 for short and char).&lt;BR /&gt;Standard:&amp;nbsp; Like compact, but always padded to 4 bytes.&lt;BR /&gt;Register:&amp;nbsp;&amp;nbsp; Passes in scratch registers D0-D2 for integers, A0-A1 for pointers and fp0-fp1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when FPU codegen is selected; this can speed up programs that have many small functions.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;CrasyCat&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 Dec 2006 20:50:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Coldfire-Parameter-passing/m-p/138855#M1010</guid>
      <dc:creator>CrasyCat</dc:creator>
      <dc:date>2006-12-05T20:50:27Z</dc:date>
    </item>
  </channel>
</rss>

