CacheRecorder.cc (11793:ef606668d247) CacheRecorder.cc (12749:223c83ed9979)
1/*
2 * Copyright (c) 1999-2012 Mark D. Hill and David A. Wood
3 * Copyright (c) 2010 Advanced Micro Devices, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

--- 71 unchanged lines hidden (view full) ---

80}
81
82void
83CacheRecorder::enqueueNextFlushRequest()
84{
85 if (m_records_flushed < m_records.size()) {
86 TraceRecord* rec = m_records[m_records_flushed];
87 m_records_flushed++;
1/*
2 * Copyright (c) 1999-2012 Mark D. Hill and David A. Wood
3 * Copyright (c) 2010 Advanced Micro Devices, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

--- 71 unchanged lines hidden (view full) ---

80}
81
82void
83CacheRecorder::enqueueNextFlushRequest()
84{
85 if (m_records_flushed < m_records.size()) {
86 TraceRecord* rec = m_records[m_records_flushed];
87 m_records_flushed++;
88 Request* req = new Request(rec->m_data_address,
89 m_block_size_bytes, 0,
90 Request::funcMasterId);
88 auto req = std::make_shared<Request>(rec->m_data_address,
89 m_block_size_bytes, 0,
90 Request::funcMasterId);
91 MemCmd::Command requestType = MemCmd::FlushReq;
92 Packet *pkt = new Packet(req, requestType);
93
94 Sequencer* m_sequencer_ptr = m_seq_map[rec->m_cntrl_id];
95 assert(m_sequencer_ptr != NULL);
96 m_sequencer_ptr->makeRequest(pkt);
97
98 DPRINTF(RubyCacheTrace, "Flushing %s\n", *rec);

--- 8 unchanged lines hidden (view full) ---

107 if (m_bytes_read < m_uncompressed_trace_size) {
108 TraceRecord* traceRecord = (TraceRecord*) (m_uncompressed_trace +
109 m_bytes_read);
110
111 DPRINTF(RubyCacheTrace, "Issuing %s\n", *traceRecord);
112
113 for (int rec_bytes_read = 0; rec_bytes_read < m_block_size_bytes;
114 rec_bytes_read += RubySystem::getBlockSizeBytes()) {
91 MemCmd::Command requestType = MemCmd::FlushReq;
92 Packet *pkt = new Packet(req, requestType);
93
94 Sequencer* m_sequencer_ptr = m_seq_map[rec->m_cntrl_id];
95 assert(m_sequencer_ptr != NULL);
96 m_sequencer_ptr->makeRequest(pkt);
97
98 DPRINTF(RubyCacheTrace, "Flushing %s\n", *rec);

--- 8 unchanged lines hidden (view full) ---

107 if (m_bytes_read < m_uncompressed_trace_size) {
108 TraceRecord* traceRecord = (TraceRecord*) (m_uncompressed_trace +
109 m_bytes_read);
110
111 DPRINTF(RubyCacheTrace, "Issuing %s\n", *traceRecord);
112
113 for (int rec_bytes_read = 0; rec_bytes_read < m_block_size_bytes;
114 rec_bytes_read += RubySystem::getBlockSizeBytes()) {
115 Request* req = nullptr;
115 RequestPtr req;
116 MemCmd::Command requestType;
117
118 if (traceRecord->m_type == RubyRequestType_LD) {
119 requestType = MemCmd::ReadReq;
116 MemCmd::Command requestType;
117
118 if (traceRecord->m_type == RubyRequestType_LD) {
119 requestType = MemCmd::ReadReq;
120 req = new Request(traceRecord->m_data_address + rec_bytes_read,
120 req = std::make_shared<Request>(
121 traceRecord->m_data_address + rec_bytes_read,
121 RubySystem::getBlockSizeBytes(), 0, Request::funcMasterId);
122 } else if (traceRecord->m_type == RubyRequestType_IFETCH) {
123 requestType = MemCmd::ReadReq;
122 RubySystem::getBlockSizeBytes(), 0, Request::funcMasterId);
123 } else if (traceRecord->m_type == RubyRequestType_IFETCH) {
124 requestType = MemCmd::ReadReq;
124 req = new Request(traceRecord->m_data_address + rec_bytes_read,
125 req = std::make_shared<Request>(
126 traceRecord->m_data_address + rec_bytes_read,
125 RubySystem::getBlockSizeBytes(),
126 Request::INST_FETCH, Request::funcMasterId);
127 } else {
128 requestType = MemCmd::WriteReq;
127 RubySystem::getBlockSizeBytes(),
128 Request::INST_FETCH, Request::funcMasterId);
129 } else {
130 requestType = MemCmd::WriteReq;
129 req = new Request(traceRecord->m_data_address + rec_bytes_read,
131 req = std::make_shared<Request>(
132 traceRecord->m_data_address + rec_bytes_read,
130 RubySystem::getBlockSizeBytes(), 0, Request::funcMasterId);
131 }
132
133 Packet *pkt = new Packet(req, requestType);
134 pkt->dataStatic(traceRecord->m_data + rec_bytes_read);
135
136 Sequencer* m_sequencer_ptr = m_seq_map[traceRecord->m_cntrl_id];
137 assert(m_sequencer_ptr != NULL);

--- 62 unchanged lines hidden ---
133 RubySystem::getBlockSizeBytes(), 0, Request::funcMasterId);
134 }
135
136 Packet *pkt = new Packet(req, requestType);
137 pkt->dataStatic(traceRecord->m_data + rec_bytes_read);
138
139 Sequencer* m_sequencer_ptr = m_seq_map[traceRecord->m_cntrl_id];
140 assert(m_sequencer_ptr != NULL);

--- 62 unchanged lines hidden ---