SPARC: Make SPARC's ISA's clear function initialize everything it should.

Also make it not set some pointers to NULL potentially introducing a memory
leak. That should be done in the constructor.
This commit is contained in:
Gabe Black 2010-10-10 20:38:05 -07:00
parent 63fa65613e
commit 157d6f9c2f
3 changed files with 23 additions and 3 deletions

View file

@ -31,6 +31,8 @@
#ifndef __ARCH_ALPHA_ISA_HH__
#define __ARCH_ALPHA_ISA_HH__
#include <string.h>
#include <string>
#include <iostream>

View file

@ -99,6 +99,7 @@ ISA::clear()
memset(tnpc, 0, sizeof(tnpc));
memset(tstate, 0, sizeof(tstate));
memset(tt, 0, sizeof(tt));
tba = 0;
pstate = 0;
tl = 0;
pil = 0;
@ -123,10 +124,21 @@ ISA::clear()
lsuCtrlReg = 0;
memset(scratchPad, 0, sizeof(scratchPad));
cpu_mondo_head = 0;
cpu_mondo_tail = 0;
dev_mondo_head = 0;
dev_mondo_tail = 0;
res_error_head = 0;
res_error_tail = 0;
nres_error_head = 0;
nres_error_tail = 0;
#if FULL_SYSTEM
tickCompare = NULL;
sTickCompare = NULL;
hSTickCompare = NULL;
// If one of these events is active, it's not obvious to me how to get
// rid of it cleanly. For now we'll just assert that they're not.
if (tickCompare != NULL && sTickCompare != NULL && hSTickCompare != NULL)
panic("Tick comparison event active when clearing the ISA object.\n");
#endif
}

View file

@ -205,6 +205,12 @@ namespace SparcISA
ISA()
{
#if FULL_SYSTEM
tickCompare = NULL;
sTickCompare = NULL;
hSTickCompare = NULL;
#endif
clear();
}
};