baddev.cc revision 2665
1892SN/A/*
21762SN/A * Copyright (c) 2004-2005 The Regents of The University of Michigan
3892SN/A * All rights reserved.
4892SN/A *
5892SN/A * Redistribution and use in source and binary forms, with or without
6892SN/A * modification, are permitted provided that the following conditions are
7892SN/A * met: redistributions of source code must retain the above copyright
8892SN/A * notice, this list of conditions and the following disclaimer;
9892SN/A * redistributions in binary form must reproduce the above copyright
10892SN/A * notice, this list of conditions and the following disclaimer in the
11892SN/A * documentation and/or other materials provided with the distribution;
12892SN/A * neither the name of the copyright holders nor the names of its
13892SN/A * contributors may be used to endorse or promote products derived from
14892SN/A * this software without specific prior written permission.
15892SN/A *
16892SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17892SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18892SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19892SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20892SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21892SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22892SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23892SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24892SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25892SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26892SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
272665Ssaidi@eecs.umich.edu *
282665Ssaidi@eecs.umich.edu * Authors: Ali Saidi
29892SN/A */
30802SN/A
311722SN/A/** @file
32802SN/A * BadDevice implemenation
33802SN/A */
34802SN/A
35802SN/A#include <deque>
36802SN/A#include <string>
37802SN/A#include <vector>
38802SN/A
39802SN/A#include "base/trace.hh"
40802SN/A#include "dev/baddev.hh"
411310SN/A#include "dev/platform.hh"
422542SN/A#include "mem/port.hh"
43802SN/A#include "sim/builder.hh"
44802SN/A#include "sim/system.hh"
45802SN/A
46802SN/Ausing namespace std;
472107SN/Ausing namespace TheISA;
48802SN/A
492539SN/ABadDevice::BadDevice(Params *p)
502542SN/A    : BasicPioDevice(p), devname(p->device_name)
51802SN/A{
522539SN/A    pioSize = 0xf;
53802SN/A}
54802SN/A
55909SN/ATick
562630SN/ABadDevice::read(Packet *pkt)
57909SN/A{
582539SN/A    panic("Device %s not imlpmented\n", devname);
592539SN/A}
602539SN/A
612539SN/ATick
622630SN/ABadDevice::write(Packet *pkt)
632539SN/A{
642539SN/A    panic("Device %s not imlpmented\n", devname);
65909SN/A}
66802SN/A
67802SN/ABEGIN_DECLARE_SIM_OBJECT_PARAMS(BadDevice)
68802SN/A
692539SN/A    Param<string> devicename;
702539SN/A    Param<Addr> pio_addr;
712542SN/A    SimObjectParam<System *> system;
721310SN/A    SimObjectParam<Platform *> platform;
731310SN/A    Param<Tick> pio_latency;
74802SN/A
75802SN/AEND_DECLARE_SIM_OBJECT_PARAMS(BadDevice)
76802SN/A
77802SN/ABEGIN_INIT_SIM_OBJECT_PARAMS(BadDevice)
78802SN/A
792539SN/A    INIT_PARAM(devicename, "Name of device to error on"),
802539SN/A    INIT_PARAM(pio_addr, "Device Address"),
812539SN/A    INIT_PARAM(system, "system object"),
822539SN/A    INIT_PARAM(platform, "platform"),
832539SN/A    INIT_PARAM_DFLT(pio_latency, "Programmed IO latency", 1000)
84802SN/A
85802SN/AEND_INIT_SIM_OBJECT_PARAMS(BadDevice)
86802SN/A
87802SN/ACREATE_SIM_OBJECT(BadDevice)
88802SN/A{
892539SN/A    BadDevice::Params *p = new BadDevice::Params;
902539SN/A    p->name =getInstanceName();
912539SN/A    p->platform = platform;
922539SN/A    p->pio_addr = pio_addr;
932539SN/A    p->pio_delay = pio_latency;
942539SN/A    p->system = system;
952542SN/A    p->device_name = devicename;
962539SN/A    return new BadDevice(p);
97802SN/A}
98802SN/A
99802SN/AREGISTER_SIM_OBJECT("BadDevice", BadDevice)
100