diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index 9409052f0d..5eebd83888 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -446,13 +446,11 @@ void helper_st_asi(int asi, int size)
                 DPRINTF_MXCC("%08x: unimplemented access size: %d\n", T0, size);
             break;
         case 0x01c00e00: /* MXCC error register  */
+            // writing a 1 bit clears the error
             if (size == 8)
-                env->mxccregs[6] = ((uint64_t)T1 << 32) | T2;
+                env->mxccregs[6] &= ~(((uint64_t)T1 << 32) | T2);
             else
                 DPRINTF_MXCC("%08x: unimplemented access size: %d\n", T0, size);
-            if (env->mxccregs[6] == 0xffffffffffffffffULL) {
-                // this is probably a reset
-            }
             break;
         case 0x01c00f00: /* MBus port address register */
             if (size == 8)