timing.cc (2662:f24ae2d09e27) timing.cc (2663:c82193ae8467)
1/*
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

167 _status = Idle;
168}
169
170
171template <class T>
172Fault
173TimingSimpleCPU::read(Addr addr, T &data, unsigned flags)
174{
1/*
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

167 _status = Idle;
168}
169
170
171template <class T>
172Fault
173TimingSimpleCPU::read(Addr addr, T &data, unsigned flags)
174{
175 Request *data_read_req = new Request(true);
175 // need to fill in CPU & thread IDs here
176 Request *data_read_req = new Request();
176
177
177 data_read_req->setVaddr(addr);
178 data_read_req->setSize(sizeof(T));
179 data_read_req->setFlags(flags);
180 data_read_req->setTime(curTick);
178 data_read_req->setVirt(0, addr, sizeof(T), flags, cpuXC->readPC());
181
182 if (traceData) {
183 traceData->setAddr(data_read_req->getVaddr());
184 }
185
186 // translate to physical address
187 Fault fault = cpuXC->translateDataReadReq(data_read_req);
188

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

250 return read(addr, (uint32_t&)data, flags);
251}
252
253
254template <class T>
255Fault
256TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res)
257{
179
180 if (traceData) {
181 traceData->setAddr(data_read_req->getVaddr());
182 }
183
184 // translate to physical address
185 Fault fault = cpuXC->translateDataReadReq(data_read_req);
186

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

248 return read(addr, (uint32_t&)data, flags);
249}
250
251
252template <class T>
253Fault
254TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res)
255{
258 Request *data_write_req = new Request(true);
259 data_write_req->setVaddr(addr);
260 data_write_req->setTime(curTick);
261 data_write_req->setSize(sizeof(T));
262 data_write_req->setFlags(flags);
256 // need to fill in CPU & thread IDs here
257 Request *data_write_req = new Request();
258 data_write_req->setVirt(0, addr, sizeof(T), flags, cpuXC->readPC());
263
264 // translate to physical address
265 Fault fault = cpuXC->translateDataWriteReq(data_write_req);
266 // Now do the access.
267 if (fault == NoFault) {
268 Packet *data_write_pkt =
269 new Packet(data_write_req, Packet::WriteReq, Packet::Broadcast);
270 data_write_pkt->allocate();

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

335}
336
337
338void
339TimingSimpleCPU::fetch()
340{
341 checkForInterrupts();
342
259
260 // translate to physical address
261 Fault fault = cpuXC->translateDataWriteReq(data_write_req);
262 // Now do the access.
263 if (fault == NoFault) {
264 Packet *data_write_pkt =
265 new Packet(data_write_req, Packet::WriteReq, Packet::Broadcast);
266 data_write_pkt->allocate();

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

331}
332
333
334void
335TimingSimpleCPU::fetch()
336{
337 checkForInterrupts();
338
343 Request *ifetch_req = new Request(true);
344 ifetch_req->setSize(sizeof(MachInst));
339 // need to fill in CPU & thread IDs here
340 Request *ifetch_req = new Request();
345 Fault fault = setupFetchRequest(ifetch_req);
346
347 ifetch_pkt = new Packet(ifetch_req, Packet::ReadReq, Packet::Broadcast);
348 ifetch_pkt->dataStatic(&inst);
349
350 if (fault == NoFault) {
351 if (!icachePort.sendTiming(ifetch_pkt)) {
352 // Need to wait for retry

--- 220 unchanged lines hidden ---
341 Fault fault = setupFetchRequest(ifetch_req);
342
343 ifetch_pkt = new Packet(ifetch_req, Packet::ReadReq, Packet::Broadcast);
344 ifetch_pkt->dataStatic(&inst);
345
346 if (fault == NoFault) {
347 if (!icachePort.sendTiming(ifetch_pkt)) {
348 // Need to wait for retry

--- 220 unchanged lines hidden ---