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