Make the "on change" checkbox for memchecks work.

But, for now, only on sw and similar instructions, the rest don't work
yet and just always break.
This commit is contained in:
Unknown W. Brackets committed 2014-01-26 11:57:39 -08:00
1 parent a45a2cafa3
commit fe2b62c27d
8 files changed
+184 -42

No files matched your search

+11 -22
View File
@@ -182,10 +182,13 @@ void BreakpointWindow::addBreakpoint()
if (memory)
{
// add memcheck
MemCheckCondition cond;
if (read && write) cond = MEMCHECK_READWRITE;
else if (read) cond = MEMCHECK_READ;
else cond = MEMCHECK_WRITE;
int cond = 0;
if (read)
cond |= MEMCHECK_READ;
if (write)
cond |= MEMCHECK_WRITE;
if (onChange)
cond |= MEMCHECK_WRITE_ONCHANGE;
MemCheckResult result;
if (log && enabled) result = MEMCHECK_BOTH;
@@ -193,7 +196,7 @@ void BreakpointWindow::addBreakpoint()
else if (enabled) result = MEMCHECK_BREAK;
else result = MEMCHECK_IGNORE;
CBreakPoints::AddMemCheck(address,address+size,cond,result);
CBreakPoints::AddMemCheck(address, address + size, (MemCheckCondition)cond, result);
} else {
// add breakpoint
CBreakPoints::AddBreakPoint(address,false);
@@ -218,23 +221,9 @@ void BreakpointWindow::loadFromMemcheck(MemCheck& memcheck)
{
memory = true;
switch (memcheck.cond)
{
case MEMCHECK_READWRITE:
read = write = true;
break;
case MEMCHECK_READ:
read = true;
write = false;
break;
case MEMCHECK_WRITE:
read = false;
write = true;
break;
default:
read = write = false;
break;
}
read = (memcheck.cond & MEMCHECK_READ) != 0;
write = (memcheck.cond & MEMCHECK_WRITE) != 0;
onChange = (memcheck.cond & MEMCHECK_WRITE_ONCHANGE) != 0;
switch (memcheck.result)
{