<div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Mar 23, 2019 at 9:37 PM Florian Klämpfl <<a href="mailto:florian@freepascal.org">florian@freepascal.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am 23.03.2019 um 11:52 schrieb Dimitrios Chr. Ioannidis via fpc-devel:<br>
> Hi,<br>
> <br>
>   I'm using the heapmgr unit and, for the atmega328p, AFAIU the default heap size is 80 bytes. Cause it's too small for<br>
> my needs, I changed to 512 bytes ( -Ch512 ). But now I'm worrying for the stack and heap collision.<br>
> <br>
>   Can anybody know any resources, docs regarding FPC stack and heap management for the AVR platform ? Any hints, tools ?<br>
<br>
The sources ;) For the embedded targets, the stack grows downward from the highest ram address. So set a suitable stack<br>
size so you do not exceed total memory, test with stack checking on, then you should be fine.</blockquote><div><br></div><div>Out of interest I tried to see how stack checking worked.  One of the puzzles is that function Sptr is empty, so it will return whatever values happen to be in r24-r25. Is this correct behaviour?  I would have thought (based on how Sptr is implemented for other architectures) that it should return the value of the SP io register, something like this:</div><div>function Sptr : pointer; assembler; nostackframe;<br>asm<br>  in r24, 0x3d // SPL<br>  in r25, 0x3e // SPH<br>end;<br></div><div> Any thoughts?<br></div></div></div></div>