[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [SPARC] Branch condition problems
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [SPARC] Branch condition problems |
Date: |
Wed, 21 Mar 2007 13:49:24 +0100 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
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
`. `' address@hidden | address@hidden
`- people.debian.org/~aurel32 | www.aurel32.net
- [Qemu-devel] [SPARC] Branch condition problems,
Aurelien Jarno <=