From 2d7ef30e596a36834bb481d0bae3d06ae0c26307 Mon Sep 17 00:00:00 2001 From: Kingcom Date: Fri, 15 Aug 2014 15:19:56 +0200 Subject: [PATCH] Remove redundant Disr5900 --- pcsx2/CMakeLists.txt | 1 - pcsx2/COP0.cpp | 2 - pcsx2/DebugTools/Debug.h | 39 +- pcsx2/DebugTools/DebugInterface.cpp | 12 +- pcsx2/DebugTools/DisR5900.cpp | 1087 ----------------- pcsx2/DebugTools/DisR5900asm.cpp | 2 + pcsx2/DebugTools/DisVU0Micro.cpp | 16 +- pcsx2/DebugTools/DisVU1Micro.cpp | 32 +- pcsx2/Dump.cpp | 5 +- pcsx2/Elfheader.cpp | 5 +- pcsx2/windows/VCprojects/pcsx2.vcxproj | 1 - .../windows/VCprojects/pcsx2.vcxproj.filters | 3 - pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj | 1 - .../VCprojects/pcsx2_vs2012.vcxproj.filters | 3 - pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj | 1 - .../VCprojects/pcsx2_vs2013.vcxproj.filters | 3 - 16 files changed, 45 insertions(+), 1168 deletions(-) delete mode 100644 pcsx2/DebugTools/DisR5900.cpp diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt index e194c5dd65..18244fb86f 100644 --- a/pcsx2/CMakeLists.txt +++ b/pcsx2/CMakeLists.txt @@ -269,7 +269,6 @@ set(pcsx2DebugToolsSources DebugTools/SymbolMap.cpp DebugTools/DisR3000A.cpp DebugTools/DisR5900asm.cpp - DebugTools/DisR5900.cpp DebugTools/DisVU0Micro.cpp DebugTools/DisVU1Micro.cpp) diff --git a/pcsx2/COP0.cpp b/pcsx2/COP0.cpp index 37660964e6..d041ec7008 100644 --- a/pcsx2/COP0.cpp +++ b/pcsx2/COP0.cpp @@ -411,7 +411,6 @@ void MFC0() { // Note on _Rd_ Condition 9: CP0.Count should be updated even if _Rt_ is 0. if ((_Rd_ != 9) && !_Rt_ ) return; - if (_Rd_ != 9) { COP0_LOG("%s", disR5900Current.getCString() ); } //if(bExecBIOS == FALSE && _Rd_ == 25) Console.WriteLn("MFC0 _Rd_ %x = %x", _Rd_, cpuRegs.CP0.r[_Rd_]); switch (_Rd_) @@ -461,7 +460,6 @@ void MFC0() void MTC0() { - COP0_LOG("%s\n", disR5900Current.getCString()); //if(bExecBIOS == FALSE && _Rd_ == 25) Console.WriteLn("MTC0 _Rd_ %x = %x", _Rd_, cpuRegs.CP0.r[_Rd_]); switch (_Rd_) { diff --git a/pcsx2/DebugTools/Debug.h b/pcsx2/DebugTools/Debug.h index 6d2ffa3cb8..a421440139 100644 --- a/pcsx2/DebugTools/Debug.h +++ b/pcsx2/DebugTools/Debug.h @@ -26,42 +26,17 @@ extern char* disVU0MicroLF(u32 code, u32 pc); extern char* disVU1MicroUF(u32 code, u32 pc); extern char* disVU1MicroLF(u32 code, u32 pc); -extern const char * const CP2VFnames[]; -extern const char * const disRNameCP2f[]; -extern const char * const disRNameCP2i[]; - -extern const char * const disRNameCP2f[]; -extern const char * const disRNameCP2i[]; - namespace R5900 { - // [TODO] : These function names can be de-obfuscated with the help of a little namespace love. - - void disR5900F( std::string& output, u32 code ); void disR5900Fasm( std::string& output, u32 code, u32 pc); - void disR5900AddSym(u32 addr, const char *name); - const char* disR5900GetSym(u32 addr); - const char* disR5900GetUpperSym(u32 addr); - void disR5900FreeSyms(); - void dFindSym( std::string& output, u32 addr ); - extern const char * const disRNameGPR[]; - extern const char * const disRNameCP0[]; - extern const char * const disRNameCP1[]; - - // A helper class for getting a quick and efficient string representation of the - // R5900's current instruction. This class is *not* thread safe! - class DisR5900CurrentState - { - protected: - std::string result; - - public: - const std::string& getString(); - const char* getCString(); - }; - - extern DisR5900CurrentState disR5900Current; + extern const char * const GPR_REG[32]; + extern const char * const COP0_REG[32]; + extern const char * const COP1_REG_FP[32]; + extern const char * const COP1_REG_FCR[32]; + extern const char * const COP2_REG_FP[32]; + extern const char * const COP2_REG_CTL[32]; + extern const char * const COP2_VFnames[4]; } namespace R3000A diff --git a/pcsx2/DebugTools/DebugInterface.cpp b/pcsx2/DebugTools/DebugInterface.cpp index f653309942..8d40606792 100644 --- a/pcsx2/DebugTools/DebugInterface.cpp +++ b/pcsx2/DebugTools/DebugInterface.cpp @@ -353,16 +353,16 @@ const char* R5900DebugInterface::getRegisterName(int cat, int num) case 34: // lo return "lo"; default: - return R5900::disRNameGPR[num]; + return R5900::GPR_REG[num]; } case EECAT_CP0: - return R5900::disRNameCP0[num]; + return R5900::COP0_REG[num]; case EECAT_CP1: - return R5900::disRNameCP1[num]; + return R5900::COP1_REG_FP[num]; case EECAT_CP2F: - return disRNameCP2f[num]; + return R5900::COP2_REG_FP[num]; case EECAT_CP2I: - return disRNameCP2i[num]; + return R5900::COP2_REG_CTL[num]; default: return "Invalid"; } @@ -644,7 +644,7 @@ const char* R3000DebugInterface::getRegisterName(int cat, int num) case 34: // lo return "lo"; default: - return R5900::disRNameGPR[num]; + return R5900::GPR_REG[num]; } default: return "Invalid"; diff --git a/pcsx2/DebugTools/DisR5900.cpp b/pcsx2/DebugTools/DisR5900.cpp deleted file mode 100644 index 880b7a16bf..0000000000 --- a/pcsx2/DebugTools/DisR5900.cpp +++ /dev/null @@ -1,1087 +0,0 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2010 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with PCSX2. - * If not, see . - */ - - -#include "PrecompiledHeader.h" - -#include "Debug.h" -#include "R5900.h" -#include "VU.h" - -const char * const disRNameCP2f[] = { - "VF00", "VF01", "VF02", "VF03", "VF04", "VF05", "VF06", "VF07", - "VF08", "VF09", "VF10", "VF11", "VF12", "VF13", "VF14", "VF15", - "VF16", "VF17", "VF18", "VF19", "VF20", "VF21", "VF22", "VF23", - "VF24", "VF25", "VF26", "VF27", "VF28", "VF29", "VF30", "VF31"}; - -const char * const disRNameCP2i[] = { - "VI00", "VI01", "VI02", "VI03", "VI04", "VI05", "VI06", "VI07", - "VI08", "VI09", "VI10", "VI11", "VI12", "VI13", "VI14", "VI15", - "Status", "MAC", "Clip", "*RES*", "R", "I", "Q", "*RES*", - "*RES*", "*RES*", "TPC", "CMSAR0", "FBRST", "VPU-STAT", "*RES*", "CMSAR1"}; - -const char * const CP2VFnames[] = { "x", "y", "z", "w" }; - -namespace R5900 -{ - -// Names of registers -const char * const disRNameGPR[] = { - "r0", "at", "v0", "v1", "a0", "a1","a2", "a3", - "t0", "t1", "t2", "t3", "t4", "t5","t6", "t7", - "s0", "s1", "s2", "s3", "s4", "s5","s6", "s7", - "t8", "t9", "k0", "k1", "gp", "sp","fp", "ra", "hi", "lo"}; // lo,hi used in rec - -const char * const disRNameCP0[] = { - "Index" , "Random" , "EntryLo0" , "EntryLo1", "Context" , "PageMask" , "Wired" , "*RES*", - "BadVAddr" , "Count" , "EntryHi" , "Compare" , "Status" , "Cause" , "ExceptPC" , "PRevID", - "Config" , "LLAddr" , "WatchLo" , "WatchHi" , "*RES*" , "*RES*" , "*RES*" , "Debug", - "DEPC" , "PerfCnt" , "ErrCtl" , "CacheErr", "TagLo" , "TagHi" , "ErrorEPC" , "DESAVE"}; - -const char * const disRNameCP1[] = { - "FPR0" , "FPR1" , "FPR2" , "FPR3" , "FPR4" , "FPR5" , "FPR6" , "FPR7", - "FPR8" , "FPR9" , "FPR10", "FPR11", "FPR12", "FPR13", "FPR14", "FPR15", - "FPR16", "FPR17", "FPR18", "FPR19", "FPR20", "FPR21", "FPR22", "FPR23", - "FPR24", "FPR25", "FPR26", "FPR27", "FPR28", "FPR29", "FPR30", "FPR31"}; - -const char * const disRNameCP1c[] = { - "FRevID", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", - "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", - "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", - "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "*RES*", "FStatus"}; - -// Type definition of our functions -#define DisFInterface (std::string& output, u32 code) -#define DisFInterfaceT (std::string&, u32) -#define DisFInterfaceN (output, code) - -typedef void (*TdisR5900F)DisFInterface; - -// These macros are used to assemble the disassembler functions -#define MakeDisF(fn, b) \ - void fn DisFInterface { \ - ssprintf(output, "(%8.8x) ", code); \ - b; \ - } - -#undef _Target_ -#undef _Branch_ -#undef _Funct_ -#undef _Rd_ -#undef _Rt_ -#undef _Rs_ -#undef _Sa_ -#undef _Im_ - -#define _Funct_ ((code ) & 0x3F) // The funct part of the instruction register -#define _Rd_ ((code >> 11) & 0x1F) // The rd part of the instruction register -#define _Rt_ ((code >> 16) & 0x1F) // The rt part of the instruction register -#define _Rs_ ((code >> 21) & 0x1F) // The rs part of the instruction register -#define _Sa_ ((code >> 6) & 0x1F) // The sa part of the instruction register -#define _Im_ ( code & 0xFFFF) // The immediate part of the instruction register - - -#define _rRs_ cpuRegs.GPR.r[_Rs_].UL[1], cpuRegs.GPR.r[_Rs_].UL[0] // Rs register -#define _rRt_ cpuRegs.GPR.r[_Rt_].UL[1], cpuRegs.GPR.r[_Rt_].UL[0] // Rt register -#define _rRd_ cpuRegs.GPR.r[_Rd_].UL[1], cpuRegs.GPR.r[_Rd_].UL[0] // Rd register -#define _rSa_ cpuRegs.GPR.r[_Sa_].UL[1], cpuRegs.GPR.r[_Sa_].UL[0] // Sa register - -#define _rFs_ cpuRegs.CP0.r[_Rd_] // Fs register - -#define _rRs32_ cpuRegs.GPR.r[_Rs_].UL[0] // Rs register -#define _rRt32_ cpuRegs.GPR.r[_Rt_].UL[0] // Rt register -#define _rRd32_ cpuRegs.GPR.r[_Rd_].UL[0] // Rd register -#define _rSa32_ cpuRegs.GPR.r[_Sa_].UL[0] // Sa register - - -#define _nRs_ _rRs_, disRNameGPR[_Rs_] -#define _nRt_ _rRt_, disRNameGPR[_Rt_] -#define _nRd_ _rRd_, disRNameGPR[_Rd_] -#define _nSa_ _rSa_, disRNameGPR[_Sa_] -#define _nRd0_ _rFs_, disRNameCP0[_Rd_] - -#define _nRs32_ _rRs32_, disRNameGPR[_Rs_] -#define _nRt32_ _rRt32_, disRNameGPR[_Rt_] -#define _nRd32_ _rRd32_, disRNameGPR[_Rd_] -#define _nSa32_ _rSa32_, disRNameGPR[_Sa_] - -#define _I_ _Im_, _Im_ -#define _Target_ ((cpuRegs.pc & 0xf0000000) + ((code & 0x03ffffff) * 4)) -#define _Branch_ (cpuRegs.pc + 4 + ((short)_Im_ * 4)) -#define _OfB_ _Im_, _nRs_ - -#define _Fsf_ ((code >> 21) & 0x03) -#define _Ftf_ ((code >> 23) & 0x03) - -// sap! it stands for string append. It's not a friendly name but for now it makes -// the copy-paste marathon of code below more readable! -#define _sap( str ) ssappendf( output, str, - -#define dName(i) _sap("%-7s\t") i); -#define dGPR128(i) _sap("%8.8x_%8.8x_%8.8x_%8.8x (%s),") cpuRegs.GPR.r[i].UL[3], cpuRegs.GPR.r[i].UL[2], cpuRegs.GPR.r[i].UL[1], cpuRegs.GPR.r[i].UL[0], disRNameGPR[i]) -#define dGPR64(i) _sap("%8.8x_%8.8x (%s),") cpuRegs.GPR.r[i].UL[1], cpuRegs.GPR.r[i].UL[0], disRNameGPR[i]) -#define dGPR64U(i) _sap("%8.8x_%8.8x (%s),") cpuRegs.GPR.r[i].UL[3], cpuRegs.GPR.r[i].UL[2], disRNameGPR[i]) -#define dGPR32(i) _sap("%8.8x (%s),") cpuRegs.GPR.r[i].UL[0], disRNameGPR[i]) - -#define dCP032(i) _sap("%8.8x (%s),") cpuRegs.CP0.r[i], disRNameCP0[i]) - -#define dCP132(i) _sap("%f (%s),") fpuRegs.fpr[i].f, disRNameCP1[i]) -#define dCP1c32(i) _sap("%8.8x (%s),") fpuRegs.fprc[i], disRNameCP1c[i]) -#define dCP1acc() _sap("%f (ACC),") fpuRegs.ACC.f) - -#define dCP2128f(i) _sap("w=%f z=%f y=%f x=%f (%s),") VU0.VF[i].f.w, VU0.VF[i].f.z, VU0.VF[i].f.y, VU0.VF[i].f.x, disRNameCP2f[i]) -#define dCP232x(i) _sap("x=%f (%s),") VU0.VF[i].f.x, disRNameCP2f[i]) -#define dCP232y(i) _sap("y=%f (%s),") VU0.VF[i].f.y, disRNameCP2f[i]) -#define dCP232z(i) _sap("z=%f (%s),") VU0.VF[i].f.z, disRNameCP2f[i]) -#define dCP232w(i) _sap("w=%f (%s),") VU0.VF[i].f.w, disRNameCP2f[i]) -#define dCP2ACCf() _sap("w=%f z=%f y=%f x=%f (ACC),") VU0.ACC.f.w, VU0.ACC.f.z, VU0.ACC.f.y, VU0.ACC.f.x) -#define dCP232i(i) _sap("%8.8x (%s),") VU0.VI[i].UL, disRNameCP2i[i]) -#define dCP232iF(i) _sap("%f (%s),") VU0.VI[i].F, disRNameCP2i[i]) -#define dCP232f(i, j) _sap("Q %s=%f (%s),") CP2VFnames[j], VU0.VF[i].F[j], disRNameCP2f[i]) - -#define dHI64() _sap("%8.8x_%8.8x (%s),") cpuRegs.HI.UL[1], cpuRegs.HI.UL[0], "hi") -#define dLO64() _sap("%8.8x_%8.8x (%s),") cpuRegs.LO.UL[1], cpuRegs.LO.UL[0], "lo") -#define dImm() _sap("%4.4x (%d),") _Im_, _Im_) -#define dTarget() _sap("%8.8x,") _Target_) -#define dSa() _sap("%2.2x (%d),") _Sa_, _Sa_) -#define dSa32() _sap("%2.2x (%d),") _Sa_+32, _Sa_+32) -#define dOfB() _sap("%4.4x (%8.8x (%s)),") _Im_, cpuRegs.GPR.r[_Rs_].UL[0], disRNameGPR[_Rs_]) -#define dOffset() _sap("%8.8x,") _Branch_) -#define dCode() _sap("%8.8x,") (code >> 6) & 0xffffff) -#define dSaR() _sap("%8.8x,") cpuRegs.sa) - -struct sSymbol { - u32 addr; - char name[256]; -}; - -static sSymbol *dSyms = NULL; -static int nSymAlloc = 0; -static int nSyms = 0; - -void disR5900AddSym(u32 addr, const char *name) { - - if( !pxAssertDev(strlen(name) < sizeof(dSyms->name), - wxsFormat(L"String length out of bounds on debug symbol. Allowed=%d, Symbol=%d", sizeof(dSyms->name)-1, strlen(name))) - ) return; - - if( nSyms+1 >= nSymAlloc ) - { - // Realloc by threshold block sizes. - nSymAlloc += 64 + (nSyms / 4); - dSyms = (sSymbol*)realloc(dSyms, sizeof(sSymbol) * (nSymAlloc)); - } - - if (dSyms == NULL) return; - dSyms[nSyms].addr = addr; - strncpy(dSyms[nSyms].name, name, 256); - nSyms++; -} - -void disR5900FreeSyms() { - if (dSyms != NULL) { free(dSyms); dSyms = NULL; } - nSymAlloc = 0; - nSyms = 0; -} - -const char *disR5900GetSym(u32 addr) { - int i; - - if (dSyms == NULL) return NULL; - for (i=0; i laddr) { - laddr = dSyms[i].addr; - j = i; - } - } - if (j == -1) return NULL; - return dSyms[j].name; -} - -void dFindSym( std::string& output, u32 addr ) -{ - const char* label = disR5900GetSym( addr ); - if( label != NULL ) - output.append( label ); -} - -#define dAppendSym(addr) dFindSym( output, addr ) - -/********************************************************* -* Arithmetic with immediate operand * -* Format: OP rt, rs, immediate * -*********************************************************/ -MakeDisF(disADDI, dName("ADDI"); dGPR64(_Rt_); dGPR32(_Rs_); dImm();) -MakeDisF(disADDIU, dName("ADDIU"); dGPR64(_Rt_); dGPR32(_Rs_); dImm();) -MakeDisF(disANDI, dName("ANDI"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) -MakeDisF(disORI, dName("ORI"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) -MakeDisF(disSLTI, dName("SLTI"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) -MakeDisF(disSLTIU, dName("SLTIU"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) -MakeDisF(disXORI, dName("XORI"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) -MakeDisF(disDADDI, dName("DADDI"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) -MakeDisF(disDADDIU, dName("DADDIU"); dGPR64(_Rt_); dGPR64(_Rs_); dImm();) - -/********************************************************* -* Register arithmetic * -* Format: OP rd, rs, rt * -*********************************************************/ -MakeDisF(disADD, dName("ADD"); dGPR64(_Rd_); dGPR32(_Rs_); dGPR32(_Rt_);) -MakeDisF(disADDU, dName("ADDU"); dGPR64(_Rd_); dGPR32(_Rs_); dGPR32(_Rt_);) -MakeDisF(disDADD, dName("DADD"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disDADDU, dName("DADDU"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disSUB, dName("SUB"); dGPR64(_Rd_); dGPR32(_Rs_); dGPR32(_Rt_);) -MakeDisF(disSUBU, dName("SUBU"); dGPR64(_Rd_); dGPR32(_Rs_); dGPR32(_Rt_);) -MakeDisF(disDSUB, dName("DSUB"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disDSUBU, dName("DSDBU"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disAND, dName("AND"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disOR, dName("OR"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disXOR, dName("XOR"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disNOR, dName("NOR"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disSLT, dName("SLT"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disSLTU, dName("SLTU"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) - -/********************************************************* -* Jump to target * -* Format: OP target * -*********************************************************/ -MakeDisF(disJ, dName("J"); dTarget(); dAppendSym(_Target_);) -MakeDisF(disJAL, dName("JAL"); dTarget(); dGPR32(31); dAppendSym(_Target_);) - -/********************************************************* -* Register jump * -* Format: OP rs, rd * -*********************************************************/ -MakeDisF(disJR, dName("JR"); dGPR32(_Rs_); dAppendSym(cpuRegs.GPR.r[_Rs_].UL[0]);) -MakeDisF(disJALR, dName("JALR"); dGPR32(_Rs_); dGPR32(_Rd_); dAppendSym(cpuRegs.GPR.r[_Rs_].UL[0]);) - -/********************************************************* -* Register mult/div & Register trap logic * -* Format: OP rs, rt * -*********************************************************/ -MakeDisF(disDIV, dName("DIV"); dGPR32(_Rs_); dGPR32(_Rt_);) -MakeDisF(disDIVU, dName("DIVU"); dGPR32(_Rs_); dGPR32(_Rt_);) -MakeDisF(disMULT, dName("MULT"); dGPR32(_Rs_); dGPR32(_Rt_); dGPR32(_Rd_);) -MakeDisF(disMULTU, dName("MULTU"); dGPR32(_Rs_); dGPR32(_Rt_); dGPR32(_Rd_);) - -/********************************************************* -* Load higher 16 bits of the first word in GPR with imm * -* Format: OP rt, immediate * -*********************************************************/ -MakeDisF(disLUI, dName("LUI"); dGPR64(_Rt_); dImm();) - -/********************************************************* -* Move from HI/LO to GPR * -* Format: OP rd * -*********************************************************/ -MakeDisF(disMFHI, dName("MFHI"); dGPR64(_Rd_); dHI64();) -MakeDisF(disMFLO, dName("MFLO"); dGPR64(_Rd_); dLO64();) - -/********************************************************* -* Move to GPR to HI/LO & Register jump * -* Format: OP rs * -*********************************************************/ -MakeDisF(disMTHI, dName("MTHI"); dHI64(); dGPR64(_Rs_);) -MakeDisF(disMTLO, dName("MTLO"); dLO64(); dGPR64(_Rs_);) - -/********************************************************* -* Shift arithmetic with constant shift * -* Format: OP rd, rt, sa * -*********************************************************/ -MakeDisF(disSLL, if (code) { dName("SLL"); dGPR64(_Rd_); dGPR32(_Rt_); dSa(); } else { dName("NOP"); }) -MakeDisF(disDSLL, dName("DSLL"); dGPR64(_Rd_); dGPR64(_Rt_); dSa();) -MakeDisF(disDSLL32, dName("DSLL32"); dGPR64(_Rd_); dGPR64(_Rt_); dSa32();) -MakeDisF(disSRA, dName("SRA"); dGPR64(_Rd_); dGPR32(_Rt_); dSa();) -MakeDisF(disDSRA, dName("DSRA"); dGPR64(_Rd_); dGPR64(_Rt_); dSa();) -MakeDisF(disDSRA32, dName("DSRA32"); dGPR64(_Rd_); dGPR64(_Rt_); dSa32();) -MakeDisF(disSRL, dName("SRL"); dGPR64(_Rd_); dGPR32(_Rt_); dSa();) -MakeDisF(disDSRL, dName("DSRL"); dGPR64(_Rd_); dGPR64(_Rt_); dSa();) -MakeDisF(disDSRL32, dName("DSRL32"); dGPR64(_Rd_); dGPR64(_Rt_); dSa32();) - -/********************************************************* -* Shift arithmetic with variant register shift * -* Format: OP rd, rt, rs * -*********************************************************/ -MakeDisF(disSLLV, dName("SLLV"); dGPR64(_Rd_); dGPR32(_Rt_); dGPR32(_Rs_);) -MakeDisF(disDSLLV, dName("DSLLV"); dGPR64(_Rd_); dGPR64(_Rt_); dGPR32(_Rs_);) -MakeDisF(disSRAV, dName("SRAV"); dGPR64(_Rd_); dGPR32(_Rt_); dGPR32(_Rs_);) -MakeDisF(disDSRAV, dName("DSRAV"); dGPR64(_Rd_); dGPR64(_Rt_); dGPR32(_Rs_);) -MakeDisF(disSRLV, dName("SRLV"); dGPR64(_Rd_); dGPR32(_Rt_); dGPR32(_Rs_);) -MakeDisF(disDSRLV, dName("DSRLV"); dGPR64(_Rd_); dGPR64(_Rt_); dGPR32(_Rs_);) - -/********************************************************* -* Load and store for GPR * -* Format: OP rt, offset(base) * -*********************************************************/ -MakeDisF(disLB, dName("LB"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLBU, dName("LBU"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLH, dName("LH"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLHU, dName("LHU"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLW, dName("LW"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLWU, dName("LWU"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLWL, dName("LWL"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLWR, dName("LWR"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLD, dName("LD"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLDL, dName("LDL"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLDR, dName("LDR"); dGPR64(_Rt_); dOfB();) -MakeDisF(disLQ, dName("LQ"); dGPR128(_Rt_); dOfB();) -MakeDisF(disSB, dName("SB"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSH, dName("SH"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSW, dName("SW"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSWL, dName("SWL"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSWR, dName("SWR"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSD, dName("SD"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSDL, dName("SDL"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSDR, dName("SDR"); dGPR64(_Rt_); dOfB();) -MakeDisF(disSQ, dName("SQ"); dGPR128(_Rt_); dOfB();) - -/********************************************************* -* Register branch logic * -* Format: OP rs, rt, offset * -*********************************************************/ -MakeDisF(disBEQ, dName("BEQ"); dGPR64(_Rs_); dGPR64(_Rt_); dOffset();) -MakeDisF(disBNE, dName("BNE"); dGPR64(_Rs_); dGPR64(_Rt_); dOffset();) - -/********************************************************* -* Moves between GPR and COPx * -* Format: OP rt, rd * -*********************************************************/ -MakeDisF(disMFC0, dName("MFC0"); dGPR32(_Rt_); dCP032(_Rd_);) -MakeDisF(disMTC0, dName("MTC0"); dCP032(_Rd_); dGPR32(_Rt_);) - -/********************************************************* -* Register branch logic * -* Format: OP rs, offset * -*********************************************************/ - -MakeDisF(disBGEZ, dName("BGEZ"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBGEZAL, dName("BGEZAL"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBGTZ, dName("BGTZ"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBLEZ, dName("BLEZ"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBLTZ, dName("BLTZ"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBLTZAL, dName("BLTZAL"); dGPR64(_Rs_); dOffset();) - - -/********************************************************* -* Register branch logic Likely * -* Format: OP rs, offset * -*********************************************************/ - - -MakeDisF(disBEQL, dName("BEQL"); dGPR64(_Rs_); dGPR64(_Rt_); dOffset();) -MakeDisF(disBNEL, dName("BNEL"); dGPR64(_Rs_); dGPR64(_Rt_); dOffset();) -MakeDisF(disBLEZL, dName("BLEZL"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBGTZL, dName("BGTZL"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBLTZL, dName("BLTZL"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBGEZL, dName("BGEZL"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBLTZALL, dName("BLTZALL"); dGPR64(_Rs_); dOffset();) -MakeDisF(disBGEZALL, dName("BGEZALL"); dGPR64(_Rs_); dOffset();) - - -/********************************************************* -* COP0 opcodes * -* * -*********************************************************/ - -MakeDisF(disBC0F, dName("BC0F"); dOffset();) -MakeDisF(disBC0T, dName("BC0T"); dOffset();) -MakeDisF(disBC0FL, dName("BC0FL"); dOffset();) -MakeDisF(disBC0TL, dName("BC0TL"); dOffset();) - -MakeDisF(disTLBR, dName("TLBR");) -MakeDisF(disTLBWI, dName("TLBWI");) -MakeDisF(disTLBWR, dName("TLBWR");) -MakeDisF(disTLBP, dName("TLBP");) -MakeDisF(disERET, dName("ERET");) -MakeDisF(disEI, dName("EI");) -MakeDisF(disDI, dName("DI");) - -/********************************************************* -* COP1 opcodes * -* * -*********************************************************/ - -#define _Ft_ _Rt_ -#define _Fs_ _Rd_ -#define _Fd_ _Sa_ - -MakeDisF(disMFC1, dName("MFC1"); dGPR64(_Rt_); dCP132(_Fs_);) -MakeDisF(disCFC1, dName("CFC1"); dGPR64(_Rt_); dCP1c32(_Fs_);) -MakeDisF(disMTC1, dName("MTC1"); dCP132(_Fs_); dGPR64(_Rt_);) -MakeDisF(disCTC1, dName("CTC1"); dCP1c32(_Fs_); dGPR64(_Rt_);) - -MakeDisF(disBC1F, dName("BC1F");) -MakeDisF(disBC1T, dName("BC1T");) -MakeDisF(disBC1FL, dName("BC1FL");) -MakeDisF(disBC1TL, dName("BC1TL");) - -MakeDisF(disADDs, dName("ADDs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disSUBs, dName("SUBs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMULs, dName("MULs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disDIVs, dName("DIVs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disSQRTs, dName("SQRTs"); dCP132(_Fd_); dCP132(_Ft_);) -MakeDisF(disABSs, dName("ABSs"); dCP132(_Fd_); dCP132(_Fs_);) -MakeDisF(disMOVs, dName("MOVs"); dCP132(_Fd_); dCP132(_Fs_);) -MakeDisF(disNEGs, dName("NEGs"); dCP132(_Fd_); dCP132(_Fs_);) -MakeDisF(disRSQRTs, dName("RSQRTs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disADDAs, dName("ADDAs"); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disSUBAs, dName("SUBAs"); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMULAs, dName("MULAs"); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMADDs, dName("MADDs"); dCP132(_Fd_); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMSUBs, dName("MSUBs"); dCP132(_Fd_); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMADDAs, dName("MADDAs"); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMSUBAs, dName("MSUBAs"); dCP1acc(); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disCVTWs, dName("CVTWs"); dCP132(_Fd_); dCP132(_Fs_);) -MakeDisF(disMAXs, dName("MAXs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disMINs, dName("MINs"); dCP132(_Fd_); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disCFs, dName("CFs"); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disCEQs, dName("CEQs"); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disCLTs, dName("CLTs"); dCP132(_Fs_); dCP132(_Ft_);) -MakeDisF(disCLEs, dName("CLEs"); dCP132(_Fs_); dCP132(_Ft_);) - -MakeDisF(disCVTSw, dName("CVTSw"); dCP132(_Fd_); dCP132(_Fs_);) - -/********************************************************* -* Load and store for COP1 * -* Format: OP rt, offset(base) * -*********************************************************/ - -MakeDisF(disLWC1, dName("LWC1"); dCP132(_Ft_); dOffset();) -MakeDisF(disSWC1, dName("SWC1"); dCP132(_Ft_); dOffset();) - -/********************************************************* -* Conditional Move * -* Format: OP rd, rs, rt * -*********************************************************/ - -MakeDisF(disMOVZ, dName("MOVZ"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disMOVN, dName("MOVN"); dGPR64(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) - -/********************************************************* -* MMI opcodes * -* * -*********************************************************/ - -MakeDisF(disMULT1, dName("MULT1");) -MakeDisF(disMULTU1, dName("MULTU1");) - -/********************************************************* -* MMI0 opcodes * -* * -*********************************************************/ - -MakeDisF(disPADDW, dName("PADDW");) -MakeDisF(disPADDH, dName("PADDH");) -MakeDisF(disPADDB, dName("PADDB");) - -MakeDisF(disPADDSW, dName("PADDSW");) -MakeDisF(disPADDSH, dName("PADDSH");) -MakeDisF(disPADDSB, dName("PADDSB");) - -MakeDisF(disPSUBW, dName("PSUBW");) -MakeDisF(disPSUBH, dName("PSUBH");) -MakeDisF(disPSUBB, dName("PSUBB");) - -MakeDisF(disPSUBSW, dName("PSUBSW");) -MakeDisF(disPSUBSH, dName("PSUBSH");) -MakeDisF(disPSUBSB, dName("PSUBSB");) - -MakeDisF(disPCGTW, dName("PCGTW");) -MakeDisF(disPCGTH, dName("PCGTH");) -MakeDisF(disPCGTB, dName("PCGTB");) - -MakeDisF(disPMAXW, dName("PMAXW");) -MakeDisF(disPMAXH, dName("PMAXH");) - -MakeDisF(disPEXTLW, dName("PEXTLW"); dGPR128(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disPEXTLH, dName("PEXTLH"); dGPR128(_Rd_); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disPEXTLB, dName("PEXTLB");) -MakeDisF(disPEXTS, dName("PEXTS");) - -MakeDisF(disPPACW, dName("PPACW");) -MakeDisF(disPPACH, dName("PPACH");) -MakeDisF(disPPACB, dName("PPACB");) -MakeDisF(disPPACS, dName("PPACS");) - -/********************************************************* -* MMI1 opcodes * -* * -*********************************************************/ - -MakeDisF(disPADSBH, dName("PADSBH");) - -MakeDisF(disPABSW, dName("PABSW");) -MakeDisF(disPABSH, dName("PABSH");) - -MakeDisF(disPCEQW, dName("PCEQW");) -MakeDisF(disPCEQH, dName("PCEQH");) -MakeDisF(disPCEQB, dName("PCEQB");) - -MakeDisF(disPMINW, dName("PMINW");) -MakeDisF(disPMINH, dName("PMINH");) - -MakeDisF(disPADDUW, dName("PADDUW");) -MakeDisF(disPADDUH, dName("PADDUH");) -MakeDisF(disPADDUB, dName("PADDUB");) - -MakeDisF(disPSUBUW, dName("PSUBUW");) -MakeDisF(disPSUBUH, dName("PSUBUH");) -MakeDisF(disPSUBUB, dName("PSUBUB");) - -MakeDisF(disPEXTUW, dName("PEXTUW"); dGPR128(_Rd_); dGPR64U(_Rs_); dGPR64U(_Rt_);) -MakeDisF(disPEXTUH, dName("PEXTUH"); dGPR128(_Rd_); dGPR64U(_Rs_); dGPR64U(_Rt_);) -MakeDisF(disPEXTUB, dName("PEXTUB");) - -MakeDisF(disQFSRV, dName("QFSRV");) - -/********************************************************* -* MMI2 opcodes * -* * -*********************************************************/ - -MakeDisF(disPMADDW, dName("PMADDW");) -MakeDisF(disPMADDH, dName("PMADDH");) - -MakeDisF(disPSLLVW, dName("PSLLVW");) -MakeDisF(disPSRLVW, dName("PSRLVW");) - -MakeDisF(disPMFHI, dName("PMFHI");) -MakeDisF(disPMFLO, dName("PMFLO");) - -MakeDisF(disPINTH, dName("PINTH");) - -MakeDisF(disPMULTW, dName("PMULTW");) -MakeDisF(disPMULTH, dName("PMULTH");) - -MakeDisF(disPDIVW, dName("PDIVW");) -MakeDisF(disPDIVH, dName("PDIVH");) - -MakeDisF(disPCPYLD, dName("PCPYLD"); dGPR128(_Rd_); dGPR128(_Rs_); dGPR128(_Rt_);) - -MakeDisF(disPAND, dName("PAND"); dGPR128(_Rd_); dGPR128(_Rs_); dGPR128(_Rt_);) -MakeDisF(disPXOR, dName("PXOR"); dGPR128(_Rd_); dGPR128(_Rs_); dGPR128(_Rt_);) - -MakeDisF(disPMSUBW, dName("PMSUBW");) -MakeDisF(disPMSUBH, dName("PMSUBH");) - -MakeDisF(disPHMADH, dName("PHMADH");) -MakeDisF(disPHMSBH, dName("PHMSBH");) - -MakeDisF(disPEXEW, dName("PEXEW");) -MakeDisF(disPEXEH, dName("PEXEH");) - -MakeDisF(disPREVH, dName("PREVH");) - -MakeDisF(disPDIVBW, dName("PDIVBW");) - -MakeDisF(disPROT3W, dName("PROT3W");) - -/********************************************************* -* MMI3 opcodes * -* * -*********************************************************/ - -MakeDisF(disPMADDUW, dName("PMADDUW");) - -MakeDisF(disPSRAVW, dName("PSRAVW");) - -MakeDisF(disPMTHI, dName("PMTHI");) -MakeDisF(disPMTLO, dName("PMTLO");) - -MakeDisF(disPINTEH, dName("PINTEH");) - -MakeDisF(disPMULTUW, dName("PMULTUW");) -MakeDisF(disPDIVUW, dName("PDIVUW");) - -MakeDisF(disPCPYUD, dName("PCPYUD"); dGPR128(_Rd_); dGPR128(_Rt_); dGPR128(_Rs_);) - -MakeDisF(disPOR, dName("POR"); dGPR128(_Rd_); dGPR128(_Rs_); dGPR128(_Rt_);) -MakeDisF(disPNOR, dName("PNOR"); dGPR128(_Rd_); dGPR128(_Rs_); dGPR128(_Rt_);) - -MakeDisF(disPEXCH, dName("PEXCH");) -MakeDisF(disPEXCW, dName("PEXCW");) - -MakeDisF(disPCPYH, dName("PCPYH"); dGPR128(_Rd_); dGPR128(_Rt_);) - -/********************************************************* -* COP2 opcodes * -* * -*********************************************************/ - -#define _Ft_ _Rt_ -#define _Fs_ _Rd_ -#define _Fd_ _Sa_ - -#define _X code>>24 -#define _Y code>>23 -#define _Z code>>22 -#define _W code>>21 - -MakeDisF(disLQC2, dName("LQC2"); dCP2128f(_Rt_); dOfB();) -MakeDisF(disSQC2, dName("SQC2"); dCP2128f(_Rt_); dOfB();) - -MakeDisF(disQMFC2, dName("QMFC2");) -MakeDisF(disQMTC2, dName("QMTC2");) -MakeDisF(disCFC2, dName("CFC2"); dGPR32(_Rt_); dCP232i(_Fs_);) -MakeDisF(disCTC2, dName("CTC2"); dCP232i(_Fs_); dGPR32(_Rt_);) - -MakeDisF(disBC2F, dName("BC2F");) -MakeDisF(disBC2T, dName("BC2T");) -MakeDisF(disBC2FL, dName("BC2FL");) -MakeDisF(disBC2TL, dName("BC2TL");) - -// SPEC1 -MakeDisF(disVADD, dName("VADD");) -MakeDisF(disVADDx, dName("VADDx"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVADDy, dName("VADDy"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVADDz, dName("VADDz"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVADDw, dName("VADDw"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVADDq, dName("VADDq"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP232iF(REG_Q);) -MakeDisF(disVADDi, dName("VADDi"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP232iF(REG_I);) -MakeDisF(disVSUB, dName("VSUB");) -MakeDisF(disVSUBx, dName("VSUBx"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVSUBy, dName("VSUBy"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVSUBz, dName("VSUBz"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVSUBw, dName("VSUBw"); dCP2128f(_Fd_); dCP2128f(_Fs_); dCP2128f(_Ft_);) -MakeDisF(disVSUBq, dName("VSUBq");) -MakeDisF(disVSUBi, dName("VSUBi");) -MakeDisF(disVMADD, dName("VMADD");) -MakeDisF(disVMADDx, dName("VMADDx"); dCP2128f(_Fd_); dCP2ACCf(); dCP2128f(_Fs_); dCP232x(_Ft_);) -MakeDisF(disVMADDy, dName("VMADDy"); dCP2128f(_Fd_); dCP2ACCf(); dCP2128f(_Fs_); dCP232y(_Ft_);) -MakeDisF(disVMADDz, dName("VMADDz"); dCP2128f(_Fd_); dCP2ACCf(); dCP2128f(_Fs_); dCP232z(_Ft_);) -MakeDisF(disVMADDw, dName("VMADDw"); dCP2128f(_Fd_); dCP2ACCf(); dCP2128f(_Fs_); dCP232w(_Ft_);) -MakeDisF(disVMADDq, dName("VMADDq");) -MakeDisF(disVMADDi, dName("VMADDi");) -MakeDisF(disVMSUB, dName("VMSUB");) -MakeDisF(disVMSUBx, dName("VMSUBx");) -MakeDisF(disVMSUBy, dName("VMSUBy");) -MakeDisF(disVMSUBz, dName("VMSUBz");) -MakeDisF(disVMSUBw, dName("VMSUBw");) -MakeDisF(disVMSUBq, dName("VMSUBq");) -MakeDisF(disVMSUBi, dName("VMSUBi");) -MakeDisF(disVMAX, dName("VMAX");) -MakeDisF(disVMAXx, dName("VMAXx");) -MakeDisF(disVMAXy, dName("VMAXy");) -MakeDisF(disVMAXz, dName("VMAXz");) -MakeDisF(disVMAXw, dName("VMAXw");) -MakeDisF(disVMAXi, dName("VMAXi");) -MakeDisF(disVMINI, dName("VMINI");) -MakeDisF(disVMINIx, dName("VMINIx");) -MakeDisF(disVMINIy, dName("VMINIy");) -MakeDisF(disVMINIz, dName("VMINIz");) -MakeDisF(disVMINIw, dName("VMINIw");) -MakeDisF(disVMINIi, dName("VMINIi");) -MakeDisF(disVMUL, dName("VMUL");) -MakeDisF(disVMULx, dName("VMULx");) -MakeDisF(disVMULy, dName("VMULy");) -MakeDisF(disVMULz, dName("VMULz");) -MakeDisF(disVMULw, dName("VMULw");) -MakeDisF(disVMULq, dName("VMULq");) -MakeDisF(disVMULi, dName("VMULi");) -MakeDisF(disVIADD, dName("VIADD");) -MakeDisF(disVIADDI, dName("VIADDI");) -MakeDisF(disVISUB, dName("VISUB");) -MakeDisF(disVIAND, dName("VIAND");) -MakeDisF(disVIOR, dName("VIOR");) -MakeDisF(disVOPMSUB, dName("VOPMSUB");) -MakeDisF(disVCALLMS, dName("VCALLMS");) -MakeDisF(disVCALLMSR, dName("VCALLMSR");) - -// SPEC2 -MakeDisF(disVADDA, dName("VADDA");) -MakeDisF(disVADDAx, dName("VADDAx");) -MakeDisF(disVADDAy, dName("VADDAy");) -MakeDisF(disVADDAz, dName("VADDAz");) -MakeDisF(disVADDAw, dName("VADDAw");) -MakeDisF(disVADDAq, dName("VADDAq");) -MakeDisF(disVADDAi, dName("VADDAi");) -MakeDisF(disVMADDA, dName("VMADDA");) -MakeDisF(disVMADDAx, dName("VMADDAx"); dCP2ACCf(); dCP2128f(_Fs_); dCP232x(_Ft_);) -MakeDisF(disVMADDAy, dName("VMADDAy"); dCP2ACCf(); dCP2128f(_Fs_); dCP232y(_Ft_);) -MakeDisF(disVMADDAz, dName("VMADDAz"); dCP2ACCf(); dCP2128f(_Fs_); dCP232z(_Ft_);) -MakeDisF(disVMADDAw, dName("VMADDAw"); dCP2ACCf(); dCP2128f(_Fs_); dCP232w(_Ft_);) -MakeDisF(disVMADDAq, dName("VMADDAq");) -MakeDisF(disVMADDAi, dName("VMADDAi");) -MakeDisF(disVSUBAx, dName("VSUBAx");) -MakeDisF(disVSUBAy, dName("VSUBAy");) -MakeDisF(disVSUBAz, dName("VSUBAz");) -MakeDisF(disVSUBAw, dName("VSUBAw");) -MakeDisF(disVMSUBAx, dName("VMSUBAx");) -MakeDisF(disVMSUBAy, dName("VMSUBAy");) -MakeDisF(disVMSUBAz, dName("VMSUBAz");) -MakeDisF(disVMSUBAw, dName("VMSUBAw");) -MakeDisF(disVITOF0, dName("VITOF0");) -MakeDisF(disVITOF4, dName("VITOF4");) -MakeDisF(disVITOF12, dName("VITOF12");) -MakeDisF(disVITOF15, dName("VITOF15");) -MakeDisF(disVFTOI0, dName("VFTOI0");) -MakeDisF(disVFTOI4, dName("VFTOI4");) -MakeDisF(disVFTOI12, dName("VFTOI12");) -MakeDisF(disVFTOI15, dName("VFTOI15");) -MakeDisF(disVMULA, dName("VMULA");) -MakeDisF(disVMULAx, dName("VMULAx"); dCP2ACCf(); dCP2128f(_Fs_); dCP232x(_Ft_);) -MakeDisF(disVMULAy, dName("VMULAy");) -MakeDisF(disVMULAz, dName("VMULAz");) -MakeDisF(disVMULAw, dName("VMULAw");) -MakeDisF(disVMOVE, dName("VMOVE"); dCP2128f(_Ft_); dCP2128f(_Fs_);) -MakeDisF(disVMR32, dName("VMR32");) -MakeDisF(disVDIV, dName("VDIV");) -MakeDisF(disVSQRT, dName("VSQRT"); dCP232f(_Ft_, _Ftf_);) -MakeDisF(disVRSQRT, dName("VRSQRT");) -MakeDisF(disVRNEXT, dName("VRNEXT");) -MakeDisF(disVRGET, dName("VRGET");) -MakeDisF(disVRINIT, dName("VRINIT");) -MakeDisF(disVRXOR, dName("VRXOR");) -MakeDisF(disVWAITQ, dName("VWAITQ");) - -/********************************************************* -* Special purpose instructions * -* Format: OP * -*********************************************************/ - -MakeDisF(disSYNC, dName("SYNC");) -MakeDisF(disBREAK, dName("BREAK");) -MakeDisF(disSYSCALL, dName("SYSCALL"); dCode();) -MakeDisF(disCACHE, ssappendf(output, "%-7s, %x,", "CACHE", _Rt_); dOfB();) -MakeDisF(disPREF, dName("PREF");) - -MakeDisF(disMFSA, dName("MFSA"); dGPR64(_Rd_); dSaR();) -MakeDisF(disMTSA, dName("MTSA"); dGPR64(_Rs_); dSaR();) - -MakeDisF(disMTSAB, dName("MTSAB");dGPR64(_Rs_); dImm();) -MakeDisF(disMTSAH, dName("MTSAH");dGPR64(_Rs_); dImm();) - -MakeDisF(disTGE, dName("TGE"); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disTGEU, dName("TGEU"); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disTLT, dName("TLT"); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disTLTU, dName("TLTU"); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disTEQ, dName("TEQ"); dGPR64(_Rs_); dGPR64(_Rt_);) -MakeDisF(disTNE, dName("TNE"); dGPR64(_Rs_); dGPR64(_Rt_);) - -MakeDisF(disTGEI, dName("TGEI"); dGPR64(_Rs_); dImm();) -MakeDisF(disTGEIU, dName("TGEIU"); dGPR64(_Rs_); dImm();) -MakeDisF(disTLTI, dName("TLTI"); dGPR64(_Rs_); dImm();) -MakeDisF(disTLTIU, dName("TLTIU"); dGPR64(_Rs_); dImm();) -MakeDisF(disTEQI, dName("TEQI"); dGPR64(_Rs_); dImm();) -MakeDisF(disTNEI, dName("TNEI"); dGPR64(_Rs_); dImm();) - -/********************************************************* -* Unknown instruction (would generate an exception) * -* Format: ? * -*********************************************************/ -static MakeDisF(disNULL, dName("*** Bad OP ***");) - -TdisR5900F disR5900_MMI0[] = { // Subset of disMMI0 - disPADDW, disPSUBW, disPCGTW, disPMAXW, - disPADDH, disPSUBH, disPCGTH, disPMAXH, - disPADDB, disPSUBB, disPCGTB, disNULL, - disNULL, disNULL, disNULL, disNULL, - disPADDSW, disPSUBSW, disPEXTLW, disPPACW, - disPADDSH, disPSUBSH, disPEXTLH, disPPACH, - disPADDSB, disPSUBSB, disPEXTLB, disPPACB, - disNULL, disNULL, disPEXTS, disPPACS}; - -static void disMMI0( std::string& output, u32 code ) -{ - disR5900_MMI0[_Sa_]( output, code ); -} - -TdisR5900F disR5900_MMI1[] = { // Subset of disMMI1 - disNULL, disPABSW, disPCEQW, disPMINW, - disPADSBH, disPABSH, disPCEQH, disPMINH, - disNULL, disNULL, disPCEQB, disNULL, - disNULL, disNULL, disNULL, disNULL, - disPADDUW, disPSUBUW, disPEXTUW, disNULL, - disPADDUH, disPSUBUH, disPEXTUH, disNULL, - disPADDUB, disPSUBUB, disPEXTUB, disQFSRV, - disNULL, disNULL, disNULL, disNULL}; - -static void disMMI1( std::string& output, u32 code ) -{ - disR5900_MMI1[_Sa_]( output, code ); -} - -TdisR5900F disR5900_MMI2[] = { // Subset of disMMI2 - disPMADDW, disNULL, disPSLLVW, disPSRLVW, - disPMSUBW, disNULL, disNULL, disNULL, - disPMFHI, disPMFLO, disPINTH, disNULL, - disPMULTW, disPDIVW, disPCPYLD, disNULL, - disPMADDH, disPHMADH, disPAND, disPXOR, - disPMSUBH, disPHMSBH, disNULL, disNULL, - disNULL, disNULL, disPEXEH, disPREVH, - disPMULTH, disPDIVBW, disPEXEW, disPROT3W}; - -static void disMMI2( std::string& output, u32 code ) -{ - disR5900_MMI2[_Sa_]( output, code ); -} - -TdisR5900F disR5900_MMI3[] = { // Subset of disMMI3 - disPMADDUW, disNULL, disNULL, disPSRAVW, - disNULL, disNULL, disNULL, disNULL, - disPMTHI, disPMTLO, disPINTEH, disNULL, - disPMULTUW, disPDIVUW, disPCPYUD, disNULL, - disNULL, disNULL, disPOR, disPNOR, - disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disPEXCH, disPCPYH, - disNULL, disNULL, disPEXCW, disNULL}; - -static void disMMI3( std::string& output, u32 code ) -{ - disR5900_MMI3[_Sa_]( output, code ); -} - -TdisR5900F disR5900_MMI[] = { // Subset of disMMI - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disMMI0, disMMI2, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disMULT1, disMULTU1, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disMMI1, disMMI3, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; - -static void disMMI( std::string& output, u32 code ) -{ - disR5900_MMI[_Funct_]( output, code ); -} - - -TdisR5900F disR5900_COP0_BC0[] = { //subset of disCOP0 BC - disBC0F, disBC0T, disBC0FL, disBC0TL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, -}; - -static void disCOP0_BC0( std::string& output, u32 code ) -{ - disR5900_COP0_BC0[_Rt_]( output, code ); -} - -TdisR5900F disR5900_COP0_Func[] = { //subset of disCOP0 Function - disNULL, disTLBR, disTLBWI, disNULL, disNULL, disNULL, disTLBWR, disNULL, - disTLBP, disNULL, disNULL , disNULL, disNULL, disNULL, disNULL , disNULL, - disNULL, disNULL, disNULL , disNULL, disNULL, disNULL, disNULL , disNULL, - disERET, disNULL, disNULL , disNULL, disNULL, disNULL, disNULL , disNULL, - disNULL, disNULL, disNULL , disNULL, disNULL, disNULL, disNULL , disNULL, - disNULL, disNULL, disNULL , disNULL, disNULL, disNULL, disNULL , disNULL, - disNULL, disNULL, disNULL , disNULL, disNULL, disNULL, disNULL , disNULL, - disEI , disDI , disNULL , disNULL, disNULL, disNULL, disNULL , disNULL -}; -static void disCOP0_Func( std::string& output, u32 code ) -{ - disR5900_COP0_Func[_Funct_]( output, code ); -} - -TdisR5900F disR5900_COP0[] = { // Subset of disCOP0 - disMFC0, disNULL, disNULL, disNULL, disMTC0, disNULL, disNULL, disNULL, - disCOP0_BC0, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disCOP0_Func, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; - -static void disCOP0( std::string& output, u32 code ) -{ - disR5900_COP0[_Rs_]( output, code ); -} - -TdisR5900F disR5900_COP1_S[] = { //subset of disCOP1 S - disADDs, disSUBs, disMULs, disDIVs, disSQRTs, disABSs, disMOVs, disNEGs, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disRSQRTs, disNULL, - disADDAs, disSUBAs, disMULAs, disNULL, disMADDs, disMSUBs, disMADDAs, disMSUBAs, - disNULL, disNULL, disNULL, disNULL, disCVTWs, disNULL, disNULL, disNULL, - disMINs, disMAXs, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disCFs, disNULL, disCEQs, disNULL, disCLTs, disNULL, disCLEs, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, -}; - -static void disCOP1_S( std::string& output, u32 code ) -{ - disR5900_COP1_S[_Funct_]( output, code ); -} - -TdisR5900F disR5900_COP1_W[] = { //subset of disCOP1 W - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disCVTSw, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, -}; - -static void disCOP1_W( std::string& output, u32 code ) -{ - disR5900_COP1_W[_Funct_]( output, code ); -} - -TdisR5900F disR5900_COP1_BC1[] = { //subset of disCOP1 BC - disBC1F, disBC1T, disBC1FL, disBC1TL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, -}; - -static void disCOP1_BC1( std::string& output, u32 code ) -{ - disR5900_COP1_BC1[_Rt_]( output, code ); -} - -TdisR5900F disR5900_COP1[] = { // Subset of disCOP1 - disMFC1, disNULL, disCFC1, disNULL, disMTC1, disNULL, disCTC1, disNULL, - disCOP1_BC1, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disCOP1_S, disNULL, disNULL, disNULL, disCOP1_W, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; - -static void disCOP1( std::string& output, u32 code ) -{ - disR5900_COP1[_Rs_]( output, code ); -} - -TdisR5900F disR5900_COP2_SPEC2[] = { //subset of disCOP2 SPEC2 - disVADDAx, disVADDAy, disVADDAz, disVADDAw, disVSUBAx, disVSUBAy, disVSUBAz, disVSUBAw, - disVMADDAx, disVMADDAy, disVMADDAz, disVMADDAw, disVMSUBAx, disVMSUBAy, disVMSUBAz, disVMSUBAw, - disVITOF0, disVITOF4, disVITOF12, disVITOF15, disVFTOI0, disVFTOI4, disVFTOI12, disVFTOI15, - disVMULAx, disVMULAy, disVMULAz, disVMULAw, disNULL, disNULL, disNULL, disNULL, - disVADDAq, disVMADDAq, disVADDAi, disVMADDAi, disNULL, disNULL, disNULL, disNULL, - disVADDA, disVMADDA, disVMULA, disNULL, disNULL, disNULL, disNULL, disNULL, - disVMOVE, disVMR32, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disVDIV, disVSQRT, disVRSQRT, disVWAITQ, disNULL, disNULL, disNULL, disNULL, - disVRNEXT, disVRGET, disVRINIT, disVRXOR, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, -}; - -static void disCOP2_SPEC2( std::string& output, u32 code ) -{ - disR5900_COP2_SPEC2[(code & 0x3) | ((code >> 4) & 0x7c)]( output, code ); -} - -TdisR5900F disR5900_COP2_SPEC1[] = { //subset of disCOP2 SPEC1 - disVADDx, disVADDy, disVADDz, disVADDw, disVSUBx, disVSUBy, disVSUBz, disVSUBw, - disVMADDx, disVMADDy, disVMADDz, disVMADDw, disVMSUBx, disVMSUBy, disVMSUBz, disVMSUBw, - disVMAXx, disVMAXy, disVMAXz, disVMAXw, disVMINIx, disVMINIy, disVMINIz, disVMINIw, - disVMULx, disVMULy, disVMULz, disVMULw, disVMULq, disVMAXi, disVMULi, disVMINIi, - disVADDq, disVMADDq, disVADDi, disVMADDi, disVSUBq, disVMSUBq, disVSUBi, disVMSUBi, - disVADD, disVMADD, disVMUL, disVMAX, disVSUB, disVMSUB, disVOPMSUB, disVMINI, - disVIADD, disVISUB, disVIADDI, disNULL, disVIAND, disVIOR, disNULL, disNULL, - disVCALLMS, disVCALLMSR, disNULL, disNULL, disCOP2_SPEC2, disCOP2_SPEC2, disCOP2_SPEC2, disCOP2_SPEC2, -}; - -static void disCOP2_SPEC1( std::string& output, u32 code ) -{ - disR5900_COP2_SPEC1[_Funct_]( output, code ); -} - -TdisR5900F disR5900_COP2_BC2[] = { //subset of disCOP2 BC - disBC2F, disBC2T, disBC2FL, disBC2TL, disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, - disNULL, disNULL, disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, -}; - -static void disCOP2_BC2( std::string& output, u32 code ) -{ - disR5900_COP2_BC2[_Rt_]( output, code ); -} - -TdisR5900F disR5900_COP2[] = { // Subset of disCOP2 - disNULL, disQMFC2, disCFC2, disNULL, disNULL, disQMTC2, disCTC2, disNULL, - disCOP2_BC2, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, - disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, - disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1, disCOP2_SPEC1}; - -static void disCOP2( std::string& output, u32 code ) -{ - disR5900_COP2[_Rs_]( output, code ); -} - -TdisR5900F disR5900_REGIMM[] = { // Subset of disREGIMM - disBLTZ, disBGEZ, disBLTZL, disBGEZL, disNULL, disNULL, disNULL, disNULL, - disTGEI, disTGEIU, disTLTI, disTLTIU, disTEQI, disNULL, disTNEI, disNULL, - disBLTZAL, disBGEZAL, disBLTZALL, disBGEZALL, disNULL, disNULL, disNULL, disNULL, - disMTSAB, disMTSAH , disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; - -static void disREGIMM( std::string& output, u32 code ) -{ - disR5900_REGIMM[_Rt_]( output, code ); -} - -TdisR5900F disR5900_SPECIAL[] = { - disSLL, disNULL, disSRL, disSRA, disSLLV, disNULL, disSRLV, disSRAV, - disJR, disJALR, disMOVZ, disMOVN, disSYSCALL, disBREAK,disNULL, disSYNC, - disMFHI, disMTHI, disMFLO, disMTLO, disDSLLV, disNULL, disDSRLV, disDSRAV, - disMULT, disMULTU,disDIV, disDIVU, disNULL, disNULL, disNULL, disNULL, - disADD, disADDU, disSUB, disSUBU, disAND, disOR, disXOR, disNOR, - disMFSA , disMTSA, disSLT, disSLTU, disDADD, disDADDU,disDSUB, disDSUBU, - disTGE, disTGEU, disTLT, disTLTU, disTEQ, disNULL, disTNE, disNULL, - disDSLL, disNULL, disDSRL, disDSRA, disDSLL32, disNULL, disDSRL32,disDSRA32 }; - -static void disSPECIAL( std::string& output, u32 code ) -{ - disR5900_SPECIAL[_Funct_]( output, code ); -} - -TdisR5900F disR5900[] = { - disSPECIAL, disREGIMM, disJ , disJAL , disBEQ , disBNE , disBLEZ , disBGTZ , - disADDI , disADDIU , disSLTI, disSLTIU, disANDI, disORI , disXORI , disLUI , - disCOP0 , disCOP1 , disCOP2, disNULL , disBEQL, disBNEL, disBLEZL, disBGTZL, - disDADDI , disDADDIU, disLDL , disLDR , disMMI , disNULL, disLQ , disSQ , - disLB , disLH , disLWL , disLW , disLBU , disLHU , disLWR , disLWU , - disSB , disSH , disSWL , disSW , disSDL , disSDR , disSWR , disCACHE, - disNULL , disLWC1 , disNULL, disPREF , disNULL, disNULL, disLQC2 , disLD , - disNULL , disSWC1 , disNULL, disNULL , disNULL, disNULL, disSQC2 , disSD }; - -void disR5900F( std::string& output, u32 code ) -{ - disR5900[code >> 26]( output, code ); -} - -// returns a string representation of the cpuRegs current instruction. -// The return value of this method is *not* thread safe! -const std::string& DisR5900CurrentState::getString() -{ - result.clear(); - disR5900F( result, cpuRegs.code ); - return result; -} - -const char* DisR5900CurrentState::getCString() -{ - result.clear(); - disR5900F( result, cpuRegs.code ); - return result.c_str(); -} - -DisR5900CurrentState disR5900Current; - -} diff --git a/pcsx2/DebugTools/DisR5900asm.cpp b/pcsx2/DebugTools/DisR5900asm.cpp index 96dae83a6d..e968d5f75f 100644 --- a/pcsx2/DebugTools/DisR5900asm.cpp +++ b/pcsx2/DebugTools/DisR5900asm.cpp @@ -99,6 +99,8 @@ static const char * const COP2_REG_CTL[32] ={ "c2c24","c2c25","TPC","CMSAR0","FBRST","VPU-STAT","c2c30","CMSAR1" }; +const char * const R5900::COP2_VFnames[4] = { "x", "y", "z", "w" }; + void P_COP2_Unknown( std::string& output ); void P_COP2_SPECIAL2( std::string& output ); void P_COP2_SPECIAL( std::string& output ); diff --git a/pcsx2/DebugTools/DisVU0Micro.cpp b/pcsx2/DebugTools/DisVU0Micro.cpp index 060eb2a524..d9d4caa995 100644 --- a/pcsx2/DebugTools/DisVU0Micro.cpp +++ b/pcsx2/DebugTools/DisVU0Micro.cpp @@ -46,15 +46,15 @@ typedef char* (*TdisR5900F)DisFInterface; #define dNameU(i) { char op[256]; sprintf(op, "%s.%s%s%s%s", i, _X ? "x" : "", _Y ? "y" : "", _Z ? "z" : "", _W ? "w" : ""); sprintf(ostr, "%s %-7s,", ostr, op); } -#define dCP2128f(i) sprintf(ostr, "%s w=%f z=%f y=%f x=%f (%s),", ostr, VU0.VF[i].f.w, VU0.VF[i].f.z, VU0.VF[i].f.y, VU0.VF[i].f.x, disRNameCP2f[i]) -#define dCP232x(i) sprintf(ostr, "%s x=%f (%s),", ostr, VU0.VF[i].f.x, disRNameCP2f[i]) -#define dCP232y(i) sprintf(ostr, "%s y=%f (%s),", ostr, VU0.VF[i].f.y, disRNameCP2f[i]) -#define dCP232z(i) sprintf(ostr, "%s z=%f (%s),", ostr, VU0.VF[i].f.z, disRNameCP2f[i]) -#define dCP232w(i) sprintf(ostr, "%s w=%f (%s),", ostr, VU0.VF[i].f.w, disRNameCP2f[i]) +#define dCP2128f(i) sprintf(ostr, "%s w=%f z=%f y=%f x=%f (%s),", ostr, VU0.VF[i].f.w, VU0.VF[i].f.z, VU0.VF[i].f.y, VU0.VF[i].f.x, R5900::COP2_REG_FP[i]) +#define dCP232x(i) sprintf(ostr, "%s x=%f (%s),", ostr, VU0.VF[i].f.x, R5900::COP2_REG_FP[i]) +#define dCP232y(i) sprintf(ostr, "%s y=%f (%s),", ostr, VU0.VF[i].f.y, R5900::COP2_REG_FP[i]) +#define dCP232z(i) sprintf(ostr, "%s z=%f (%s),", ostr, VU0.VF[i].f.z, R5900::COP2_REG_FP[i]) +#define dCP232w(i) sprintf(ostr, "%s w=%f (%s),", ostr, VU0.VF[i].f.w, R5900::COP2_REG_FP[i]) #define dCP2ACCf() sprintf(ostr, "%s w=%f z=%f y=%f x=%f (ACC),", ostr, VU0.ACC.f.w, VU0.ACC.f.z, VU0.ACC.f.y, VU0.ACC.f.x) -#define dCP232i(i) sprintf(ostr, "%s %8.8x (%s),", ostr, VU0.VI[i].UL, disRNameCP2i[i]) -#define dCP232iF(i) sprintf(ostr, "%s %f (%s),", ostr, VU0.VI[i].F, disRNameCP2i[i]) -#define dCP232f(i, j) sprintf(ostr, "%s Q %s=%f (%s),", ostr, CP2VFnames[j], VU0.VF[i].F[j], disRNameCP2f[i]) +#define dCP232i(i) sprintf(ostr, "%s %8.8x (%s),", ostr, VU0.VI[i].UL, R5900::COP2_REG_CTL[i]) +#define dCP232iF(i) sprintf(ostr, "%s %f (%s),", ostr, VU0.VI[i].F, R5900::COP2_REG_CTL[i]) +#define dCP232f(i, j) sprintf(ostr, "%s Q %s=%f (%s),", ostr, R5900::COP2_VFnames[j], VU0.VF[i].F[j], R5900::COP2_REG_FP[i]) #define dImm5() sprintf(ostr, "%s %d,", ostr, (code >> 6) & 0x1f) #define dImm11() sprintf(ostr, "%s %d,", ostr, code & 0x7ff) #define dImm15() sprintf(ostr, "%s %d,", ostr, ( ( code >> 10 ) & 0x7800 ) | ( code & 0x7ff )) diff --git a/pcsx2/DebugTools/DisVU1Micro.cpp b/pcsx2/DebugTools/DisVU1Micro.cpp index 35c9ddee01..1362227a42 100644 --- a/pcsx2/DebugTools/DisVU1Micro.cpp +++ b/pcsx2/DebugTools/DisVU1Micro.cpp @@ -52,28 +52,28 @@ typedef char* (*TdisR5900F)DisFInterface; } #define dCP2128f(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2f[i]); \ - else sprintf(ostr, "%s w=%f (%8.8x) z=%f (%8.8x) y=%f (%8.8xl) x=%f (%8.8x) (%s),", ostr, VU1.VF[i].f.w, VU1.VF[i].UL[3], VU1.VF[i].f.z, VU1.VF[i].UL[2], VU1.VF[i].f.y, VU1.VF[i].UL[1], VU1.VF[i].f.x, VU1.VF[i].UL[0], disRNameCP2f[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_FP[i]); \ + else sprintf(ostr, "%s w=%f (%8.8x) z=%f (%8.8x) y=%f (%8.8xl) x=%f (%8.8x) (%s),", ostr, VU1.VF[i].f.w, VU1.VF[i].UL[3], VU1.VF[i].f.z, VU1.VF[i].UL[2], VU1.VF[i].f.y, VU1.VF[i].UL[1], VU1.VF[i].f.x, VU1.VF[i].UL[0], R5900::COP2_REG_FP[i]); \ } \ #define dCP232x(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2f[i]); \ - else sprintf(ostr, "%s x=%f (%s),", ostr, VU1.VF[i].f.x, disRNameCP2f[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_FP[i]); \ + else sprintf(ostr, "%s x=%f (%s),", ostr, VU1.VF[i].f.x, R5900::COP2_REG_FP[i]); \ } \ #define dCP232y(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2f[i]); \ - else sprintf(ostr, "%s y=%f (%s),", ostr, VU1.VF[i].f.y, disRNameCP2f[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_FP[i]); \ + else sprintf(ostr, "%s y=%f (%s),", ostr, VU1.VF[i].f.y, R5900::COP2_REG_FP[i]); \ } \ #define dCP232z(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2f[i]); \ - else sprintf(ostr, "%s z=%f (%s),", ostr, VU1.VF[i].f.z, disRNameCP2f[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_FP[i]); \ + else sprintf(ostr, "%s z=%f (%s),", ostr, VU1.VF[i].f.z, R5900::COP2_REG_FP[i]); \ } #define dCP232w(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2f[i]); \ - else sprintf(ostr, "%s w=%f (%s),", ostr, VU1.VF[i].f.w, disRNameCP2f[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_FP[i]); \ + else sprintf(ostr, "%s w=%f (%s),", ostr, VU1.VF[i].f.w, R5900::COP2_REG_FP[i]); \ } #define dCP2ACCf() { \ @@ -82,18 +82,18 @@ typedef char* (*TdisR5900F)DisFInterface; } \ #define dCP232i(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2i[i]); \ - else sprintf(ostr, "%s %8.8x (%s),", ostr, VU1.VI[i].UL, disRNameCP2i[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_CTL[i]); \ + else sprintf(ostr, "%s %8.8x (%s),", ostr, VU1.VI[i].UL, R5900::COP2_REG_CTL[i]); \ } #define dCP232iF(i) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, disRNameCP2i[i]); \ - else sprintf(ostr, "%s %f (%s),", ostr, VU1.VI[i].F, disRNameCP2i[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s,", ostr, R5900::COP2_REG_CTL[i]); \ + else sprintf(ostr, "%s %f (%s),", ostr, VU1.VI[i].F, R5900::COP2_REG_CTL[i]); \ } #define dCP232f(i, j) { \ - if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s%s,", ostr, disRNameCP2f[i], CP2VFnames[j]); \ - else sprintf(ostr, "%s %s=%f (%s),", ostr, CP2VFnames[j], VU1.VF[i].F[j], disRNameCP2f[i]); \ + if( !CpuVU1->IsInterpreter ) sprintf(ostr, "%s %s%s,", ostr, R5900::COP2_REG_FP[i], R5900::COP2_VFnames[j]); \ + else sprintf(ostr, "%s %s=%f (%s),", ostr, R5900::COP2_VFnames[j], VU1.VF[i].F[j], R5900::COP2_REG_FP[i]); \ } #define dImm5() sprintf(ostr, "%s %d,", ostr, (s16)((code >> 6) & 0x10 ? 0xfff0 | ((code >> 6) & 0xf) : (code >> 6) & 0xf)) diff --git a/pcsx2/Dump.cpp b/pcsx2/Dump.cpp index 4d683f15c5..5b953538e5 100644 --- a/pcsx2/Dump.cpp +++ b/pcsx2/Dump.cpp @@ -20,6 +20,7 @@ #include "iCore.h" #include "iR5900.h" #include "IPU/IPU.h" +#include "DebugTools/SymbolMap.h" #include "AppConfig.h" #include "Utilities/AsciiFile.h" @@ -210,9 +211,9 @@ void iDumpBlock( int startpc, u8 * ptr ) Path::Combine( g_Conf->Folders.Logs, wxsFormat(L"R5900dump%.8X.txt", startpc) ), L"w" ); - if( disR5900GetSym(startpc) != NULL ) + if (!symbolMap.GetLabelString(startpc).empty()) { - eff.Printf( disR5900GetSym( startpc ) ); + eff.Printf( symbolMap.GetLabelString(startpc).c_str() ); eff.Printf( "\n" ); } diff --git a/pcsx2/Elfheader.cpp b/pcsx2/Elfheader.cpp index 18dda38ce8..ede369dfb8 100644 --- a/pcsx2/Elfheader.cpp +++ b/pcsx2/Elfheader.cpp @@ -18,6 +18,7 @@ #include "GS.h" // for sending game crc to mtgs #include "Elfheader.h" +#include "DebugTools/SymbolMap.h" u32 ElfCRC; u32 ElfEntry; @@ -426,7 +427,7 @@ void ElfObject::loadSectionHeaders() for(uint i = 1; i < (secthead[i_st].sh_size / sizeof(Elf32_Sym)); i++) { if ((eS[i].st_value != 0) && (ELF32_ST_TYPE(eS[i].st_info) == 2)) { - R5900::disR5900AddSym(eS[i].st_value, &SymNames[eS[i].st_name]); + symbolMap.AddLabel(&SymNames[eS[i].st_name],eS[i].st_value); } } } @@ -529,7 +530,7 @@ int GetPS2ElfName( wxString& name ) if (buffer[i] == 0) break; buffer[i] = 0; - R5900::disR5900AddSym(addr, buffer); + symbolMap.AddLabel(buffer,addr); } fclose(fp); #endif diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj b/pcsx2/windows/VCprojects/pcsx2.vcxproj index fbba854177..6dbf66be0d 100644 --- a/pcsx2/windows/VCprojects/pcsx2.vcxproj +++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj @@ -583,7 +583,6 @@ - diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters index 1c8b19b232..6c4061cf03 100644 --- a/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters +++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters @@ -545,9 +545,6 @@ System\Ps2\Debug - - System\Ps2\Debug - System\Ps2\Debug diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj index 4c2fba59fa..4a30cfa710 100644 --- a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj +++ b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj @@ -569,7 +569,6 @@ - diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters index eafc541e54..033d48a079 100644 --- a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters +++ b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters @@ -542,9 +542,6 @@ System\Ps2\Debug - - System\Ps2\Debug - System\Ps2\Debug diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj index 4c7d0c698b..db09f1f885 100644 --- a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj +++ b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj @@ -569,7 +569,6 @@ - diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters index 1039046828..8fd9049fdf 100644 --- a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters +++ b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters @@ -542,9 +542,6 @@ System\Ps2\Debug - - System\Ps2\Debug - System\Ps2\Debug