sync cpu code with fellow. fixes some instruction times and 64-bit division.

This commit is contained in:
Kelvin Sherlock 2017-12-14 08:23:17 -05:00
parent 26bd3f53b7
commit fb6d52a93d
2 changed files with 144 additions and 144 deletions

View File

@ -5231,7 +5231,7 @@ static void BTST_0110(ULO*opc_data)
ULO dstea = cpuEA02(opc_data[0]); ULO dstea = cpuEA02(opc_data[0]);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(10); cpuSetInstructionTime(8);
} }
static void BTST_0118(ULO*opc_data) static void BTST_0118(ULO*opc_data)
{ {
@ -5239,7 +5239,7 @@ static void BTST_0118(ULO*opc_data)
ULO dstea = cpuEA03(opc_data[0], 1); ULO dstea = cpuEA03(opc_data[0], 1);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(10); cpuSetInstructionTime(8);
} }
static void BTST_0120(ULO*opc_data) static void BTST_0120(ULO*opc_data)
{ {
@ -5247,7 +5247,7 @@ static void BTST_0120(ULO*opc_data)
ULO dstea = cpuEA04(opc_data[0], 1); ULO dstea = cpuEA04(opc_data[0], 1);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(12); cpuSetInstructionTime(10);
} }
static void BTST_0128(ULO*opc_data) static void BTST_0128(ULO*opc_data)
{ {
@ -5255,7 +5255,7 @@ static void BTST_0128(ULO*opc_data)
ULO dstea = cpuEA05(opc_data[0]); ULO dstea = cpuEA05(opc_data[0]);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(14); cpuSetInstructionTime(12);
} }
static void BTST_0130(ULO*opc_data) static void BTST_0130(ULO*opc_data)
{ {
@ -5263,7 +5263,7 @@ static void BTST_0130(ULO*opc_data)
ULO dstea = cpuEA06(opc_data[0]); ULO dstea = cpuEA06(opc_data[0]);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(16); cpuSetInstructionTime(14);
} }
static void BTST_0138(ULO*opc_data) static void BTST_0138(ULO*opc_data)
{ {
@ -5271,7 +5271,7 @@ static void BTST_0138(ULO*opc_data)
ULO dstea = cpuEA70(); ULO dstea = cpuEA70();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(14); cpuSetInstructionTime(12);
} }
static void BTST_0139(ULO*opc_data) static void BTST_0139(ULO*opc_data)
{ {
@ -5279,7 +5279,7 @@ static void BTST_0139(ULO*opc_data)
ULO dstea = cpuEA71(); ULO dstea = cpuEA71();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(18); cpuSetInstructionTime(16);
} }
static void BTST_013A(ULO*opc_data) static void BTST_013A(ULO*opc_data)
{ {
@ -5287,7 +5287,7 @@ static void BTST_013A(ULO*opc_data)
ULO dstea = cpuEA72(); ULO dstea = cpuEA72();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(14); cpuSetInstructionTime(12);
} }
static void BTST_013B(ULO*opc_data) static void BTST_013B(ULO*opc_data)
{ {
@ -5295,21 +5295,21 @@ static void BTST_013B(ULO*opc_data)
ULO dstea = cpuEA73(); ULO dstea = cpuEA73();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(16); cpuSetInstructionTime(14);
} }
static void BTST_013C(ULO*opc_data) static void BTST_013C(ULO*opc_data)
{ {
UBY src = cpuGetDRegByte(opc_data[1]); UBY src = cpuGetDRegByte(opc_data[1]);
UBY dst = (UBY)cpuGetNextWord(); UBY dst = (UBY)cpuGetNextWord();
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(10); cpuSetInstructionTime(8);
} }
static void BTST_0100(ULO*opc_data) static void BTST_0100(ULO*opc_data)
{ {
ULO src = cpuGetDReg(opc_data[1]); ULO src = cpuGetDReg(opc_data[1]);
ULO dst = cpuGetDReg(opc_data[0]); ULO dst = cpuGetDReg(opc_data[0]);
cpuBtstL(dst, src); cpuBtstL(dst, src);
cpuSetInstructionTime(10); cpuSetInstructionTime(6);
} }
static void BTST_0810(ULO*opc_data) static void BTST_0810(ULO*opc_data)
{ {
@ -5317,7 +5317,7 @@ static void BTST_0810(ULO*opc_data)
ULO dstea = cpuEA02(opc_data[0]); ULO dstea = cpuEA02(opc_data[0]);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(8); cpuSetInstructionTime(12);
} }
static void BTST_0818(ULO*opc_data) static void BTST_0818(ULO*opc_data)
{ {
@ -5325,7 +5325,7 @@ static void BTST_0818(ULO*opc_data)
ULO dstea = cpuEA03(opc_data[0], 1); ULO dstea = cpuEA03(opc_data[0], 1);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(8); cpuSetInstructionTime(12);
} }
static void BTST_0820(ULO*opc_data) static void BTST_0820(ULO*opc_data)
{ {
@ -5333,7 +5333,7 @@ static void BTST_0820(ULO*opc_data)
ULO dstea = cpuEA04(opc_data[0], 1); ULO dstea = cpuEA04(opc_data[0], 1);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(10); cpuSetInstructionTime(14);
} }
static void BTST_0828(ULO*opc_data) static void BTST_0828(ULO*opc_data)
{ {
@ -5341,7 +5341,7 @@ static void BTST_0828(ULO*opc_data)
ULO dstea = cpuEA05(opc_data[0]); ULO dstea = cpuEA05(opc_data[0]);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(12); cpuSetInstructionTime(16);
} }
static void BTST_0830(ULO*opc_data) static void BTST_0830(ULO*opc_data)
{ {
@ -5349,7 +5349,7 @@ static void BTST_0830(ULO*opc_data)
ULO dstea = cpuEA06(opc_data[0]); ULO dstea = cpuEA06(opc_data[0]);
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(14); cpuSetInstructionTime(18);
} }
static void BTST_0838(ULO*opc_data) static void BTST_0838(ULO*opc_data)
{ {
@ -5357,7 +5357,7 @@ static void BTST_0838(ULO*opc_data)
ULO dstea = cpuEA70(); ULO dstea = cpuEA70();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(12); cpuSetInstructionTime(16);
} }
static void BTST_0839(ULO*opc_data) static void BTST_0839(ULO*opc_data)
{ {
@ -5365,7 +5365,7 @@ static void BTST_0839(ULO*opc_data)
ULO dstea = cpuEA71(); ULO dstea = cpuEA71();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(16); cpuSetInstructionTime(20);
} }
static void BTST_083A(ULO*opc_data) static void BTST_083A(ULO*opc_data)
{ {
@ -5373,7 +5373,7 @@ static void BTST_083A(ULO*opc_data)
ULO dstea = cpuEA72(); ULO dstea = cpuEA72();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(12); cpuSetInstructionTime(16);
} }
static void BTST_083B(ULO*opc_data) static void BTST_083B(ULO*opc_data)
{ {
@ -5381,14 +5381,14 @@ static void BTST_083B(ULO*opc_data)
ULO dstea = cpuEA73(); ULO dstea = cpuEA73();
UBY dst = memoryReadByte(dstea); UBY dst = memoryReadByte(dstea);
cpuBtstB(dst, src); cpuBtstB(dst, src);
cpuSetInstructionTime(14); cpuSetInstructionTime(18);
} }
static void BTST_0800(ULO*opc_data) static void BTST_0800(ULO*opc_data)
{ {
ULO src = (ULO)cpuGetNextWord(); ULO src = (ULO)cpuGetNextWord();
ULO dst = cpuGetDReg(opc_data[0]); ULO dst = cpuGetDReg(opc_data[0]);
cpuBtstL(dst, src); cpuBtstL(dst, src);
cpuSetInstructionTime(8); cpuSetInstructionTime(10);
} }
static void LEA_41D0(ULO*opc_data) static void LEA_41D0(ULO*opc_data)
{ {

View File

@ -68,7 +68,7 @@ static __inline void cpuTscBefore(LLO* a)
*a = local_a; *a = local_a;
} }
static __inline void cpuTscAfter(LLO* a, LLO* b, ULO* c) static __inline void cpuTscAfter(LLO* a, LLO* b, LON* c)
{ {
LLO local_a = *a; LLO local_a = *a;
LLO local_b = *b; LLO local_b = *b;
@ -1229,7 +1229,7 @@ static void cpuDivL(ULO divisor, ULO ext, ULO instruction_time)
if (sign) if (sign)
{ {
if (size64) x_signed = ((LLO) (LON) cpuGetDReg(dq_reg)) | (((LLO) cpuGetDReg(dr_reg))<<32); if (size64) x_signed = (LLO) ((ULL) cpuGetDReg(dq_reg)) | (((LLO) cpuGetDReg(dr_reg))<<32);
else x_signed = (LLO) (LON) cpuGetDReg(dq_reg); else x_signed = (LLO) (LON) cpuGetDReg(dq_reg);
y_signed = (LLO) (LON) divisor; y_signed = (LLO) (LON) divisor;