[Top][All Lists]
[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