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] |
if using your test case, here is my foo.s main: @ args = 0, pretend = 0, frame = 4 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp stmfd sp!, {fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #4 ldr r3, .L2 @ float str r3, [fp, #-16] @ float ldr r0, [fp, #-16] @ float bl foo mov r3, #0 mov r0, r3 ldmea fp, {fp, sp, pc} seems no problem? >> add <addsub@eyou.com> wrote: >> > I'm building a arm-linux-gcc toolchain with soft-vfp support by >> > crosstool-0.27(Thanks to Dan). But generated code cannot execute >> > "printf("%f",1.00)" well, it will output 0.00000. >> > >> > Then I found gcc doesn't produce right code, it uses wrong registers sequence >> > to pass float argument to function() >> >> Richard Earnshaw wrote: >> > To the best of my knowledge the only configuration of a released version >> > of gcc that supports soft-vfp is arm-netbsdelf. >> >> He's using a patch that adds that, I think. > >Ah! OK, lets take a closer look at the test case.... Hmm, it's broken: > >It passes a float to a function that's declared without a prototype, and >it returns a value from a void function... > >Let's fix up the problems... > > >$ cat foo.c >float foo(float); >int main() >{ > float i=1.0; > foo(i); > return 0; >} >float foo( float i ) >{ > return i; >} >$ cat foo.s >main: > @ args = 0, pretend = 0, frame = 4 > @ frame_needed = 0, uses_anonymous_args = 0 > str lr, [sp, #-4]! > sub sp, sp, #4 > ldr r3, .L2 @ float > str r3, [sp, #0] @ float > ldr r0, [sp, #0] @ float > bl foo > mov r3, #0 > mov r0, r3 > add sp, sp, #4 > ldmfd sp!, {pc} > > >Yep, that looks right to me. > >R. > > >------ >Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ >Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com > > --http://www.eyou.com --Îȶ¨¿É¿¿µÄµç×ÓÐÅÏä ÓïÒôÓʼþ Òƶ¯ÊéÇ© ÈÕÀú·þÎñ ÍøÂç´æ´¢...ÒÚÓÊδ¾¡ --http://vip.eyou.com --¿ì¿ìµÇ¼ÒÚÓÊVIPÐÅÏä ×¢²áÄúÖÐÒâµÄÓû§Ãû ------ 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] |