RubyRequest.hh revision 8092
18092Snilay@cs.wisc.edu/* 28092Snilay@cs.wisc.edu * Copyright (c) 2009 Mark D. Hill and David A. Wood 38092Snilay@cs.wisc.edu * All rights reserved. 48092Snilay@cs.wisc.edu * 58092Snilay@cs.wisc.edu * Redistribution and use in source and binary forms, with or without 68092Snilay@cs.wisc.edu * modification, are permitted provided that the following conditions are 78092Snilay@cs.wisc.edu * met: redistributions of source code must retain the above copyright 88092Snilay@cs.wisc.edu * notice, this list of conditions and the following disclaimer; 98092Snilay@cs.wisc.edu * redistributions in binary form must reproduce the above copyright 108092Snilay@cs.wisc.edu * notice, this list of conditions and the following disclaimer in the 118092Snilay@cs.wisc.edu * documentation and/or other materials provided with the distribution; 128092Snilay@cs.wisc.edu * neither the name of the copyright holders nor the names of its 138092Snilay@cs.wisc.edu * contributors may be used to endorse or promote products derived from 148092Snilay@cs.wisc.edu * this software without specific prior written permission. 158092Snilay@cs.wisc.edu * 168092Snilay@cs.wisc.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 178092Snilay@cs.wisc.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 188092Snilay@cs.wisc.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 198092Snilay@cs.wisc.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 208092Snilay@cs.wisc.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218092Snilay@cs.wisc.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 228092Snilay@cs.wisc.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238092Snilay@cs.wisc.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248092Snilay@cs.wisc.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258092Snilay@cs.wisc.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 268092Snilay@cs.wisc.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278092Snilay@cs.wisc.edu */ 288092Snilay@cs.wisc.edu 298092Snilay@cs.wisc.edu#ifndef __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__ 308092Snilay@cs.wisc.edu#define __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__ 318092Snilay@cs.wisc.edu 328092Snilay@cs.wisc.edu#include <ostream> 338092Snilay@cs.wisc.edu 348092Snilay@cs.wisc.edu#include "mem/packet.hh" 358092Snilay@cs.wisc.edu#include "mem/protocol/AccessModeType.hh" 368092Snilay@cs.wisc.edu#include "mem/protocol/CacheRequestType.hh" 378092Snilay@cs.wisc.edu#include "mem/protocol/Message.hh" 388092Snilay@cs.wisc.edu#include "mem/protocol/PrefetchBit.hh" 398092Snilay@cs.wisc.edu#include "mem/ruby/common/Address.hh" 408092Snilay@cs.wisc.edu 418092Snilay@cs.wisc.edutypedef void* RubyPortHandle; 428092Snilay@cs.wisc.eduenum RubyRequestType { 438092Snilay@cs.wisc.edu RubyRequestType_NULL, 448092Snilay@cs.wisc.edu RubyRequestType_IFETCH, 458092Snilay@cs.wisc.edu RubyRequestType_LD, 468092Snilay@cs.wisc.edu RubyRequestType_ST, 478092Snilay@cs.wisc.edu RubyRequestType_Load_Linked, 488092Snilay@cs.wisc.edu RubyRequestType_Store_Conditional, 498092Snilay@cs.wisc.edu RubyRequestType_RMW_Read, 508092Snilay@cs.wisc.edu RubyRequestType_RMW_Write, 518092Snilay@cs.wisc.edu RubyRequestType_Locked_RMW_Read, 528092Snilay@cs.wisc.edu RubyRequestType_Locked_RMW_Write, 538092Snilay@cs.wisc.edu RubyRequestType_NUM 548092Snilay@cs.wisc.edu}; 558092Snilay@cs.wisc.edu 568092Snilay@cs.wisc.eduenum RubyAccessMode { 578092Snilay@cs.wisc.edu RubyAccessMode_User, 588092Snilay@cs.wisc.edu RubyAccessMode_Supervisor, 598092Snilay@cs.wisc.edu RubyAccessMode_Device 608092Snilay@cs.wisc.edu}; 618092Snilay@cs.wisc.edu 628092Snilay@cs.wisc.educlass RubyRequest 638092Snilay@cs.wisc.edu{ 648092Snilay@cs.wisc.edu public: 658092Snilay@cs.wisc.edu uint64_t paddr; 668092Snilay@cs.wisc.edu uint8_t* data; 678092Snilay@cs.wisc.edu int len; 688092Snilay@cs.wisc.edu uint64_t pc; 698092Snilay@cs.wisc.edu RubyRequestType type; 708092Snilay@cs.wisc.edu RubyAccessMode access_mode; 718092Snilay@cs.wisc.edu PacketPtr pkt; 728092Snilay@cs.wisc.edu unsigned proc_id; 738092Snilay@cs.wisc.edu 748092Snilay@cs.wisc.edu RubyRequest() {} 758092Snilay@cs.wisc.edu RubyRequest(uint64_t _paddr, 768092Snilay@cs.wisc.edu uint8_t* _data, 778092Snilay@cs.wisc.edu int _len, 788092Snilay@cs.wisc.edu uint64_t _pc, 798092Snilay@cs.wisc.edu RubyRequestType _type, 808092Snilay@cs.wisc.edu RubyAccessMode _access_mode, 818092Snilay@cs.wisc.edu PacketPtr _pkt, 828092Snilay@cs.wisc.edu unsigned _proc_id = 100) 838092Snilay@cs.wisc.edu : paddr(_paddr), 848092Snilay@cs.wisc.edu data(_data), 858092Snilay@cs.wisc.edu len(_len), 868092Snilay@cs.wisc.edu pc(_pc), 878092Snilay@cs.wisc.edu type(_type), 888092Snilay@cs.wisc.edu access_mode(_access_mode), 898092Snilay@cs.wisc.edu pkt(_pkt), 908092Snilay@cs.wisc.edu proc_id(_proc_id) 918092Snilay@cs.wisc.edu {} 928092Snilay@cs.wisc.edu 938092Snilay@cs.wisc.edu void print(std::ostream& out) const; 948092Snilay@cs.wisc.edu}; 958092Snilay@cs.wisc.edu 968092Snilay@cs.wisc.edustd::string RubyRequestType_to_string(const RubyRequestType& obj); 978092Snilay@cs.wisc.eduRubyRequestType string_to_RubyRequestType(std::string); 988092Snilay@cs.wisc.edustd::ostream& operator<<(std::ostream& out, const RubyRequestType& obj); 998092Snilay@cs.wisc.edustd::ostream& operator<<(std::ostream& out, const RubyRequest& obj); 1008092Snilay@cs.wisc.edu 1018092Snilay@cs.wisc.edu#endif 102