sparc64 syscall fix (Blue Swirl)
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 23 Oct 2006 21:31:01 +0000 (21:31 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 23 Oct 2006 21:31:01 +0000 (21:31 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2199 c046a42c-6fe2-441c-8c8c-71466251a162

linux-user/main.c

index 53bf1bb..38e94d2 100644 (file)
@@ -559,10 +559,18 @@ void cpu_loop (CPUSPARCState *env)
                               env->regwptr[2], env->regwptr[3], 
                               env->regwptr[4], env->regwptr[5]);
             if ((unsigned int)ret >= (unsigned int)(-515)) {
+#ifdef TARGET_SPARC64
+                env->xcc |= PSR_CARRY;
+#else
                 env->psr |= PSR_CARRY;
+#endif
                 ret = -ret;
             } else {
+#ifdef TARGET_SPARC64
+                env->xcc &= ~PSR_CARRY;
+#else
                 env->psr &= ~PSR_CARRY;
+#endif
             }
             env->regwptr[0] = ret;
             /* next instruction */