qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]