Fix faligndata (Vince Weaver)
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 6 Aug 2008 19:50:16 +0000 (19:50 +0000)
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 6 Aug 2008 19:50:16 +0000 (19:50 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4992 c046a42c-6fe2-441c-8c8c-71466251a162

target-sparc/op_helper.c

index f8f94ac..3cc4f50 100644 (file)
@@ -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;
 }