<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">One day (In a far far away future) I
will understand how this whole compiler magic works ;-) <br>
<br>
Thank you very much for your fix, the LED's on my Board are not
(yet) blinking, but at least now the code seems to run fine in
gdb.<br>
<br>
Have a nice evening, will contact you when I have a little more
code working for nxp and stm chips...<br>
<br>
<br>
Michael<br>
<br>
Am 14.01.14 20:29, schrieb Jeppe Græsdal Johansen:<br>
</div>
<blockquote cite="mid:52D59000.6000100@j-software.dk" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">Should be fixed now. The cpupi code
estimated that it needed a copy of the TGPIO_Registers record on
the stack even though it was passed by reference :)<br>
<br>
Den 14-01-2014 09:47, Michael Ring skrev:<br>
</div>
<blockquote cite="mid:52D4F9BE.8010308@michael-ring.org"
type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">I have boiled down my problem to
this democode. The problem is in the begin line of set
Direction. The sp gets moved to 0x0fff8f94 which is
unititialized Space before RAM.<br>
<br>
The Reason is that the offset for the local var .Lj9 (.long
-32840) is plain wrong. It might be me doing something strange
(Setting the record to absolute) but this works fine on
armv7m.<br>
<br>
Jeppe, could you perhaps have a look, I compared with armv7m
code and there the whole handling of local vars seems to work
totally different. <br>
<br>
I am doing something unusual here, so another conclusion is
that my problem is most likely not related to the segfault
described, sorry for messing this thread up.<br>
<br>
Michael <br>
<br>
program hello;<br>
{$mode objfpc}<br>
{$modeswitch advancedrecords}<br>
<br>
type<br>
TGPIO_Bit = 0..11;<br>
TGPIO_Direction = (GPIO_Input, GPIO_Output);<br>
type<br>
TGPIO_Registers = record<br>
MASKED_ACCESS: array [0 .. 4095] of longword;<br>
RESERVED1 : array [0 .. 4095] of longword;<br>
DIR : longword;<br>
&IS : longword;<br>
IBE : longword;<br>
IEV : longword;<br>
IE : longword;<br>
RIS : longword;<br>
MIS : longword;<br>
IC : longword;<br>
procedure setDirection(bit : TGPIO_Bit; direction :
TGPIO_Direction);<br>
end;<br>
<br>
const<br>
LPC_AHB_BASE = $50000000;<br>
LPC_GPIO0_BASE = (LPC_AHB_BASE + $00000);<br>
<br>
var<br>
GPIO0 : TGPIO_Registers absolute(LPC_GPIO0_BASE);<br>
<br>
procedure TGPIO_Registers.setDirection(bit : TGPIO_Bit;
direction : TGPIO_Direction);<br>
begin<br>
DIR := DIR and (not (1 shl bit)) or (longWord(direction) shl
bit);<br>
end;<br>
<br>
var<br>
i : integer;<br>
begin<br>
i := 0;<br>
GPIO0.setDirection(i,GPIO_Output);<br>
end.<br>
<br>
<br>
Am 13.01.14 15:39, schrieb Michael Ring:<br>
</div>
<blockquote cite="mid:52D3FA8A.9040105@michael-ring.org"
type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">I guess not, when I remember
correctly this has already been repaired for armv6m. The
problem for me is that .Lj9 is defined as a negative number.
As a consequence r13 points to nirvana and <br>
<br>
str r0,[r13, #8] creates an Exception.<br>
<br>
<br>
# [87] begin<br>
push {r4,r14}<br>
ldr r4,.Lj9<br>
add r13,r13,r4<br>
# Var bit located at r13+0<br>
# Var direction located at r13+4<br>
# Var $self located at r13+8<br>
str r0,[r13, #8]<br>
strb r1,[r13]<br>
str r2,[r13, #4]<br>
.Ll2:<br>
<br>
.....<br>
<br>
.Lj9:<br>
.long -32840<br>
.Lj7:<br>
.long 32768<br>
.Lj10:<br>
.long 32840<br>
.Lt2:<br>
<br>
Am 13.01.14 15:15, schrieb Jeppe Græsdal Johansen:<br>
</div>
<blockquote
cite="mid:20140113142500.0910543B3@freepascal.dfmk.hu"
type="cite">Might be related to the mla/mls optimization
which somehow has been enabled even though it's still broken<br>
<br>
----- Reply message -----<br>
Fra: "Reinier Olislagers" <a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="mailto:reinierolislagers@gmail.com"><reinierolislagers@gmail.com></a><br>
Dato: man., jan. 13, 2014 13:44<br>
Emne: [fpc-pascal] ARM Linux crosscompiler: compiles but...
executable gives segmentation fault<br>
Til: <a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="mailto:fpc-pascal@lists.freepascal.org"><fpc-pascal@lists.freepascal.org></a><br>
<br>
On 13/01/2014 12:34, Michael Ring wrote:<br>
> I had a look at armv6m yesterday evening, parts of my
code run fine in<br>
> gdb, the code crashes in the init of a procedure when
trying to prepare<br>
> the access to contents of a set.<br>
> The address of the set seems to get calculated totally
wrong ending up<br>
> in a memory access at the end of the chip's address
range.<br>
> Not sure if this is related to your problem, I will try
to boil down the<br>
> example to a bare minimum to see where the generated
code differs<br>
> between armv7m and armv6m.<br>
<br>
Thanks a lot, Michael!<br>
<br>
_______________________________________________<br>
fpc-pascal maillist - <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a><br>
<a moz-do-not-send="true"
href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a><br>
<br>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
fpc-pascal maillist - <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
fpc-pascal maillist - <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
fpc-pascal maillist - <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
fpc-pascal maillist - <a class="moz-txt-link-abbreviated" href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a></pre>
</blockquote>
<br>
</body>
</html>