2015-02-07 23:06:08 -05:00
|
|
|
#include "Iop_LibSd.h"
|
2015-03-29 23:57:21 -04:00
|
|
|
#include "../Log.h"
|
2015-02-07 23:06:08 -05:00
|
|
|
|
|
|
|
//Not an actual implementation of the LIBSD module
|
|
|
|
//It is only used for debugging purposes (ie.: function names)
|
|
|
|
|
|
|
|
using namespace Iop;
|
|
|
|
|
2015-05-21 00:11:32 -04:00
|
|
|
#define FUNCTION_INIT "Init"
|
2015-02-07 23:06:08 -05:00
|
|
|
#define FUNCTION_SETPARAM "SetParam"
|
|
|
|
#define FUNCTION_SETSWITCH "SetSwitch"
|
|
|
|
#define FUNCTION_SETADDR "SetAddr"
|
|
|
|
#define FUNCTION_GETADDR "GetAddr"
|
|
|
|
#define FUNCTION_SETCOREATTR "SetCoreAttr"
|
2015-03-29 23:57:21 -04:00
|
|
|
#define FUNCTION_VOICETRANS "VoiceTrans"
|
2015-05-21 00:11:32 -04:00
|
|
|
#define FUNCTION_BLOCKTRANS "BlockTrans"
|
2015-03-29 23:57:21 -04:00
|
|
|
#define FUNCTION_VOICETRANSSTATUS "VoiceTransStatus"
|
2015-05-21 00:11:32 -04:00
|
|
|
#define FUNCTION_BLOCKTRANSSTATUS "BlockTransStatus"
|
2015-03-29 23:57:21 -04:00
|
|
|
#define FUNCTION_SETTRANSINTRHANDLER "SetTransIntrHandler"
|
2015-02-07 23:06:08 -05:00
|
|
|
#define FUNCTION_SETSPU2INTRHANDLER "SetSpu2IntrHandler"
|
|
|
|
|
2015-03-29 23:57:21 -04:00
|
|
|
#define LOG_NAME "iop_libsd"
|
|
|
|
|
2015-02-07 23:06:08 -05:00
|
|
|
std::string CLibSd::GetId() const
|
|
|
|
{
|
|
|
|
return "libsd";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string CLibSd::GetFunctionName(unsigned int functionId) const
|
|
|
|
{
|
|
|
|
switch(functionId)
|
|
|
|
{
|
2015-05-21 00:11:32 -04:00
|
|
|
case 4:
|
|
|
|
return FUNCTION_INIT;
|
|
|
|
break;
|
2015-02-07 23:06:08 -05:00
|
|
|
case 5:
|
|
|
|
return FUNCTION_SETPARAM;
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
return FUNCTION_SETSWITCH;
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
return FUNCTION_SETADDR;
|
|
|
|
break;
|
|
|
|
case 10:
|
|
|
|
return FUNCTION_GETADDR;
|
|
|
|
break;
|
|
|
|
case 11:
|
|
|
|
return FUNCTION_SETCOREATTR;
|
|
|
|
break;
|
2015-03-29 23:57:21 -04:00
|
|
|
case 17:
|
|
|
|
return FUNCTION_VOICETRANS;
|
|
|
|
break;
|
2015-05-21 00:11:32 -04:00
|
|
|
case 18:
|
|
|
|
return FUNCTION_BLOCKTRANS;
|
|
|
|
break;
|
2015-03-29 23:57:21 -04:00
|
|
|
case 19:
|
|
|
|
return FUNCTION_VOICETRANSSTATUS;
|
|
|
|
break;
|
2015-05-21 00:11:32 -04:00
|
|
|
case 20:
|
|
|
|
return FUNCTION_BLOCKTRANSSTATUS;
|
|
|
|
break;
|
2015-03-29 23:57:21 -04:00
|
|
|
case 26:
|
|
|
|
return FUNCTION_SETTRANSINTRHANDLER;
|
|
|
|
break;
|
2015-02-07 23:06:08 -05:00
|
|
|
case 27:
|
|
|
|
return FUNCTION_SETSPU2INTRHANDLER;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return "unknown";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CLibSd::Invoke(CMIPS&, unsigned int)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
2015-03-29 23:57:21 -04:00
|
|
|
|
|
|
|
void CLibSd::TraceCall(CMIPS& context, unsigned int functionId)
|
|
|
|
{
|
|
|
|
switch(functionId)
|
|
|
|
{
|
|
|
|
case 4:
|
2015-05-21 00:11:32 -04:00
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_INIT "(flag = %d);\r\n",
|
2015-03-29 23:57:21 -04:00
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0);
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_SETPARAM "(entry = 0x%0.4X, value = 0x%0.4X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0);
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_SETSWITCH "(entry = 0x%0.4X, value = 0x%0.8X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0);
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_SETADDR "(entry = 0x%0.4X, value = 0x%0.8X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0);
|
|
|
|
break;
|
|
|
|
case 10:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_GETADDR "(entry = 0x%0.4X);\r\n", context.m_State.nGPR[CMIPS::A0].nV0);
|
|
|
|
break;
|
2015-05-21 00:11:32 -04:00
|
|
|
case 11:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_SETCOREATTR "(entry = 0x%0.4X, value = 0x%0.4X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0);
|
|
|
|
break;
|
2015-03-29 23:57:21 -04:00
|
|
|
case 17:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_VOICETRANS "(channel = 0x%0.4X, mode = 0x%0.4X, maddr = 0x%0.8X, saddr = 0x%0.8X, size = 0x%0.8X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0,
|
|
|
|
context.m_State.nGPR[CMIPS::A2].nV0, context.m_State.nGPR[CMIPS::A3].nV0,
|
|
|
|
context.m_State.nGPR[CMIPS::T0].nV0);
|
|
|
|
break;
|
|
|
|
case 18:
|
2015-05-21 00:11:32 -04:00
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_BLOCKTRANS "(channel = 0x%0.4X, mode = 0x%0.4X, maddr = 0x%0.8X, size = 0x%0.8X);\r\n",
|
2015-03-29 23:57:21 -04:00
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0,
|
|
|
|
context.m_State.nGPR[CMIPS::A2].nV0, context.m_State.nGPR[CMIPS::A3].nV0);
|
|
|
|
break;
|
|
|
|
case 19:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_VOICETRANSSTATUS "(channel = 0x%0.4X, flag = 0x%0.4X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0);
|
|
|
|
break;
|
|
|
|
case 20:
|
2015-05-21 00:11:32 -04:00
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_BLOCKTRANSSTATUS "(channel = 0x%0.4X, flag = 0x%0.4X);\r\n",
|
2015-03-29 23:57:21 -04:00
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0);
|
|
|
|
break;
|
|
|
|
case 26:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, FUNCTION_SETTRANSINTRHANDLER "(channel = 0x%0.4X, function = 0x%0.8X, arg = 0x%0.8X);\r\n",
|
|
|
|
context.m_State.nGPR[CMIPS::A0].nV0, context.m_State.nGPR[CMIPS::A1].nV0,
|
|
|
|
context.m_State.nGPR[CMIPS::A2].nV0);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
CLog::GetInstance().Print(LOG_NAME, "unknownlibsd(%d);\r\n", functionId);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|