<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>