41#ifndef __MEM_RUBY_SLICC_INTERFACE_RUBYREQUEST_HH__
42#define __MEM_RUBY_SLICC_INTERFACE_RUBYREQUEST_HH__
50#include "mem/ruby/protocol/Message.hh"
51#include "mem/ruby/protocol/PrefetchBit.hh"
52#include "mem/ruby/protocol/RubyAccessMode.hh"
53#include "mem/ruby/protocol/RubyRequestType.hh"
90 uint64_t _paddr,
int _len,
91 uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode,
92 PacketPtr _pkt, PrefetchBit _pb = PrefetchBit_No,
111 int block_size_bits =
floorLog2(block_size);
124 uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode,
154 uint64_t _paddr,
int _len, uint64_t _pc, RubyRequestType _type,
155 RubyAccessMode _access_mode,
PacketPtr _pkt, PrefetchBit _pb,
156 unsigned _proc_id,
unsigned _core_id,
159 uint64_t _instSeqNum = 0)
179 int block_size_bits =
floorLog2(block_size);
191 uint64_t _paddr,
int _len, uint64_t _pc, RubyRequestType _type,
192 RubyAccessMode _access_mode,
PacketPtr _pkt, PrefetchBit _pb,
193 unsigned _proc_id,
unsigned _core_id,
197 uint64_t _instSeqNum = 0)
217 int block_size_bits =
floorLog2(block_size);
236 {
return std::shared_ptr<Message>(
new RubyRequest(*
this)); }
249 void print(std::ostream& out)
const;
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
RequestPtr req
A pointer to the original request.
Addr m_tlbiTransactionUid
bool m_htmFromTransaction
RubyRequest(Tick curTime, int block_size, RubySystem *rs)
const int & getSize() const
Addr getPhysicalAddress() const
void setWriteMask(uint32_t offset, uint32_t len, std::vector< std::pair< int, AtomicOpFunctor * > > atomicOps)
Addr getLineAddress() const
RubyRequest(Tick curTime, int block_size, RubySystem *rs, uint64_t _paddr, int _len, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, PrefetchBit _pb, unsigned _proc_id, unsigned _core_id, int _wm_size, std::vector< bool > &_wm_mask, DataBlock &_Data, uint64_t _instSeqNum=0)
const RubyRequestType & getType() const
RubyRequest(Tick curTime, int block_size, RubySystem *rs, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, ContextID _proc_id, ContextID _core_id)
RubyRequest for memory management commands.
RubyRequest(Tick curTime, int block_size, RubySystem *rs, uint64_t _paddr, int _len, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, PrefetchBit _pb=PrefetchBit_No, ContextID _proc_id=100, ContextID _core_id=99)
const PrefetchBit & getPrefetch() const
const RubyAccessMode & getAccessMode() const
RubyRequest(Tick curTime, int block_size, RubySystem *rs, uint64_t _paddr, int _len, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, PrefetchBit _pb, unsigned _proc_id, unsigned _core_id, int _wm_size, std::vector< bool > &_wm_mask, DataBlock &_Data, std::vector< std::pair< int, AtomicOpFunctor * > > _atomicOps, uint64_t _instSeqNum=0)
bool functionalWrite(Packet *pkt)
void print(std::ostream &out) const
RequestPtr getRequestPtr() const
bool functionalRead(Packet *pkt)
The two functions below are used for reading / writing the message functionally.
uint64_t m_htmTransactionUid
RubyAccessMode m_AccessMode
Addr getProgramCounter() const
static constexpr std::enable_if_t< std::is_integral_v< T >, int > floorLog2(T x)
bool isSecure(ThreadContext *tc)
Addr makeLineAddress(Addr addr, int cacheLineBits)
std::shared_ptr< Message > MsgPtr
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< Request > RequestPtr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
std::ostream & operator<<(std::ostream &os, const BaseSemihosting::InPlaceArg &ipa)
int ContextID
Globally unique thread context ID.