mm_disk.hh revision 8229
16757SAli.Saidi@ARM.com/*
26757SAli.Saidi@ARM.com * Copyright (c) 2006 The Regents of The University of Michigan
36757SAli.Saidi@ARM.com * All rights reserved.
46757SAli.Saidi@ARM.com *
56757SAli.Saidi@ARM.com * Redistribution and use in source and binary forms, with or without
66757SAli.Saidi@ARM.com * modification, are permitted provided that the following conditions are
76757SAli.Saidi@ARM.com * met: redistributions of source code must retain the above copyright
86757SAli.Saidi@ARM.com * notice, this list of conditions and the following disclaimer;
96757SAli.Saidi@ARM.com * redistributions in binary form must reproduce the above copyright
106757SAli.Saidi@ARM.com * notice, this list of conditions and the following disclaimer in the
116757SAli.Saidi@ARM.com * documentation and/or other materials provided with the distribution;
126757SAli.Saidi@ARM.com * neither the name of the copyright holders nor the names of its
136757SAli.Saidi@ARM.com * contributors may be used to endorse or promote products derived from
146757SAli.Saidi@ARM.com * this software without specific prior written permission.
156757SAli.Saidi@ARM.com *
166757SAli.Saidi@ARM.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
176757SAli.Saidi@ARM.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
186757SAli.Saidi@ARM.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
196757SAli.Saidi@ARM.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
206757SAli.Saidi@ARM.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
216757SAli.Saidi@ARM.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
226757SAli.Saidi@ARM.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
236757SAli.Saidi@ARM.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
246757SAli.Saidi@ARM.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
256757SAli.Saidi@ARM.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
266757SAli.Saidi@ARM.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
276757SAli.Saidi@ARM.com *
286757SAli.Saidi@ARM.com * Authors: Ali Saidi
296757SAli.Saidi@ARM.com */
306757SAli.Saidi@ARM.com
316757SAli.Saidi@ARM.com/** @file
326757SAli.Saidi@ARM.com * This device acts as a disk similar to the memory mapped disk device
336757SAli.Saidi@ARM.com * in legion. Any access is translated to an offset in the disk image.
346757SAli.Saidi@ARM.com */
356757SAli.Saidi@ARM.com
366757SAli.Saidi@ARM.com#ifndef __DEV_SPARC_MM_DISK_HH__
376757SAli.Saidi@ARM.com#define __DEV_SPARC_MM_DISK_HH__
38
39#include "base/range.hh"
40#include "dev/disk_image.hh"
41#include "dev/io_device.hh"
42#include "params/MmDisk.hh"
43
44class MmDisk : public BasicPioDevice
45{
46  private:
47    DiskImage *image;
48    off_t curSector;
49    bool dirty;
50    uint8_t diskData[SectorSize];
51
52  public:
53    typedef MmDiskParams Params;
54    MmDisk(const Params *p);
55
56    const Params *
57    params() const
58    {
59        return dynamic_cast<const Params *>(_params);
60    }
61
62    virtual Tick read(PacketPtr pkt);
63    virtual Tick write(PacketPtr pkt);
64
65    virtual void serialize(std::ostream &os);
66};
67
68#endif //__DEV_SPARC_MM_DISK_HH__
69
70