<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">This version worked,<br>
      <br>
      thank you for your help!<br>
      <br>
      Michael<br>
      <br>
      Am 02.06.13 23:20, schrieb Jeppe Græsdal Johansen:<br>
    </div>
    <blockquote cite="mid:51ABB71B.8050608@j-software.dk" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix">Den 02-06-2013 23:15, Michael Ring
        skrev:<br>
      </div>
      <blockquote cite="mid:51ABB5F2.6080305@michael-ring.org"
        type="cite">
        <meta content="text/html; charset=ISO-8859-1"
          http-equiv="Content-Type">
        <div class="moz-cite-prefix">Unfortunately that does not seem to
          work (or I use it wrong):<br>
          <br>
          This procedure:<br>
          <br>
          procedure _general_exception_handler; assembler; nostackframe;
          public name '_GENERAL_EXCEPTION_HANDLER';<br>
          asm<br>
            .section "reset"<br>
            sdbbp 0;<br>
            .Lloopb:<br>
             b .Lloopb<br>
          end;<br>
          <br>
          translates to:<br>
          <br>
          .section .text.n_pic32mx1xxfxxxc_$$__general_exception_handler<br>
                  .balign 4<br>
          .globl  PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER<br>
                  .type  
          PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER,@function<br>
          PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER:<br>
          .globl  _GENERAL_EXCEPTION_HANDLER<br>
                  .type   _GENERAL_EXCEPTION_HANDLER,@function<br>
          _GENERAL_EXCEPTION_HANDLER:<br>
                  .ent    PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER<br>
          <br>
          .section reset<br>
                  sdbbp   0<br>
          .Lj11:<br>
                  b       .Lj11<br>
                  jr      $ra<br>
                  nop<br>
                  .set    macro<br>
                  .set    reorder<br>
                  .end    PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER<br>
          .Lt3:<br>
          .Le2:<br>
                  .size   PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER,
          .Le2 - PIC32MX1XXFXXXC_$$__GENERAL_EXCEPTION_HANDLER<br>
          .Ll8:<br>
          <br>
          which creates an assembler error:<br>
          <br>
          /Users/ring/devel/fpc/rtl/units/mipsel-embedded/pic32mx1xxfxxxc.s:94:


          Error: operation combines symbols in different segments<br>
          <br>
          the error is from the .size line.<br>
          <br>
          <br>
          <br>
          Am 02.06.13 22:51, schrieb Jeppe Græsdal Johansen:<br>
        </div>
        <blockquote cite="mid:51ABB040.70305@j-software.dk" type="cite">
          <meta content="text/html; charset=ISO-8859-1"
            http-equiv="Content-Type">
          <div class="moz-cite-prefix">Den 02-06-2013 22:41, Michael
            Ring skrev:<br>
          </div>
          <blockquote cite="mid:51ABADE9.2010307@michael-ring.org"
            type="cite">
            <meta http-equiv="content-type" content="text/html;
              charset=ISO-8859-1">
            Hi, perhaps I am overseeing a simple solution for my
            problem:<br>
            <br>
            On the pic32 there are two flash areas, one at 0x9d000000
            for the main program and another at 0xbfc00000 that is
            called Boot Flash. On reset the program starts in the boot
            flash at the first address.<br>
            <br>
            I have written the startup code for the chips now but I need
            to distribute some procedures between the two memory areas,
            for obvious reasons I must have some code at address
            0xbfc00000 or the chip will not boot correctly ;-).<br>
            <br>
            My thought was now to tweak the linker script in the same
            way the original linker scripts of pic32 work:<br>
            <br>
            MEMORY<br>
            {<br>
              kseg0_program_mem    (rx)  : ORIGIN = 0x9D000000, LENGTH =
            0x80000<br>
              kseg1_boot_mem             : ORIGIN = 0xBFC00000, LENGTH =
            0x490<br>
            }<br>
            <br>
            SECTIONS<br>
            {<br>
              .reset _RESET_ADDR :<br>
              {<br>
                KEEP(*(.reset))<br>
                KEEP(*(.reset.startup))<br>
              } > kseg1_boot_mem<br>
            }<br>
            <br>
            In assembler I can then simply write:        <br>
             .section .reset,code and<br>
             .section .reset.startup,code<br>
            <br>
            and then the code, this will automagically end up in the
            kseg1_boot_mem, but this does not work with the inline
            assembler. Any ideas on how to do this the correct way? Is
            there something more intelligent than to write a plain
            assembler file?<br>
            <br>
            TnX,<br>
            <br>
            Michael<br>
          </blockquote>
          <br>
          You should be able to use<br>
          .section ".reset" </blockquote>
        <br>
      </blockquote>
      <br>
      Try<br>
      <br>
      procedure _general_exception_handler; assembler; nostackframe;
      public name '_GENERAL_EXCEPTION_HANDLER';<br>
      asm<br>
        .section "reset"<br>
        sdbbp 0;<br>
        .Lloopb:<br>
         b .Lloopb<br>
        .text<br>
      end;<br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
fpc-devel maillist  -  <a class="moz-txt-link-abbreviated" href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freepascal.org/mailman/listinfo/fpc-devel">http://lists.freepascal.org/mailman/listinfo/fpc-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>