If you set the function placement to the initialized data section with 

extern void foobar (void) __attribute__((section (".data")));

the compiler startup code will move it for you and all you have to do
is call it by name just as you would any other function.

Regards
-Bill Knight
R O SoftWare



On Thu, 13 Jan 2005 13:22:47 -0700, Rick Jenkins wrote:

>Sometimes it's necessary to move code into RAM for execution, for instance 
>when reprogramming the main flash. It isn't too hard to do this in C, by 
>compiling all the code to be moved into a special section within .text, then 
>copying the whole section to RAM. Of course the code moved has to be 
>position-independent. 

>The global compiler option -fpic simply accesses all constant addresses via a 
>table in RAM. This table can be quite large, and may be overwritten when the 
>code is moved. Using it is pretty clumsy.

>If one avoids static variables, most of the code is position-independent 
>anyway. The difficulty lies in function calls. MSP430-gcc compiles these 
>with an absolute address, allowing calls to any place in memory. That's 
>normally exactly what one wants, but when the code is moved the calls still 
>address flash.

>It would be good to write a macro to use the PC-relative 'symbolic" 
>addressing mode, something along the lines of:

>#define PI_CALL(f) asm("call %0"::"?"(f))

>but there seems to be no constraint which generates the right addressing 
>mode. Am I missing something really obvious here?
>-- 
>Rick Jenkins <r...@hartmantech.com>
>Hartman Technica           http://www.hartmantech.com 
>Phone +1 (403) 230-1987 voice & fax
>221 35 Avenue. N.E., Calgary, Alberta, Canada T2E 2K5


>-------------------------------------------------------
>The SF.Net email is sponsored by: Beat the post-holiday blues
>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
>_______________________________________________
>Mspgcc-users mailing list
>Mspgcc-users@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/mspgcc-users




Reply via email to