summaryrefslogtreecommitdiff
path: root/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DSPCore/Src/DSPIntCCUtil.cpp')
-rw-r--r--Source/Core/DSPCore/Src/DSPIntCCUtil.cpp18
1 files changed, 5 insertions, 13 deletions
diff --git a/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp b/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp
index c62aa25637..b5b2366196 100644
--- a/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp
+++ b/Source/Core/DSPCore/Src/DSPIntCCUtil.cpp
@@ -28,7 +28,6 @@ namespace DSPInterpreter {
void Update_SR_Register64(s64 _Value, bool carry, bool overflow)
{
- // TODO: recheck 0x1,0x2,even 0x80... implement...
g_dsp.r[DSP_REG_SR] &= ~SR_CMP_MASK;
// 0x01
@@ -37,10 +36,11 @@ void Update_SR_Register64(s64 _Value, bool carry, bool overflow)
g_dsp.r[DSP_REG_SR] |= SR_CARRY;
}
- // 0x02
+ // 0x02 and 0x80
if (overflow)
{
g_dsp.r[DSP_REG_SR] |= SR_OVERFLOW;
+ g_dsp.r[DSP_REG_SR] |= SR_OVERFLOW_SPECIAL;
}
// 0x04
@@ -66,16 +66,11 @@ void Update_SR_Register64(s64 _Value, bool carry, bool overflow)
{
g_dsp.r[DSP_REG_SR] |= SR_TOP2BITS;
}
-
- // 0x80
- {
- }
}
void Update_SR_Register16(s16 _Value, bool carry, bool overflow, bool overS32)
{
- // TODO: recheck 0x1,0x2,even 0x80... implement...
g_dsp.r[DSP_REG_SR] &= ~SR_CMP_MASK;
// 0x01
@@ -84,12 +79,13 @@ void Update_SR_Register16(s16 _Value, bool carry, bool overflow, bool overS32)
g_dsp.r[DSP_REG_SR] |= SR_CARRY;
}
- // 0x02
+ // 0x02 and 0x80
if (overflow)
{
g_dsp.r[DSP_REG_SR] |= SR_OVERFLOW;
+ g_dsp.r[DSP_REG_SR] |= SR_OVERFLOW_SPECIAL;
}
-
+
// 0x04
if (_Value == 0)
{
@@ -113,10 +109,6 @@ void Update_SR_Register16(s16 _Value, bool carry, bool overflow, bool overS32)
{
g_dsp.r[DSP_REG_SR] |= SR_TOP2BITS;
}
-
- // 0x80
- {
- }
}
void Update_SR_LZ(bool value) {