On Wed, 8 Feb 2006, Blue Swirl wrote:
Hi,
The last problem means that gcc decided to make a leaf function, where
save/restore is not needed. The register use is not standard, but that
shouldn't matter, because the op functions do not take arguments or return a
value.
Standard code, parsed by dyngen:
save
do stuff
ret
restore
leaf code:
do stuff
retl
nop
The solution should be to add code to dyngen.c to detect leaf functions which
suppresses the save/restore checks.
Thanks for your feedback. I've added additional check to dyngen.c, which
checks that function has either save; in the beginning and ret; restore;
in the end, or ends in retl; nop;. That allowed me to get past the arm
target build failure. Now it fails (during dyngen check) on ppc target,
the culprit is the following function:
000033d8 <op_stfs_raw>:
33d8: 9c 03 bf 90 add %sp, -112, %sp
33dc: d1 19 a0 f8 ldd [ %g6 + 0xf8 ], %f8
33e0: 91 a0 18 c8 fdtos %f8, %f8
33e4: d1 23 a0 64 st %f8, [ %sp + 0x64 ]
33e8: c8 03 a0 64 ld [ %sp + 0x64 ], %g4
33ec: 99 39 20 18 sra %g4, 0x18, %o4
33f0: 97 39 20 10 sra %g4, 0x10, %o3
33f4: 95 39 20 08 sra %g4, 8, %o2
33f8: c8 28 60 03 stb %g4, [ %g1 + 3 ]
33fc: d8 28 40 00 stb %o4, [ %g1 ]
3400: d6 28 60 01 stb %o3, [ %g1 + 1 ]
3404: d4 28 60 02 stb %o2, [ %g1 + 2 ]
3408: 81 c3 e0 08 retl
340c: 9c 23 bf 90 sub %sp, -112, %sp
What should dyngen do about a function like that?
Best regards,
Jurij Smakov [EMAIL PROTECTED]
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel