Merge
[gem5.git] / dev / baddev.cc
1 /* $Id$ */
2
3 /* @file
4 * BadDevice implemenation
5 */
6
7 #include <deque>
8 #include <string>
9 #include <vector>
10
11 #include "base/trace.hh"
12 #include "cpu/exec_context.hh"
13 #include "dev/scsi_ctrl.hh"
14 #include "dev/baddev.hh"
15 #include "dev/tsunamireg.h"
16 #include "dev/tsunami.hh"
17 #include "mem/functional_mem/memory_control.hh"
18 #include "sim/builder.hh"
19 #include "sim/system.hh"
20
21 using namespace std;
22
23 BadDevice::BadDevice(const string &name, Addr a, MemoryController *mmu,
24 const string &devicename)
25 : FunctionalMemory(name), addr(a), devname(devicename)
26 {
27 mmu->add_child(this, Range<Addr>(addr, addr + size));
28 }
29
30 Fault
31 BadDevice::read(MemReqPtr &req, uint8_t *data)
32 {
33
34 panic("Device %s not imlpmented\n", devname);
35 return No_Fault;
36 }
37
38 Fault
39 BadDevice::write(MemReqPtr &req, const uint8_t *data)
40 {
41 panic("Device %s not imlpmented\n", devname);
42 return No_Fault;
43 }
44
45
46 BEGIN_DECLARE_SIM_OBJECT_PARAMS(BadDevice)
47
48 SimObjectParam<MemoryController *> mmu;
49 Param<Addr> addr;
50 Param<string> devicename;
51
52 END_DECLARE_SIM_OBJECT_PARAMS(BadDevice)
53
54 BEGIN_INIT_SIM_OBJECT_PARAMS(BadDevice)
55
56 INIT_PARAM(mmu, "Memory Controller"),
57 INIT_PARAM(addr, "Device Address"),
58 INIT_PARAM(devicename, "Name of device to error on")
59
60 END_INIT_SIM_OBJECT_PARAMS(BadDevice)
61
62 CREATE_SIM_OBJECT(BadDevice)
63 {
64 return new BadDevice(getInstanceName(), addr, mmu, devicename);
65 }
66
67 REGISTER_SIM_OBJECT("BadDevice", BadDevice)