ret = mul + r2;
ovf = (ret ^ mul) & ~(mul ^ r2);
+ t1 = ret >> 32;
+ env->PSW_USB_AV = t1 ^ t1 * 2u;
+ env->PSW_USB_SAV |= env->PSW_USB_AV;
+
if ((int64_t)ovf < 0) {
env->PSW_USB_V = (1 << 31);
env->PSW_USB_SV = (1 << 31);
} else {
env->PSW_USB_V = 0;
}
- t1 = ret >> 32;
- env->PSW_USB_AV = t1 ^ t1 * 2u;
- env->PSW_USB_SAV |= env->PSW_USB_AV;
return ret;
}
mul = t1 * t3;
ret = mul + r2;
+ t1 = ret >> 32;
+ env->PSW_USB_AV = t1 ^ t1 * 2u;
+ env->PSW_USB_SAV |= env->PSW_USB_AV;
+
if (ret < r2) {
env->PSW_USB_V = (1 << 31);
env->PSW_USB_SV = (1 << 31);
} else {
env->PSW_USB_V = 0;
}
- t1 = ret >> 32;
- env->PSW_USB_AV = t1 ^ t1 * 2u;
- env->PSW_USB_SAV |= env->PSW_USB_AV;
return ret;
}
ret = r2 - mul;
ovf = (ret ^ r2) & (mul ^ r2);
+ t1 = ret >> 32;
+ env->PSW_USB_AV = t1 ^ t1 * 2u;
+ env->PSW_USB_SAV |= env->PSW_USB_AV;
+
if ((int64_t)ovf < 0) {
env->PSW_USB_V = (1 << 31);
env->PSW_USB_SV = (1 << 31);
} else {
env->PSW_USB_V = 0;
}
- t1 = ret >> 32;
- env->PSW_USB_AV = t1 ^ t1 * 2u;
- env->PSW_USB_SAV |= env->PSW_USB_AV;
return ret;
}
mul = t1 * t3;
ret = r2 - mul;
+ t1 = ret >> 32;
+ env->PSW_USB_AV = t1 ^ t1 * 2u;
+ env->PSW_USB_SAV |= env->PSW_USB_AV;
+
if (ret > r2) {
env->PSW_USB_V = (1 << 31);
env->PSW_USB_SV = (1 << 31);
} else {
env->PSW_USB_V = 0;
}
- t1 = ret >> 32;
- env->PSW_USB_AV = t1 ^ t1 * 2u;
- env->PSW_USB_SAV |= env->PSW_USB_AV;
return ret;
}