Hi all, I have noticed that the branches have some problem on the sparc target in very rare conditions. This happens when a store double instruction (std) is used in the delay slot, as in the following test:
tst %g0 bne 9b5d8 std %o2, [ %o1 ] Inserting a nop between bne and std "fixes" the problem. tst %g0 sets the zero flag, so that the branch should never be taked. It happens however that it is sometimes taken. This seems to be due to the fact that T2 holds the result of the condition, and std replace T2 with another value. flush_T2() is called before altering T2, but it does not seems to work. I am currently stuck at that point, I hope somebody who has better understanding of the branch code on Sparc could fix that. Thanks, Aurelien -- .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [EMAIL PROTECTED] | [EMAIL PROTECTED] `- people.debian.org/~aurel32 | www.aurel32.net _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel