qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: MacOSX CVS build broken


From: Paul Brook
Subject: Re: [Qemu-devel] Re: MacOSX CVS build broken
Date: Fri, 21 Jan 2005 23:08:37 +0000
User-agent: KMail/1.7.1

>     d9d8:       4d 81 00 20     bgtlr
>     d9dc:       4b ff ff cc     b       d9a8 <op_pmaddwd_mmx+0x24>
>
> this really don't end with blr, but if I have understood correctly
> what I have found about bgtlr, it should do what blr do with some
> condition on r0.
> May be dyngen should verify on 4bffffcc too and not only 4e800020.

No, this is not correct.

The reason qemu expects the code sequence to end with blr is because it 
assumes the routine only has a single return statement at the end of the 
function. It then removes that return instructions to chain multiple ops 
together into a single block.

You'll notice that the preceding instruction is bgtlr, so simply accepting the 
"b" would break this assumtion.

The correct solution is to add FORCE_RET() to the end of the end of op_pmaddwd 
in ops_sse.h.

The same probably applies to many of the other routines in that file.

Paul




reply via email to

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