[Debugger] Add breakpoints for specific interrupts and FP exceptions
This commit is contained in:
parent
b57250427b
commit
2137b365bb
|
@ -350,6 +350,9 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
|
|||
AddHandler(Debugger_CPULoggingEnabled, new CSettingTypeApplication("Debugger", "Enable CPU Logging", false));
|
||||
AddHandler(Debugger_CPULogBufferSize, new CSettingTypeApplication("Debugger", "CPU Log Buffer Size", (uint32_t)1024));
|
||||
AddHandler(Debugger_ExceptionBreakpoints, new CSettingTypeApplication("Debugger", "Exception Breakpoints", (uint32_t)0));
|
||||
AddHandler(Debugger_FpExceptionBreakpoints, new CSettingTypeApplication("Debugger", "FP Exception Breakpoints", (uint32_t)0));
|
||||
AddHandler(Debugger_IntrBreakpoints, new CSettingTypeApplication("Debugger", "Interrupt Breakpoints", (uint32_t)0));
|
||||
AddHandler(Debugger_RcpIntrBreakpoints, new CSettingTypeApplication("Debugger", "RCP Interrupt Breakpoints", (uint32_t)0));
|
||||
AddHandler(Debugger_DebugLanguage, new CSettingTypeApplication("Debugger", "Debug Language", false));
|
||||
AddHandler(Debugger_ShowDivByZero, new CSettingTypeApplication("Debugger", "Show Div by zero", false));
|
||||
AddHandler(Debugger_AppLogFlush, new CSettingTypeApplication("Logging", "Log Auto Flush", (uint32_t)false));
|
||||
|
|
|
@ -30,6 +30,9 @@ bool CDebugSettings::m_HaveReadBP = false;
|
|||
bool CDebugSettings::m_bShowPifRamErrors = false;
|
||||
bool CDebugSettings::m_bCPULoggingEnabled = false;
|
||||
uint32_t CDebugSettings::m_ExceptionBreakpoints = 0;
|
||||
uint32_t CDebugSettings::m_FpExceptionBreakpoints = 0;
|
||||
uint32_t CDebugSettings::m_IntrBreakpoints = 0;
|
||||
uint32_t CDebugSettings::m_RcpIntrBreakpoints = 0;
|
||||
|
||||
CDebugSettings::CDebugSettings()
|
||||
{
|
||||
|
@ -51,6 +54,9 @@ CDebugSettings::CDebugSettings()
|
|||
g_Settings->RegisterChangeCB(Debugger_ShowPifErrors, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_CPULoggingEnabled, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_ExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_FpExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_IntrBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_RcpIntrBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
|
||||
RefreshSettings();
|
||||
}
|
||||
|
@ -74,6 +80,9 @@ CDebugSettings::~CDebugSettings()
|
|||
g_Settings->UnregisterChangeCB(Debugger_ShowPifErrors, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_CPULoggingEnabled, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_ExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_FpExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_IntrBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_RcpIntrBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -93,6 +102,9 @@ void CDebugSettings::RefreshSettings()
|
|||
m_bShowPifRamErrors = m_HaveDebugger && g_Settings->LoadBool(Debugger_ShowPifErrors);
|
||||
m_bCPULoggingEnabled = m_HaveDebugger && g_Settings->LoadBool(Debugger_CPULoggingEnabled);
|
||||
m_ExceptionBreakpoints = m_HaveDebugger ? g_Settings->LoadDword(Debugger_ExceptionBreakpoints) : 0;
|
||||
m_FpExceptionBreakpoints = m_HaveDebugger ? g_Settings->LoadDword(Debugger_FpExceptionBreakpoints) : 0;
|
||||
m_IntrBreakpoints = m_HaveDebugger ? g_Settings->LoadDword(Debugger_IntrBreakpoints) : 0;
|
||||
m_RcpIntrBreakpoints = m_HaveDebugger ? g_Settings->LoadDword(Debugger_RcpIntrBreakpoints) : 0;
|
||||
|
||||
m_Debugging = m_HaveDebugger && (m_HaveExecutionBP || m_WaitingForStep || m_HaveWriteBP || m_HaveReadBP);
|
||||
}
|
|
@ -33,6 +33,9 @@ public:
|
|||
static inline bool bShowPifRamErrors(void) { return m_bShowPifRamErrors; }
|
||||
static inline bool bCPULoggingEnabled(void) { return m_bCPULoggingEnabled; }
|
||||
static inline uint32_t ExceptionBreakpoints(void) { return m_ExceptionBreakpoints; }
|
||||
static inline uint32_t FpExceptionBreakpoints(void) { return m_FpExceptionBreakpoints; }
|
||||
static inline uint32_t IntrBreakpoints(void) { return m_IntrBreakpoints; }
|
||||
static inline uint32_t RcpIntrBreakpoints(void) { return m_RcpIntrBreakpoints; }
|
||||
|
||||
private:
|
||||
static void StaticRefreshSettings(CDebugSettings * _this)
|
||||
|
@ -57,6 +60,9 @@ private:
|
|||
static bool m_bShowPifRamErrors;
|
||||
static bool m_bCPULoggingEnabled;
|
||||
static uint32_t m_ExceptionBreakpoints;
|
||||
static uint32_t m_FpExceptionBreakpoints;
|
||||
static uint32_t m_IntrBreakpoints;
|
||||
static uint32_t m_RcpIntrBreakpoints;
|
||||
|
||||
static int32_t m_RefCount;
|
||||
static bool m_Registered;
|
||||
|
|
|
@ -260,6 +260,9 @@ enum SettingID
|
|||
Debugger_CPULoggingEnabled,
|
||||
Debugger_CPULogBufferSize,
|
||||
Debugger_ExceptionBreakpoints,
|
||||
Debugger_FpExceptionBreakpoints,
|
||||
Debugger_IntrBreakpoints,
|
||||
Debugger_RcpIntrBreakpoints,
|
||||
|
||||
//Trace
|
||||
Debugger_TraceMD5,
|
||||
|
|
|
@ -23,6 +23,38 @@ CDebugExcBreakpoints::ExcCheckboxMeta CDebugExcBreakpoints::ExcCheckboxMap[] = {
|
|||
{ 0, 0 }
|
||||
};
|
||||
|
||||
CDebugExcBreakpoints::ExcCheckboxMeta CDebugExcBreakpoints::FpExcCheckboxMap[] = {
|
||||
{ IDC_CHK_FP_CI, (1 << 0) },
|
||||
{ IDC_CHK_FP_CU, (1 << 1) },
|
||||
{ IDC_CHK_FP_CO, (1 << 2) },
|
||||
{ IDC_CHK_FP_CZ, (1 << 3) },
|
||||
{ IDC_CHK_FP_CV, (1 << 4) },
|
||||
{ IDC_CHK_FP_CE, (1 << 5) },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
CDebugExcBreakpoints::ExcCheckboxMeta CDebugExcBreakpoints::IntrCheckboxMap[] = {
|
||||
{ IDC_CHK_INTR_IP0, (1 << 0) },
|
||||
{ IDC_CHK_INTR_IP1, (1 << 1) },
|
||||
{ IDC_CHK_INTR_IP2, (1 << 2) },
|
||||
{ IDC_CHK_INTR_IP3, (1 << 3) },
|
||||
{ IDC_CHK_INTR_IP4, (1 << 4) },
|
||||
{ IDC_CHK_INTR_IP5, (1 << 5) },
|
||||
{ IDC_CHK_INTR_IP6, (1 << 6) },
|
||||
{ IDC_CHK_INTR_IP7, (1 << 7) },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
CDebugExcBreakpoints::ExcCheckboxMeta CDebugExcBreakpoints::RcpIntrCheckboxMap[] = {
|
||||
{ IDC_CHK_INTR_SP, (1 << 0) },
|
||||
{ IDC_CHK_INTR_SI, (1 << 1) },
|
||||
{ IDC_CHK_INTR_AI, (1 << 2) },
|
||||
{ IDC_CHK_INTR_VI, (1 << 3) },
|
||||
{ IDC_CHK_INTR_PI, (1 << 4) },
|
||||
{ IDC_CHK_INTR_DP, (1 << 5) },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
CDebugExcBreakpoints::CDebugExcBreakpoints(CDebuggerUI* debugger) :
|
||||
CDebugDialog<CDebugExcBreakpoints>(debugger)
|
||||
{
|
||||
|
@ -36,17 +68,18 @@ LRESULT CDebugExcBreakpoints::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPA
|
|||
{
|
||||
DlgSavePos_Init(DebuggerUI_ExceptionBPPos);
|
||||
|
||||
uint32_t excBreakpoints = g_Settings->LoadDword(Debugger_ExceptionBreakpoints);
|
||||
InitCheckboxes(ExcCheckboxMap, Debugger_ExceptionBreakpoints, true);
|
||||
InitCheckboxes(FpExcCheckboxMap, Debugger_FpExceptionBreakpoints);
|
||||
InitCheckboxes(IntrCheckboxMap, Debugger_IntrBreakpoints);
|
||||
InitCheckboxes(RcpIntrCheckboxMap, Debugger_RcpIntrBreakpoints);
|
||||
|
||||
for (int i = 0; ExcCheckboxMap[i].ctrlId != 0; i++)
|
||||
{
|
||||
uint32_t excBit = (1 << ExcCheckboxMap[i].exc);
|
||||
bool intrEnabled = g_Settings->LoadDword(Debugger_ExceptionBreakpoints) & 0x01;
|
||||
bool rcpIntrEnabled = g_Settings->LoadDword(Debugger_IntrBreakpoints) & 0x04;
|
||||
bool fpExcEnabled = g_Settings->LoadDword(Debugger_ExceptionBreakpoints) & (1 << 15);
|
||||
|
||||
if (excBreakpoints & excBit)
|
||||
{
|
||||
SendDlgItemMessage(ExcCheckboxMap[i].ctrlId, BM_SETCHECK, BST_CHECKED, 0);
|
||||
}
|
||||
}
|
||||
EnableCheckboxes(IntrCheckboxMap, intrEnabled);
|
||||
EnableCheckboxes(RcpIntrCheckboxMap, intrEnabled && rcpIntrEnabled);
|
||||
EnableCheckboxes(FpExcCheckboxMap, fpExcEnabled);
|
||||
|
||||
LoadWindowPos();
|
||||
WindowCreated();
|
||||
|
@ -58,7 +91,6 @@ LRESULT CDebugExcBreakpoints::OnDestroy(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
LRESULT CDebugExcBreakpoints::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND, BOOL& /*bHandled*/)
|
||||
{
|
||||
switch (wID)
|
||||
|
@ -69,27 +101,29 @@ LRESULT CDebugExcBreakpoints::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND, BO
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
for (int i = 0; ExcCheckboxMap[i].ctrlId != 0; i++)
|
||||
bool bChecked = (SendMessage(GetDlgItem(wID), BM_GETSTATE, 0, 0) & BST_CHECKED) != 0;
|
||||
|
||||
if (wID == IDC_CHK_INT)
|
||||
{
|
||||
if (ExcCheckboxMap[i].ctrlId == wID)
|
||||
{
|
||||
uint32_t excBit = (1 << ExcCheckboxMap[i].exc);
|
||||
bool bChecked = (SendMessage(GetDlgItem(wID), BM_GETSTATE, 0, 0) & BST_CHECKED) != 0;
|
||||
uint32_t excBreakpoints = g_Settings->LoadDword(Debugger_ExceptionBreakpoints);
|
||||
|
||||
if (bChecked)
|
||||
{
|
||||
excBreakpoints |= excBit;
|
||||
}
|
||||
else
|
||||
{
|
||||
excBreakpoints &= ~excBit;
|
||||
}
|
||||
|
||||
g_Settings->SaveDword(Debugger_ExceptionBreakpoints, excBreakpoints);
|
||||
break;
|
||||
}
|
||||
EnableCheckboxes(IntrCheckboxMap, bChecked);
|
||||
bool toggleRcpIntr = bChecked && (g_Settings->LoadDword(Debugger_IntrBreakpoints) & 0x04);
|
||||
EnableCheckboxes(RcpIntrCheckboxMap, toggleRcpIntr);
|
||||
}
|
||||
|
||||
if (wID == IDC_CHK_FPE)
|
||||
{
|
||||
EnableCheckboxes(FpExcCheckboxMap, bChecked);
|
||||
}
|
||||
|
||||
if (wID == IDC_CHK_INTR_IP2)
|
||||
{
|
||||
EnableCheckboxes(RcpIntrCheckboxMap, bChecked);
|
||||
}
|
||||
|
||||
UpdateBpSetting(ExcCheckboxMap, Debugger_ExceptionBreakpoints, wID, bChecked, true);
|
||||
UpdateBpSetting(FpExcCheckboxMap, Debugger_FpExceptionBreakpoints, wID, bChecked);
|
||||
UpdateBpSetting(IntrCheckboxMap, Debugger_IntrBreakpoints, wID, bChecked);
|
||||
UpdateBpSetting(RcpIntrCheckboxMap, Debugger_RcpIntrBreakpoints, wID, bChecked);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -98,3 +132,50 @@ void CDebugExcBreakpoints::OnExitSizeMove(void)
|
|||
{
|
||||
SaveWindowPos(0);
|
||||
}
|
||||
|
||||
void CDebugExcBreakpoints::InitCheckboxes(ExcCheckboxMeta* checkboxMap, SettingID settingID, bool bShift)
|
||||
{
|
||||
uint32_t excBits = g_Settings->LoadDword(settingID);
|
||||
|
||||
for (int i = 0; checkboxMap[i].ctrlId != 0; i++)
|
||||
{
|
||||
uint32_t excBit = bShift ? (1 << checkboxMap[i].exc) : checkboxMap[i].exc;
|
||||
|
||||
if (excBits & excBit)
|
||||
{
|
||||
SendDlgItemMessage(checkboxMap[i].ctrlId, BM_SETCHECK, BST_CHECKED, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CDebugExcBreakpoints::UpdateBpSetting(ExcCheckboxMeta* checkboxMap, SettingID settingID, WORD wID, bool bChecked, bool bShift)
|
||||
{
|
||||
for (int i = 0; checkboxMap[i].ctrlId != 0; i++)
|
||||
{
|
||||
if (checkboxMap[i].ctrlId == wID)
|
||||
{
|
||||
uint32_t excBit = bShift ? (1 << checkboxMap[i].exc) : checkboxMap[i].exc;
|
||||
uint32_t bits = g_Settings->LoadDword(settingID);
|
||||
|
||||
if (bChecked)
|
||||
{
|
||||
bits |= excBit;
|
||||
}
|
||||
else
|
||||
{
|
||||
bits &= ~excBit;
|
||||
}
|
||||
|
||||
g_Settings->SaveDword(settingID, bits);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CDebugExcBreakpoints::EnableCheckboxes(ExcCheckboxMeta* checkboxMap, bool bEnable)
|
||||
{
|
||||
for (int i = 0; checkboxMap[i].ctrlId != 0; i++)
|
||||
{
|
||||
::EnableWindow(GetDlgItem(checkboxMap[i].ctrlId), bEnable);
|
||||
}
|
||||
}
|
|
@ -21,6 +21,13 @@ public:
|
|||
|
||||
private:
|
||||
static ExcCheckboxMeta ExcCheckboxMap[];
|
||||
static ExcCheckboxMeta FpExcCheckboxMap[];
|
||||
static ExcCheckboxMeta IntrCheckboxMap[];
|
||||
static ExcCheckboxMeta RcpIntrCheckboxMap[];
|
||||
|
||||
void InitCheckboxes(ExcCheckboxMeta* checkboxMap, SettingID settingID, bool bShift = false);
|
||||
void UpdateBpSetting(ExcCheckboxMeta* checkboxMap, SettingID settingID, WORD wID, bool bChecked, bool bShift = false);
|
||||
void EnableCheckboxes(ExcCheckboxMeta* checkboxMap, bool bEnable);
|
||||
|
||||
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
|
||||
LRESULT OnClicked(WORD wNotifyCode, WORD wID, HWND /*hWndCtl*/, BOOL& bHandled);
|
||||
|
|
|
@ -655,21 +655,58 @@ void CDebuggerUI::TLBChanged()
|
|||
Debug_RefreshTLBWindow();
|
||||
}
|
||||
|
||||
|
||||
// Exception handling - break on exception vector if exception bp is set
|
||||
void CDebuggerUI::HandleCPUException(void)
|
||||
{
|
||||
int exc = (g_Reg->CAUSE_REGISTER >> 2) & 0x1F;
|
||||
|
||||
if ((CDebugSettings::ExceptionBreakpoints() & (1 << exc)))
|
||||
int intr = (g_Reg->CAUSE_REGISTER >> 8) & 0xFF;
|
||||
int fpExc = (g_Reg->m_FPCR[31] >> 12) & 0x3F;
|
||||
int rcpIntr = g_Reg->MI_INTR_REG & 0x2F;
|
||||
|
||||
if ((ExceptionBreakpoints() & (1 << exc)))
|
||||
{
|
||||
if (CDebugSettings::bCPULoggingEnabled())
|
||||
if (exc == 15) // floating-point exception
|
||||
{
|
||||
g_Debugger->OpenCPULogWindow();
|
||||
if (fpExc & FpExceptionBreakpoints())
|
||||
{
|
||||
goto have_bp;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (exc == 0) // interrupt exception
|
||||
{
|
||||
if (intr & IntrBreakpoints())
|
||||
{
|
||||
if (intr & 0x04) // RCP interrupt (IP2)
|
||||
{
|
||||
if (rcpIntr & RcpIntrBreakpoints())
|
||||
{
|
||||
goto have_bp;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else // other interrupts
|
||||
{
|
||||
goto have_bp;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
else // other exceptions
|
||||
{
|
||||
goto have_bp;
|
||||
}
|
||||
|
||||
g_Settings->SaveBool(Debugger_SteppingOps, true);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
have_bp:
|
||||
if (bCPULoggingEnabled())
|
||||
{
|
||||
g_Debugger->OpenCPULogWindow();
|
||||
}
|
||||
|
||||
g_Settings->SaveBool(Debugger_SteppingOps, true);
|
||||
}
|
||||
|
||||
void CDebuggerUI::HandleCartToRamDMA(void)
|
||||
|
@ -749,7 +786,10 @@ void CDebuggerUI::CPUStepStarted()
|
|||
if (pc == 0x80000000 || pc == 0x80000080 ||
|
||||
pc == 0xA0000100 || pc == 0x80000180)
|
||||
{
|
||||
HandleCPUException();
|
||||
if ((g_Reg->STATUS_REGISTER >> 1) & 3) // if exl/erl bits are set
|
||||
{
|
||||
HandleCPUException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1329,29 +1329,54 @@ BEGIN
|
|||
PUSHBUTTON "Cancel",IDCANCEL,65,114,50,14
|
||||
END
|
||||
|
||||
IDD_Debugger_ExceptionBP DIALOGEX 0, 0, 213, 107
|
||||
IDD_Debugger_ExceptionBP DIALOGEX 0, 0, 269, 221
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "CPU Exception Breakpoints"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "Interrupt",IDC_CHK_INT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,78,11
|
||||
CONTROL "TLB Mod",IDC_CHK_MOD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,18,78,11
|
||||
CONTROL "Read TLB Miss",IDC_CHK_RMISS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,28,80,11
|
||||
CONTROL "Write TLB Miss",IDC_CHK_WMISS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,38,80,11
|
||||
CONTROL "Read Address Error",IDC_CHK_RADE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,48,76,11
|
||||
CONTROL "Write Address Error",IDC_CHK_WADE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,58,78,11
|
||||
CONTROL "Instruction Bus Error",IDC_CHK_IBE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,68,79,11
|
||||
CONTROL "Data Bus Error",IDC_CHK_DBE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,78,59,11
|
||||
CONTROL "SYSCALL",IDC_CHK_SYSCALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,59,11
|
||||
CONTROL "BREAK",IDC_CHK_BREAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,8,59,11
|
||||
CONTROL "Illegal Instruction",IDC_CHK_II,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,18,71,11
|
||||
CONTROL "Coprocessor Unusable",IDC_CHK_CPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,28,86,11
|
||||
CONTROL "Overflow",IDC_CHK_OV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,38,59,11
|
||||
CONTROL "Trap exception",IDC_CHK_TRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,48,59,11
|
||||
CONTROL "Virt. Coherency on Inst. fetch",IDC_CHK_VCEI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,58,107,11
|
||||
CONTROL "Floating Point Exception",IDC_CHK_FPE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,68,91,11
|
||||
CONTROL "Watchpoint reference",IDC_CHK_WATCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,78,87,11
|
||||
CONTROL "Virt. Coherency on data read",IDC_CHK_VCED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,88,106,11
|
||||
CONTROL "Interrupt",IDC_CHK_INT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,15,78,11
|
||||
CONTROL "TLB Mod",IDC_CHK_MOD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,25,78,11
|
||||
CONTROL "Read TLB Miss",IDC_CHK_RMISS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,35,80,11
|
||||
CONTROL "Write TLB Miss",IDC_CHK_WMISS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,45,80,11
|
||||
CONTROL "Read Address Error",IDC_CHK_RADE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,55,76,11
|
||||
CONTROL "Write Address Error",IDC_CHK_WADE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,65,78,11
|
||||
CONTROL "Instruction Bus Error",IDC_CHK_IBE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,75,79,11
|
||||
CONTROL "Data Bus Error",IDC_CHK_DBE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,85,59,11
|
||||
CONTROL "SYSCALL",IDC_CHK_SYSCALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,95,59,11
|
||||
CONTROL "BREAK",IDC_CHK_BREAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,15,59,11
|
||||
CONTROL "Illegal Instruction",IDC_CHK_II,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,25,71,11
|
||||
CONTROL "Coprocessor Unusable",IDC_CHK_CPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,35,86,11
|
||||
CONTROL "Overflow",IDC_CHK_OV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,45,59,11
|
||||
CONTROL "Trap exception",IDC_CHK_TRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,55,59,11
|
||||
CONTROL "Virtual Coherency on Instruction Fetch",IDC_CHK_VCEI,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,65,135,11
|
||||
CONTROL "Floating Point Exception",IDC_CHK_FPE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,75,91,11
|
||||
CONTROL "Watchpoint Reference",IDC_CHK_WATCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,85,87,11
|
||||
CONTROL "Virtual Coherency on Data Read",IDC_CHK_VCED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,95,116,11
|
||||
GROUPBOX "Exceptions",IDC_STATIC,3,4,261,107
|
||||
GROUPBOX "IP2 Interrupts",IDC_STATIC,199,114,65,102
|
||||
CONTROL "SP Interrupt",IDC_CHK_INTR_SP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,124,53,13
|
||||
CONTROL "SI Interrupt",IDC_CHK_INTR_SI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,135,53,13
|
||||
CONTROL "AI Interrupt",IDC_CHK_INTR_AI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,145,53,13
|
||||
CONTROL "VI Interrupt",IDC_CHK_INTR_VI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,156,53,13
|
||||
CONTROL "PI Interrupt",IDC_CHK_INTR_PI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,167,53,13
|
||||
CONTROL "DP Interrupt",IDC_CHK_INTR_DP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,178,53,13
|
||||
GROUPBOX "Interrupts",IDC_STATIC,113,114,83,102
|
||||
CONTROL "IP0 Software",IDC_CHK_INTR_IP0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,124,53,13
|
||||
CONTROL "IP1 Software",IDC_CHK_INTR_IP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,135,53,13
|
||||
CONTROL "IP2 RCP",IDC_CHK_INTR_IP2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,145,65,13
|
||||
CONTROL "IP3 Cartridge",IDC_CHK_INTR_IP3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,156,60,13
|
||||
CONTROL "IP4 Pre-NMI",IDC_CHK_INTR_IP4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,167,61,13
|
||||
CONTROL "IP5 RDB Read",IDC_CHK_INTR_IP5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,178,63,13
|
||||
CONTROL "IP6 RDB Write",IDC_CHK_INTR_IP6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,189,63,13
|
||||
CONTROL "IP7 Timer",IDC_CHK_INTR_IP7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,200,63,13
|
||||
GROUPBOX "Floating Point Exceptions",IDC_STATIC,4,114,106,103
|
||||
CONTROL "Unimplemented Operation",IDC_CHK_FP_CE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,178,96,13
|
||||
CONTROL "Invalid Operation",IDC_CHK_FP_CV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,167,80,13
|
||||
CONTROL "Division by Zero",IDC_CHK_FP_CZ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,156,80,13
|
||||
CONTROL "Overflow",IDC_CHK_FP_CO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,145,80,13
|
||||
CONTROL "Underflow",IDC_CHK_FP_CU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,135,80,13
|
||||
CONTROL "Inexact Operation",IDC_CHK_FP_CI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,124,80,13
|
||||
END
|
||||
|
||||
IDD_Debugger_Search_SetValue DIALOGEX 0, 0, 109, 56
|
||||
|
@ -1837,9 +1862,9 @@ BEGIN
|
|||
IDD_Debugger_ExceptionBP, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 206
|
||||
RIGHTMARGIN, 262
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 100
|
||||
BOTTOMMARGIN, 214
|
||||
END
|
||||
|
||||
IDD_Debugger_Search_SetValue, DIALOG
|
||||
|
|
|
@ -697,6 +697,26 @@
|
|||
#define IDC_IPLDIR_TL_TXT 1546
|
||||
#define IDC_DISKSAVETYPE_TXT 1547
|
||||
#define IDC_DISKSAVETYPE 1548
|
||||
#define IDC_CHK_INTR_SP 1549
|
||||
#define IDC_CHK_INTR_SI 1550
|
||||
#define IDC_CHK_INTR_AI 1551
|
||||
#define IDC_CHK_INTR_VI 1552
|
||||
#define IDC_CHK_INTR_PI 1553
|
||||
#define IDC_CHK_INTR_DP 1554
|
||||
#define IDC_CHK_INTR_IP0 1555
|
||||
#define IDC_CHK_INTR_IP1 1556
|
||||
#define IDC_CHK_INTR_IP2 1557
|
||||
#define IDC_CHK_INTR_IP3 1558
|
||||
#define IDC_CHK_INTR_IP4 1559
|
||||
#define IDC_CHK_INTR_IP5 1560
|
||||
#define IDC_CHK_INTR_IP6 1561
|
||||
#define IDC_CHK_INTR_IP7 1562
|
||||
#define IDC_CHK_FP_CE 1563
|
||||
#define IDC_CHK_FP_CV 1564
|
||||
#define IDC_CHK_FP_CZ 1565
|
||||
#define IDC_CHK_FP_CO 1566
|
||||
#define IDC_CHK_FP_CU 1567
|
||||
#define IDC_CHK_FP_CI 1568
|
||||
#define ID_POPUPMENU_PLAYGAMEWITHDISK 40008
|
||||
#define ID_POPUPMENU_ADDSYMBOL 40013
|
||||
#define ID_POPUPMENU_VIEWDISASM 40017
|
||||
|
@ -757,7 +777,7 @@
|
|||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 219
|
||||
#define _APS_NEXT_COMMAND_VALUE 40092
|
||||
#define _APS_NEXT_CONTROL_VALUE 1549
|
||||
#define _APS_NEXT_CONTROL_VALUE 1569
|
||||
#define _APS_NEXT_SYMED_VALUE 102
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue