isa_fake.hh revision 3349
12736Sktlim@umich.edu/* 22736Sktlim@umich.edu * Copyright (c) 2004-2005 The Regents of The University of Michigan 32736Sktlim@umich.edu * All rights reserved. 42736Sktlim@umich.edu * 52736Sktlim@umich.edu * Redistribution and use in source and binary forms, with or without 62736Sktlim@umich.edu * modification, are permitted provided that the following conditions are 72736Sktlim@umich.edu * met: redistributions of source code must retain the above copyright 82736Sktlim@umich.edu * notice, this list of conditions and the following disclaimer; 92736Sktlim@umich.edu * redistributions in binary form must reproduce the above copyright 102736Sktlim@umich.edu * notice, this list of conditions and the following disclaimer in the 112736Sktlim@umich.edu * documentation and/or other materials provided with the distribution; 122736Sktlim@umich.edu * neither the name of the copyright holders nor the names of its 132736Sktlim@umich.edu * contributors may be used to endorse or promote products derived from 142736Sktlim@umich.edu * this software without specific prior written permission. 152736Sktlim@umich.edu * 162736Sktlim@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 172736Sktlim@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 182736Sktlim@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 192736Sktlim@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 202736Sktlim@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 212736Sktlim@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 222736Sktlim@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 232736Sktlim@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 242736Sktlim@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 252736Sktlim@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 262736Sktlim@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272736Sktlim@umich.edu * 282736Sktlim@umich.edu * Authors: Miguel Serrano 292736Sktlim@umich.edu * Ali Saidi 302736Sktlim@umich.edu */ 312736Sktlim@umich.edu 322736Sktlim@umich.edu/** @file 332736Sktlim@umich.edu * Declaration of a fake device. 342736Sktlim@umich.edu */ 354762Snate@binkert.org 364762Snate@binkert.org#ifndef __ISA_FAKE_HH__ 372736Sktlim@umich.edu#define __ISA_FAKE_HH__ 382736Sktlim@umich.edu 392736Sktlim@umich.edu#include "base/range.hh" 402736Sktlim@umich.edu#include "dev/io_device.hh" 412736Sktlim@umich.edu#include "dev/tsunami.hh" 422736Sktlim@umich.edu#include "mem/packet.hh" 432736Sktlim@umich.edu 442736Sktlim@umich.edu/** 452736Sktlim@umich.edu * IsaFake is a device that returns -1 on all reads and 462736Sktlim@umich.edu * accepts all writes. It is meant to be placed at an address range 472736Sktlim@umich.edu * so that an mcheck doesn't occur when an os probes a piece of hw 482736Sktlim@umich.edu * that doesn't exist (e.g. UARTs1-3). 492736Sktlim@umich.edu */ 502736Sktlim@umich.educlass IsaFake : public BasicPioDevice 512736Sktlim@umich.edu{ 522736Sktlim@umich.edu public: 532736Sktlim@umich.edu struct Params : public BasicPioDevice::Params 542736Sktlim@umich.edu { 552736Sktlim@umich.edu Addr pio_size; 562736Sktlim@umich.edu }; 572736Sktlim@umich.edu protected: 582736Sktlim@umich.edu const Params *params() const { return (const Params*)_params; } 592736Sktlim@umich.edu 602736Sktlim@umich.edu public: 612736Sktlim@umich.edu /** 622736Sktlim@umich.edu * The constructor for Tsunmami Fake just registers itself with the MMU. 632736Sktlim@umich.edu * @param p params structure 642736Sktlim@umich.edu */ 652736Sktlim@umich.edu IsaFake(Params *p); 662736Sktlim@umich.edu 672736Sktlim@umich.edu /** 682736Sktlim@umich.edu * This read always returns -1. 692736Sktlim@umich.edu * @param pkt The memory request. 702736Sktlim@umich.edu * @param data Where to put the data. 712736Sktlim@umich.edu */ 722736Sktlim@umich.edu virtual Tick read(PacketPtr pkt); 732736Sktlim@umich.edu 742736Sktlim@umich.edu /** 752736Sktlim@umich.edu * All writes are simply ignored. 762736Sktlim@umich.edu * @param pkt The memory request. 772736Sktlim@umich.edu * @param data the data to not write. 782736Sktlim@umich.edu */ 792736Sktlim@umich.edu virtual Tick write(PacketPtr pkt); 802736Sktlim@umich.edu}; 812736Sktlim@umich.edu 822736Sktlim@umich.edu#endif // __TSUNAMI_FAKE_HH__ 832736Sktlim@umich.edu