<div dir="ltr">Hi Tim,<div><br></div><div>    declaring it as int is misidentifying it under 64 bits.  I&#39;d declare it as <span class="Apple-style-span" style="border-collapse:collapse;font-size:14px;color:rgb(0,0,0)">__aeabi_idivmod(long dividend, long divisor).</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 13, 2015 at 4:53 PM,  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
tim Rowledge uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-tpr.1414.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-tpr.1414.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-tpr.1414<br>
Author: tpr<br>
Time: 13 July 2015, 4:52:46.377 pm<br>
UUID: cc8ee57d-fbf9-409f-93da-6a9d5442e435<br>
Ancestors: VMMaker.oscog-tpr.1413<br>
<br>
Final (please) change for ARM __aeabit_idivmod support.<br>
Benchmarks suggest a useful improvement as a result. Scratch PacMan on a Raspberry Pi2 runs at 30fps or so.<br>
<br>
=============== Diff against VMMaker.oscog-tpr.1413 ===============<br>
<br>
Item was changed:<br>
  ----- Method: CogARMCompiler&gt;&gt;aeabiDivModFunctionAddr (in category &#39;ARM convenience instructions&#39;) -----<br>
  aeabiDivModFunctionAddr<br>
+ &quot;return the address of the __aeabi_idivmod() call provided by the ARM low level libs to do an integer divide that returns the quo in R0 and rem in R1.<br>
+ A word on the somewhat strange usage of idivmod herein; we need a declaration for the _aeabi_idivmod helper function, despite the fact that in a simple C program test, you don&#39;t. To get that declaration we need a variable to hang it off and said variable needs to be referred to in order to not get culled. Thus the temp var idivmod, the declaration for it that has nothing to do with it and the odd usage in the inSmalltalk: block.&quot;<br>
+       | idivmod |<br>
- &quot;return the address of the __aeabi_idivmod() call provided by the ARM low level libs to do an integer divide that returns the quo in R0 and rem in R1&quot;<br>
        &lt;returnTypeC: #usqInt&gt;<br>
+       &lt;var: #idivmod declareC: &#39;extern void __aeabi_idivmod(int dividend, int divisor)&#39;&gt;<br>
+<br>
+       ^self cCode: &#39;(usqInt)__aeabi_idivmod&#39; inSmalltalk:[idivmod := #aeabiDiv:Mod:]!<br>
-       ^self cCode: &#39;(usqInt)__aeabi_idivmod&#39; inSmalltalk:[#aeabiDiv:Mod:]!<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">best,<div>Eliot</div></div>
</div>