AbstractCacheEntry.hh revision 10522
17639Sgblack@eecs.umich.edu/* 27639Sgblack@eecs.umich.edu * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 313978Sciro.santilli@arm.com * All rights reserved. 47639Sgblack@eecs.umich.edu * 57639Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 67639Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 77639Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 87639Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 97639Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 107639Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 117639Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 127639Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 137639Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 147639Sgblack@eecs.umich.edu * this software without specific prior written permission. 157639Sgblack@eecs.umich.edu * 167639Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 177639Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 187639Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 197639Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 207639Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 217639Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 227639Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 237639Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 247639Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 257639Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 267639Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 277639Sgblack@eecs.umich.edu */ 287639Sgblack@eecs.umich.edu 297639Sgblack@eecs.umich.edu/* 307639Sgblack@eecs.umich.edu * Common base class for a machine node. 317639Sgblack@eecs.umich.edu */ 327639Sgblack@eecs.umich.edu 337639Sgblack@eecs.umich.edu#ifndef __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCACHEENTRY_HH__ 347639Sgblack@eecs.umich.edu#define __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCACHEENTRY_HH__ 357639Sgblack@eecs.umich.edu 367639Sgblack@eecs.umich.edu#include <iostream> 377639Sgblack@eecs.umich.edu 387639Sgblack@eecs.umich.edu#include "base/misc.hh" 397639Sgblack@eecs.umich.edu#include "mem/protocol/AccessPermission.hh" 407639Sgblack@eecs.umich.edu#include "mem/ruby/common/Address.hh" 417639Sgblack@eecs.umich.edu#include "mem/ruby/slicc_interface/AbstractEntry.hh" 427639Sgblack@eecs.umich.edu 437639Sgblack@eecs.umich.educlass DataBlock; 447639Sgblack@eecs.umich.edu 457639Sgblack@eecs.umich.educlass AbstractCacheEntry : public AbstractEntry 467639Sgblack@eecs.umich.edu{ 477639Sgblack@eecs.umich.edu public: 487639Sgblack@eecs.umich.edu AbstractCacheEntry(); 497639Sgblack@eecs.umich.edu virtual ~AbstractCacheEntry() = 0; 507639Sgblack@eecs.umich.edu 517639Sgblack@eecs.umich.edu // Get/Set permission of the entry 527639Sgblack@eecs.umich.edu void changePermission(AccessPermission new_perm); 537639Sgblack@eecs.umich.edu 547639Sgblack@eecs.umich.edu // The methods below are those called by ruby runtime, add when it 557639Sgblack@eecs.umich.edu // is absolutely necessary and should all be virtual function. 567639Sgblack@eecs.umich.edu virtual DataBlock& getDataBlk() 577639Sgblack@eecs.umich.edu { panic("getDataBlk() not implemented!"); } 587639Sgblack@eecs.umich.edu 597639Sgblack@eecs.umich.edu 607639Sgblack@eecs.umich.edu Address m_Address; // Address of this block, required by CacheMemory 6113979Sciro.santilli@arm.com int m_locked; // Holds info whether the address is locked, 6213979Sciro.santilli@arm.com // required for implementing LL/SC 6313979Sciro.santilli@arm.com}; 6413979Sciro.santilli@arm.com 6513979Sciro.santilli@arm.cominline std::ostream& 6613979Sciro.santilli@arm.comoperator<<(std::ostream& out, const AbstractCacheEntry& obj) 6713979Sciro.santilli@arm.com{ 6813979Sciro.santilli@arm.com obj.print(out); 6913979Sciro.santilli@arm.com out << std::flush; 7013979Sciro.santilli@arm.com return out; 7113979Sciro.santilli@arm.com} 7213979Sciro.santilli@arm.com 7313979Sciro.santilli@arm.com#endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCACHEENTRY_HH__ 7413979Sciro.santilli@arm.com