tcg/ppc: Fix signed versions of brcond2
authormalc <av1474@comtv.ru>
Sat, 17 Apr 2010 03:58:08 +0000 (07:58 +0400)
committermalc <av1474@comtv.ru>
Sat, 17 Apr 2010 04:00:32 +0000 (08:00 +0400)
Thanks to: Alexander Graff, Thomas Gleixner and Andreas Faerber.

Signed-off-by: malc <av1474@comtv.ru>
tcg/ppc/tcg-target.c

index 6f044d6..d559214 100644 (file)
@@ -1107,7 +1107,8 @@ static void tcg_out_cr7eq_from_cond (TCGContext *s, const TCGArg *args,
         op = (b->bit1 != b->bit2) ? CRANDC : CRAND;
         tcg_out_cmp (s, b->cond2, args[1], args[3], const_args[3], 5);
         tcg_out_cmp (s, TCG_COND_EQ, args[1], args[3], const_args[3], 6);
-        tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 7);
+        tcg_out_cmp (s, tcg_unsigned_cond (cond), args[0], args[2],
+                     const_args[2], 7);
         tcg_out32 (s, op | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, b->bit2));
         tcg_out32 (s, CROR | BT (7, CR_EQ) | BA (5, b->bit1) | BB (7, CR_EQ));
         break;