[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: Some patches for qemu on sparc
From: |
Jurij Smakov |
Subject: |
[Qemu-devel] Re: Some patches for qemu on sparc |
Date: |
Fri, 10 Feb 2006 20:23:53 -0800 (PST) |
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 address@hidden
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
- [Qemu-devel] Re: Some patches for qemu on sparc,
Jurij Smakov <=