Fix udiv and sdiv on Sparc64 (Vince Weaver)
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 25 Aug 2008 19:43:53 +0000 (19:43 +0000)
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 25 Aug 2008 19:43:53 +0000 (19:43 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5085 c046a42c-6fe2-441c-8c8c-71466251a162

target-sparc/op_helper.c

index 03fe53f..8c2551f 100644 (file)
@@ -2288,7 +2288,7 @@ target_ulong helper_udiv(target_ulong a, target_ulong b)
     uint64_t x0;
     uint32_t x1;
 
-    x0 = a | ((uint64_t) (env->y) << 32);
+    x0 = (a & 0xffffffff) | ((int64_t) (env->y) << 32);
     x1 = b;
 
     if (x1 == 0) {
@@ -2310,7 +2310,7 @@ target_ulong helper_sdiv(target_ulong a, target_ulong b)
     int64_t x0;
     int32_t x1;
 
-    x0 = a | ((int64_t) (env->y) << 32);
+    x0 = (a & 0xffffffff) | ((int64_t) (env->y) << 32);
     x1 = b;
 
     if (x1 == 0) {