This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

long calls in thumb mode


Hi there,
I have an application running on an embedded arm7tdmi and I've got a 
problem compiling code using gcc 3.0 for thumb mode operation and 
supporting long calls to functions.

In order to improve the execution speed I have recently relocated some 
of the executable into RAM. This has meant that I have to use the 
-mcalls-long switch on gcc because my RAM area is some 700 MB above the 
ROM area in my address map.

I have successfully compiled and linked the code running in arm mode. 
However, when I try to compile and link the same code for the arm7 in 
thumb mode, I get the following compiler error:


threadtest.cxx: In function `int C_Entry()':
threadtest.cxx:72: Unrecognizable insn:
(call_insn 14 351 19 (parallel[
           (call (mem:SI (symbol_ref:SI ("^_Z10staticInitv")) 0)
               (const_int 0 [0x0]))
           (use (const_int 1 [0x1]))
           (clobber (reg:SI 14 lr))
       ] ) -1 (nil)
   (expr_list:REG_UNUSED (reg:SI 14 lr)
       (expr_list:REG_EH_REGION (const_int 0 [0x0])
           (nil)))
   (nil))
threadtest.cxx:72: Internal compiler error in extract_insn, at recog.c:2210


Previous builds, targeting all the code into ROM were successful in  
both Arm and Thumb modes, so I suspect that there's something strange 
happening with the combined -mcalls-long and -mthumb switches to the 
compiler.
Has anyone out there experienced anything like this before ?
Am I doing something obviously wrong ?
Many thanks,
Andy


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]