summaryrefslogtreecommitdiffstats
path: root/target-sparc
diff options
context:
space:
mode:
authorblueswir12008-08-06 21:50:16 +0200
committerblueswir12008-08-06 21:50:16 +0200
commit06057e6f6ce06b92d552a851a91f9d6ca250970c (patch)
tree224a8fd829272dd356f40a122d108fca7954c996 /target-sparc
parentFix I/D MMU tag reads (diff)
downloadqemu-06057e6f6ce06b92d552a851a91f9d6ca250970c.tar.gz
qemu-06057e6f6ce06b92d552a851a91f9d6ca250970c.tar.xz
qemu-06057e6f6ce06b92d552a851a91f9d6ca250970c.zip
Fix faligndata (Vince Weaver)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4992 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/op_helper.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index f8f94ac39a..3cc4f501cc 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -234,7 +234,10 @@ void helper_faligndata(void)
uint64_t tmp;
tmp = (*((uint64_t *)&DT0)) << ((env->gsr & 7) * 8);
- tmp |= (*((uint64_t *)&DT1)) >> (64 - (env->gsr & 7) * 8);
+ /* on many architectures a shift of 64 does nothing */
+ if ((env->gsr & 7) != 0) {
+ tmp |= (*((uint64_t *)&DT1)) >> (64 - (env->gsr & 7) * 8);
+ }
*((uint64_t *)&DT0) = tmp;
}