RubyRequest.hh revision 8165
111986Sandreas.sandberg@arm.com/* 211986Sandreas.sandberg@arm.com * Copyright (c) 2009 Mark D. Hill and David A. Wood 311986Sandreas.sandberg@arm.com * All rights reserved. 411986Sandreas.sandberg@arm.com * 511986Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 611986Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are 711986Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright 811986Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer; 911986Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright 1011986Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 1111986Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution; 1211986Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its 1311986Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from 1411986Sandreas.sandberg@arm.com * this software without specific prior written permission. 1511986Sandreas.sandberg@arm.com * 1611986Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1711986Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1811986Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1911986Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2011986Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2111986Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2211986Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2311986Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2411986Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2511986Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2611986Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2711986Sandreas.sandberg@arm.com */ 2812037Sandreas.sandberg@arm.com 2911986Sandreas.sandberg@arm.com#ifndef __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__ 3011986Sandreas.sandberg@arm.com#define __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__ 3111986Sandreas.sandberg@arm.com 3211986Sandreas.sandberg@arm.com#include <ostream> 3311986Sandreas.sandberg@arm.com 3411986Sandreas.sandberg@arm.com#include "mem/packet.hh" 3511986Sandreas.sandberg@arm.com#include "mem/protocol/RubyAccessMode.hh" 3611986Sandreas.sandberg@arm.com#include "mem/protocol/RubyRequestType.hh" 3711986Sandreas.sandberg@arm.com#include "mem/protocol/Message.hh" 3811986Sandreas.sandberg@arm.com#include "mem/protocol/PrefetchBit.hh" 3911986Sandreas.sandberg@arm.com#include "mem/ruby/common/Address.hh" 4011986Sandreas.sandberg@arm.com 4111986Sandreas.sandberg@arm.comtypedef void* RubyPortHandle; 4211986Sandreas.sandberg@arm.com 4311986Sandreas.sandberg@arm.comclass RubyRequest 4411986Sandreas.sandberg@arm.com{ 4512037Sandreas.sandberg@arm.com public: 4611986Sandreas.sandberg@arm.com uint64_t paddr; 4711986Sandreas.sandberg@arm.com uint8_t* data; 4811986Sandreas.sandberg@arm.com int len; 4911986Sandreas.sandberg@arm.com uint64_t pc; 5011986Sandreas.sandberg@arm.com RubyRequestType type; 5111986Sandreas.sandberg@arm.com RubyAccessMode access_mode; 5211986Sandreas.sandberg@arm.com PacketPtr pkt; 5311986Sandreas.sandberg@arm.com unsigned proc_id; 5411986Sandreas.sandberg@arm.com 5511986Sandreas.sandberg@arm.com RubyRequest() {} 5611986Sandreas.sandberg@arm.com RubyRequest(uint64_t _paddr, 5711986Sandreas.sandberg@arm.com uint8_t* _data, 5811986Sandreas.sandberg@arm.com int _len, 5911986Sandreas.sandberg@arm.com uint64_t _pc, 6011986Sandreas.sandberg@arm.com RubyRequestType _type, 6111986Sandreas.sandberg@arm.com RubyAccessMode _access_mode, 6211986Sandreas.sandberg@arm.com PacketPtr _pkt, 6311986Sandreas.sandberg@arm.com unsigned _proc_id = 100) 6411986Sandreas.sandberg@arm.com : paddr(_paddr), 6511986Sandreas.sandberg@arm.com data(_data), 6611986Sandreas.sandberg@arm.com len(_len), 6711986Sandreas.sandberg@arm.com pc(_pc), 6811986Sandreas.sandberg@arm.com type(_type), 6911986Sandreas.sandberg@arm.com access_mode(_access_mode), 7011986Sandreas.sandberg@arm.com pkt(_pkt), 7111986Sandreas.sandberg@arm.com proc_id(_proc_id) 7211986Sandreas.sandberg@arm.com {} 7311986Sandreas.sandberg@arm.com 7411986Sandreas.sandberg@arm.com void print(std::ostream& out) const; 7511986Sandreas.sandberg@arm.com}; 7612391Sjason@lowepower.com 7712391Sjason@lowepower.comstd::ostream& operator<<(std::ostream& out, const RubyRequest& obj); 7811986Sandreas.sandberg@arm.com 7911986Sandreas.sandberg@arm.com#endif 8011986Sandreas.sandberg@arm.com