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] |
Other format: | [Raw text] |
Hello again, I am getting much closer to a solution. I have one problem remaining, which is that the wrong code is being generated to handle double return values. I have a working case using the self-hosted gcc on the netwinder I have used to make the following comparison. Here is the test code: val = 10.0; printf("val = %g\n", val); result = log(val); Here is the assembler code the netwinder generates: bl log stfd f0, [sp, #-8]! ldmfd sp!, {r3, r4} str r3, [fp, #-32] str r4, [fp, #-28] This code works correctly on the netwinder and produces the desired results. Next, here is the code that my "broken" arm-elf-linux-as generates (hosted on x86linux): bl log mov r2, r1 mov r1, r0 mvn r3, #15 sub r0, fp, #16 add r3, r0, r3 So it appears that the arm-elf-linux-as is generating code that returns the double return value from the wrong place. Presumably, the arm-elf-linux-as cross-compiler/assembler should generate the same assembler code as the first snippet, right?? What should my configuration settings be for gcc/gas in my cross-compiler build be to get this correct? Please advise - I'm now VERY close... I think ;-) TIA, craig vanderborgh voxware incorporated ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |