1. If you don't have SCons version 0.96.91 or newer, get it from
http://wwww.scons.org.
-2. If you don't have SWIG version 0.96.91 or newer, get it from
+2. If you don't have SWIG version 1.3.28 or newer, get it from
http://wwww.swig.org.
3. In this directory, type 'scons build/ALPHA_SE/tests/debug/quick'. This
dev/platform.cc
dev/simconsole.cc
dev/simple_disk.cc
- dev/sinic.cc
dev/tsunami.cc
dev/tsunami_cchip.cc
dev/tsunami_io.cc
sim/pseudo_inst.cc
''')
+ #dev/sinic.cc
if env['TARGET_ISA'] == 'alpha':
/** Add a function-based event to PALcode. */
template <class T>
- T *AlphaSystem::addPalFuncEvent(const char *lbl)
+ T *addPalFuncEvent(const char *lbl)
{
return addFuncEvent<T>(palSymtab, lbl);
}
/** Add a function-based event to the console code. */
template <class T>
- T *AlphaSystem::addConsoleFuncEvent(const char *lbl)
+ T *addConsoleFuncEvent(const char *lbl)
{
return addFuncEvent<T>(consoleSymtab, lbl);
}
#include "cpu/base.hh"
#include "cpu/exetrace.hh"
#include "sim/sim_exit.hh"
+#include "mem/packet_impl.hh"
using namespace MipsISA;
}};
,{{0}},{{0}},{{0}},{{0}});
0x1E: udivcc({{
uint32_t resTemp, val2 = Rs2_or_imm13.udw;
- int32_t overflow;
+ int32_t overflow = 0;
if(val2 == 0) fault = new DivisionByZero;
else
{
);
0x1F: sdivcc({{
int32_t resTemp, val2 = Rs2_or_imm13.sdw;
- int32_t overflow, underflow;
+ int32_t overflow = 0, underflow = 0;
if(val2 == 0) fault = new DivisionByZero;
else
{
overflow = (resTemp<63:31> != 0);
underflow = (resTemp<63:> && resTemp<62:31> != 0xFFFFFFFF);
if(overflow) Rd = resTemp = 0x7FFFFFFF;
- else if(underflow) Rd = resTemp = 0xFFFFFFFF80000000ULL;
+ else if(underflow) resTemp = Rd = 0xFFFFFFFF80000000ULL;
else Rd = resTemp;
} }},
{{0}},
);
0x22: taddcctv({{
int64_t resTemp, val2 = Rs2_or_imm13;
- Rd = Rs1 + val2;
+ Rd = resTemp = Rs1 + val2;
int32_t overflow = Rs1<1:0> || val2<1:0> ||
(Rs1<31:> == val2<31:> && val2<31:> != Rd<31:>);
if(overflow) fault = new TagOverflow;}},
#include "base/stats/visit.hh"
namespace Stats {
-namespace Detail {
Visit::Visit()
{}
Visit::~Visit()
{}
-/* namespace Detail */ }
/* namespace Stats */ }
#ifndef __BASE_TIMEBUF_HH__
#define __BASE_TIMEBUF_HH__
+#include <cassert>
#include <vector>
template <class T>
// Number of sectors on disk
driveID.atap_capacity = lba_size;
// Multiword DMA mode 2 and below supported
- driveID.atap_dmamode_supp = 0x400;
+ driveID.atap_dmamode_supp = 0x4;
// Set PIO mode 4 and 3 supported
driveID.atap_piomode_supp = 0x3;
// Set DMA mode 4 and below supported
}
+/* namespace Sinic */ }
-BEGIN_DECLARE_SIM_OBJECT_PARAMS(Interface)
+BEGIN_DECLARE_SIM_OBJECT_PARAMS_WNS(Sinic, SinicInterface)
SimObjectParam<EtherInt *> peer;
- SimObjectParam<Device *> device;
-
-END_DECLARE_SIM_OBJECT_PARAMS(Interface)
+ SimObjectParam<Sinic::Device *> device;
+END_DECLARE_SIM_OBJECT_PARAMS_WNS(Sinic, SinicInterface)
-BEGIN_INIT_SIM_OBJECT_PARAMS(Interface)
+BEGIN_INIT_SIM_OBJECT_PARAMS_WNS(Sinic, SinicInterface)
INIT_PARAM_DFLT(peer, "peer interface", NULL),
INIT_PARAM(device, "Ethernet device of this interface")
-END_INIT_SIM_OBJECT_PARAMS(Interface)
+END_INIT_SIM_OBJECT_PARAMS_WNS(Sinic, SinicInterface)
-CREATE_SIM_OBJECT(Interface)
+CREATE_SIM_OBJECT_WNS(Sinic, SinicInterface)
{
- Interface *dev_int = new Interface(getInstanceName(), device);
+ Sinic::Interface *dev_int = new Sinic::Interface(getInstanceName(), device);
EtherInt *p = (EtherInt *)peer;
if (p) {
return dev_int;
}
-REGISTER_SIM_OBJECT("SinicInt", Interface)
+REGISTER_SIM_OBJECT_WNS(Sinic, "SinicInt", SinicInterface)
-BEGIN_DECLARE_SIM_OBJECT_PARAMS(Device)
+BEGIN_DECLARE_SIM_OBJECT_PARAMS_WNS(Sinic, SinicDevice)
SimObjectParam<System *> system;
Param<bool> delay_copy;
Param<bool> virtual_addr;
-END_DECLARE_SIM_OBJECT_PARAMS(Device)
+END_DECLARE_SIM_OBJECT_PARAMS_WNS(Sinic, SinicDevice)
-BEGIN_INIT_SIM_OBJECT_PARAMS(Device)
+BEGIN_INIT_SIM_OBJECT_PARAMS_WNS(Sinic, SinicDevice)
INIT_PARAM(system, "System pointer"),
INIT_PARAM(delay_copy, ""),
INIT_PARAM(virtual_addr, "")
-END_INIT_SIM_OBJECT_PARAMS(Device)
+END_INIT_SIM_OBJECT_PARAMS_WNS(Sinic, SinicDevice)
-CREATE_SIM_OBJECT(Device)
+CREATE_SIM_OBJECT_WNS(Sinic, SinicDevice)
{
- Device::Params *params = new Device::Params;
+ Sinic::Sinic::Device::Params *params = new Device::Params;
params->name = getInstanceName();
params->platform = platform;
params->system = system;
params->delay_copy = delay_copy;
params->virtual_addr = virtual_addr;
- return new Device(params);
+ return new Sinic::Device(params);
}
-REGISTER_SIM_OBJECT("Sinic", Device)
+REGISTER_SIM_OBJECT_WNS(Sinic, "Sinic", SinicDevice)
-/* namespace Sinic */ }
assert(ntargets == 0);
pkt = NULL;
inService = false;
- allocIter = NULL;
- readyIter = NULL;
+ //allocIter = NULL;
+ //readyIter = NULL;
}
/*
}
mshr->inService = true;
pendingList.erase(mshr->readyIter);
- mshr->readyIter = NULL;
+ //mshr->readyIter = NULL;
inServiceMSHRs += 1;
//pendingList.pop_front();
}
void
MSHRQueue::markPending(MSHR* mshr, Packet::Command cmd)
{
- assert(mshr->readyIter == NULL);
+ //assert(mshr->readyIter == NULL);
mshr->pkt->cmd = cmd;
mshr->pkt->flags &= ~SATISFIED;
mshr->inService = false;
#include "sim/host.hh"
#include "sim/root.hh"
#include <list>
+#include <cassert>
struct Packet;
typedef Packet* PacketPtr;
#include "sim/host.hh"
#include "sim/root.hh"
+#include <cassert>
+
class Request;
typedef Request* RequestPtr;
/* see param.hh */ \
DEFINE_SIM_OBJECT_CLASS_NAME(CLASS_NAME, OBJ_CLASS)
+/* Macros that use the namespace for sinic... yuk. */
+#define BEGIN_DECLARE_SIM_OBJECT_PARAMS_WNS(NAME_SPACE, OBJ_CLASS) \
+class NAME_SPACE##OBJ_CLASS##Builder : public SimObjectBuilder \
+{ \
+ public:
+
+#define END_DECLARE_SIM_OBJECT_PARAMS_WNS(NAME_SPACE, OBJ_CLASS) \
+ \
+ NAME_SPACE##OBJ_CLASS##Builder(const std::string &iniSection); \
+ virtual ~NAME_SPACE##OBJ_CLASS##Builder() {} \
+ \
+ NAME_SPACE::OBJ_CLASS *create(); \
+};
+
+#define BEGIN_INIT_SIM_OBJECT_PARAMS_WNS(NAME_SPACE, OBJ_CLASS) \
+ NAME_SPACE::OBJ_CLASS##Builder::OBJ_CLASS##Builder(const std::string &iSec) \
+ : SimObjectBuilder(iSec),
+
+
+#define END_INIT_SIM_OBJECT_PARAMS_WNS(NAME_SPACE, OBJ_CLASS) \
+{ \
+}
+
+#define CREATE_SIM_OBJECT_WNS(NAME_SPACE, OBJ_CLASS) \
+NAME_SPACE::OBJ_CLASS *NAME_SPACE##OBJ_CLASS##Builder::create()
+
+#define REGISTER_SIM_OBJECT_WNS(NAME_SPACE, CLASS_NAME, OBJ_CLASS) \
+SimObjectBuilder * \
+new##NAME_SPACEi##OBJ_CLASS##Builder(const std::string &iniSection) \
+{ \
+ return new NAME_SPACE##OBJ_CLASS##Builder(iniSection); \
+} \
+ \
+SimObjectClass the##NAME_SPACE##OBJ_CLASS##Class(CLASS_NAME, \
+ new##NAME_SPACE##OBJ_CLASS##Builder); \
+ \
+/* see param.hh */ \
+DEFINE_SIM_OBJECT_CLASS_NAME(CLASS_NAME, NAME_SPACE##OBJ_CLASS)
+
+
#endif // __BUILDER_HH__
* up in the specified symbol table.
*/
template <class T>
- T *System::addFuncEvent(SymbolTable *symtab, const char *lbl)
+ T *addFuncEvent(SymbolTable *symtab, const char *lbl)
{
Addr addr = 0; // initialize only to avoid compiler warning
/** Add a function-based event to kernel code. */
template <class T>
- T *System::addKernelFuncEvent(const char *lbl)
+ T *addKernelFuncEvent(const char *lbl)
{
return addFuncEvent<T>(kernelSymtab, lbl);
}